v1.0.0
We're happy to announce that Sentinel Go 1.0.0 has been released! This is a production-ready GA version with versatile fault-tolerance and flow control capabilities including rate limiting, concurrency limiting (semaphore isolation), throttling, circuit breaking, system adaptive protection and "hot-spot" traffic shaping. We've already provided plugins for commonly-used frameworks including Gin, go-micro, gRPC and dubbo-go. We've also made progress in cloud native evolution including Kubernetes CRD data-source, Kubernetes HPA based on Sentinel metrics and plugins for service meshes.
Features/Enhancements
- Support arbitrary statistic duration for flow control and refactor internal implementation (#200)
- Add
StatIntervalInMs
attribute inflow.Rule
. WhenStatIntervalInMs
>globalInterval
or< bucketLength
, we create a new sliding window for it. - Add stat reuse mechanism for flow rules.
- Make threshold of flow rule "request amount per interval" rather than QPS.
- Add
- Make internal logger structured and use JSON as default format (#247)
- Add "isolation" package and move out concurrency limiting from flow module (#217)
- Add Kubernetes CRD data-source implementation (sentinel-go-datasource-k8s-crd)
- Refine fundamental public APIs (#238, #239)
- Support configuring specific items for arbitrary kinds of objects in
hotspot.Rule
and polish data-source (#252) - Add cache mechanism for LoadRules in all rule managers (#268, #321, #322, #324)
- Refine circuit breaker State atomic operation (#276)
- Refine pooled EntryOptions recycle logic (#277)
- Refactor the slot chain execution mechanism: support resource level slot chain to reduce unnecessary slot execution (#264)
- Refactor slot chain mechanism and introduce slot order to support priority (#318)
- Support config initialization with config parser (#290)
- Unify logging style (#293)
- Move all adapters and data-source implementations to sentinel-group
- Upgrade gopsutil to support retrieving system load in Windows (#329)
- Change semantic of waitMs to nanosToWait in TokenResult and polish related stat slots (#332)
- Improve examples and add benchmarks for all fundamental slots
- Performance optimization
Bug Fixes
- Fix potential nil counter bug in currentBucketOfTime of leap array (#327)
- Fix the bug that unsigned estimatedQueueingDuration in throttling checker may overflow (#332)
- Fix the problem that requests will never be blocked when ratio threshold = 100% (#315)
- Fix no limit of batch count in flow throttling checker (#302)
Thanks for all contributors: @louyuting, @sanxun0325, @luckyxiaoqiang, @sczyh30, @liqiangz, @sdttttt, @AlexStocks, @Jayice-zjw, @YUbuntu0109, @cncal, @weiyuanke