Skip to content

Latest commit

 

History

History
63 lines (48 loc) · 6.32 KB

ReleaseNotes.md

File metadata and controls

63 lines (48 loc) · 6.32 KB

November-December 2023 (version {0}) aka Sunny Koliada release

Codenamed as Sunny Koliada

Focus On

System performance. System core performance review, redesign of system core related to routing and content streaming
  • Modification of the RequestMapper with a brand new StreamHttpContent class, in Ocelot.Request.Mapper namespace. The request body is no longer copied when it is handled by the API gateway, avoiding Out-of-Memory issues in pods/containers. This significantly reduces the gateway's memory consumption, and allows you to transfer content larger than 2 GB in streaming scenarios.
  • Introduction of a new Message Invoker pool, in Ocelot.Requester namespace. We have replaced the HttpClient class with HttpMessageInvoker, which is the base class for HttpClient. The overall logic for managing the pool has been simplified, resulting in a reduction in the number of CPU cycles.
  • Full HTTP content buffering is deactivated, resulting in a 50% reduction in memory consumption and a performance improvement of around 10%. Content is no longer copied on the API gateway, avoiding Out-of-Memory issues.
  • TODO Include screenshots from Production...
Ocelot extra packages. Total 3 Ocelot packs were updated
  • Ocelot.Cache.CacheManager: Introduced default cache key generator with improved performance (the DefaultCacheKeyGenerator class). Old version of CacheKeyGenerator had significant performance issue when reading full content of HTTP request for caching key calculation of MD5 hash value. This hash value was excluded from the caching key.

  • Ocelot.Provider.Kubernetes: Fixed long lasting breaking change being added in version 15.0.0, see commit https://github.com/ThreeMammals/Ocelot/commit/6e5471a714dddb0a3a40fbb97eac2810cee1c78d. The bug persisted for more than 3 years in versions 15.0.0-22.0.1, being masked multiple times via class renaming! Special Thanks to @ZisisTsatsas who once again brought this issue to our attention, and our team finally realized that we had a breaking change and the provider was broken.

  • Ocelot.Provider.Polly: A minor changes without feature delivery. We are preparing for a major update to the package in the next release.

Middlewares. Total 8 Ocelot middlewares were updated
Documentation for Authentication, Caching, Kubernetes and Routing
Stabilization aka bug fixing
Testing
  • The Ocelot.Benchmarks testing project has been updated with new PayloadBenchmarks and ResponseBenchmarks by @ggnaegi
  • The Ocelot.AcceptanceTests testing project has been refactored by @raman-m using the new AuthenticationSteps class, and more refactoring will be done in future releases

Roadmap

We would like to share our team's plans for the future regarding: development trends, ideas, community expectations, etc.

  • Code Review and Performance Improvements. Without a doubt, we care about code quality every day, following best development practices. And we review, test, refactor, and redesign features with overall performance in mind. In the next few releases (versions 23.x-24.0) we will take care of: generic providers, multiplexing middleware (Aggregation feature), memory management.
  • Server-Sent Events protocol support. There is a lot of community interest in this HTTP-based protocol.
  • Long Polling for Consul provider. Consul is our leading technology for service discovery. We are constantly improving the use cases for the Ocelot.Provider.Consul package and trying to improve the code inside the package.
  • QoS feature refactoring. Polly was released with the new v.8.2+ after .NET 8. So we have to update Ocelot.Provider.Polly package taking into account new Polly behavior of redesigned features.
  • Brainstorming to redesign Rate Limiting, Websockets. More details in future release notes.
  • Planning of support for Swagger and gRPC proto. More details in future release notes.