Skip to content

Release Notes

Eric Zhao edited this page Jan 7, 2022 · 23 revisions

v1.0.4

Features / Enhancements

  • Add metric exporter abstraction and add Prometheus support (#382)
  • Add customized probe-num support for half-open recovery of circuit breaker (#428)
  • Disable timestamp cache by default to reduce CPU footprint (#442)

Bug Fixes

  • Fix fixed pointer size problem in AtomicBucketWrapArray to support 32-bit OS (#429)

Integrations

  • Add Apollo data-source extension (#444)
  • Polish Sentinel Kubernetes CRD manager/controller with the latest controller-runtime API to support Kubernetes 1.22+ (in sentinel-go-datasource-k8s-crd)
  • Upgrade Gin from 1.6.3 to 1.7.0 in pkg/adapters/gin (#445)

v1.0.3

Since this version, the adapter and data-source modules were moved back to this repo (under pkg directory).

Features / Enhancements

  • Support extracting "hot-spot" params by key from EntryContext attachments (#376)
  • Record max concurrency in metric logs (#371)
  • Deprecate the resource-level slot chain for reliability (#383)

Bug Fixes

  • Fix LeapArray integer overflow problem on 32-bit platform (#422)

Dependencies

  • Upgrade gopsutil from 3.20.12 to 3.21.6 (#414)
  • Upgrade nacos-sdk-go to v1.0.8 for Nacos data-source (#410)

v1.0.2

Bug Fixes

  • Fix the potential deadlock bug when LoadRules and multiple resource Entry are executed concurrently (#397)

v1.0.1

Bug Fixes

  • Fix data race bug in slot chain: in concurrency scenario, use RWLock to avoid slots access data race in SlotChain between RegisterRuleCheckSlotForResource and Entry function (#337)
  • Fix system module bug: system adaptive rules won't take effect due to absence of slots (#337)

v1.0.0 (GA)

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 in flow.Rule. When StatIntervalInMs > 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.
  • 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)

v0.6.2

  • Bug fixes: ban the system metric collector for Windows OS

0.6.1

Features / Enhancements

  • Separate original flow.ControlBehavior to TokenCalculateStrategy and ControlBehavior (#223)
  • Migrate dubbo-go adapter to dubbo-go (#229)
  • Refine the exported APIs and structure (#221, #222, #227, #231, #233)

0.6.0

Features / Enhancements

  • Add "warm-up" control behavior support (#190, #218)
  • Add go-micro adapter support (#214, #219)
  • Make circuitbreaker.Rule a unified struct entity for all circuit breaking strategies (#205)
  • Support customizing global logger and export logger functions as default delegate (#201)
  • Improve the rule entities and default JSON rule parsers in ext/datasource package (#198)
  • Refine the semantics of onComplete: executed when a passed request finished (#215)
  • Upgrade nacos-sdk-go to v1.0.0 and polish Nacos data-source (#199)
  • Make start time of buckets align with bucketLength in AtomicBucketWrapArray (#197)

Bug fixes

  • Fix the bug of circuit breaker half-open state transformation when request is blocked by upcoming rules (#202)

0.5.0

Features / Enhancements

  • Support arbitrary parameter type in "hot-spot" param flow control (#185)
  • Support initialization with Sentinel config entity directly (#162, #175)
  • Add Consul data-source extension (#116)
  • Add Nacos data-source extension (#184)
  • Optimize performance when loading large amount of rules (#176)
  • Improve rule checking slots with standard BlockError representation (#187)
  • Carry correct invocation arguments in dubbo-go adapter (#186)

Bug fixes

  • Fix index checking logic in AtomicBucketWrapArray.elementOffset(idx)

0.4.0

In this version, we've brought flow control capability for frequent ("hot spot") parameters, which enables detecting top-N visiting parameters and perform fine-grained rate limiting for every "hot" values (or for some specific values). Currently Sentinel Go supports basic numeric types (various int/uint/float types), bool type and string type.

Features / Enhancements

  • Support flow control for frequent ("hot spot") parameters (#119)
  • Improve pooling and time retrieval mechanism to optimize performance (#155)
  • Polish data-source helper (canonical converter and updater) for rules (#157)
  • Add fundamental benchmarks (#154)

0.3.0

In this version, we've brought circuit breaking feature to Sentinel Go, which is used to provide stability and prevent cascading failures in distributed systems. Currently Sentinel Go provides two kinds of strategies: RTT-based (slow request ratio) and error-based (error ratio/error count).

Features / Enhancements

  • Add circuit breaking support (#18, #152)
  • Refactor the mechanism of recording error in SentinelEntry/StatisticSlot and polish api.Tracer (#143, #153)
  • Improve mechanism of reusing TokenResult to reduce memory footprint (#149, #142)
  • Add etcd v3 data-source implementation (#115)
  • Add adapter for echo Web framework (#95)
  • Support carrying additional attachments with sentinel.Entry(options) (#124)
  • Remove unnecessary division checking for interval of SlidingWindowMetric (#134)

0.2.0

Features / Enhancements

  • Add basic abstraction for data-source extension (#73)
  • Unify general configuration and logging configuration (#56)
  • Add basic error Tracer API (#65, #96)
  • Add integration module for Gin web framework (#82)
  • Add integration module for gRPC-go (#81)
  • Add dubbo-go adapter module (#60)
  • Add refreshable file data-source implementation (#86)
  • Add support for collecting CPU usage for SystemRule and add stat.system.collectIntervalMs config item

Bug fixes

  • Fix bugs in reading logic of MetricLogSearcher
Clone this wiki locally