Skip to content

Releases: alibaba/sentinel-golang

v1.0.4

07 Jan 08:15
ea8c74f
Compare
Choose a tag to compare

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)

Thanks for all contributors: @ansiz, @Casper-Mars, @ecafkoob, @louyuting, @luckyxiaoqiang, @sanxun0325

v1.0.3

16 Aug 08:03
194d4be
Compare
Choose a tag to compare

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)

Thanks for all contributors: @louyuting, @sanxun0325, @liqiangz, @cafra, @kallydev, @tylitianrui, @daixiang0, @sczyh30

v1.0.2

14 Jan 03:06
e48a6ef
Compare
Choose a tag to compare

Bug Fixes

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

v1.0.1

09 Dec 01:47
f854c93
Compare
Choose a tag to compare

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)

Note:

  • V1.0.1 version has a potential dead lock bug, please DON'T use in production. v1.0.2 version will fix this bug, thanks.

Thanks for all contributors: @louyuting @sczyh30 @sanxun0325 @luckyxiaoqiang @yedamao

v1.0.0

26 Nov 13:22
Compare
Choose a tag to compare

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)

Thanks for all contributors: @louyuting, @sanxun0325, @luckyxiaoqiang, @sczyh30, @liqiangz, @sdttttt, @AlexStocks, @Jayice-zjw, @YUbuntu0109, @cncal, @weiyuanke

v0.6.2

29 Oct 12:07
a3733b6
Compare
Choose a tag to compare

Bug fixes

  • Ban the system metric collector for windows OS.

v1.0.0-M1

26 Sep 15:28
4e8f5a0
Compare
Choose a tag to compare
v1.0.0-M1 Pre-release
Pre-release

This is a pre-release version (M1) of Sentinel Go 1.0.0. We've brought a few breaking changes:

  • Make internal logger structured and use JSON as default format.
  • Add "isolation" package and move out concurrency limiting from flow module.

Besides, we've brought arbitrary statistic duration support for flow rule, which could satisfy more scenarios.

Any suggestions are welcomed!

v0.6.1

09 Sep 15:08
f9ddf58
Compare
Choose a tag to compare

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)

v0.6.0

02 Sep 05:38
Compare
Choose a tag to compare

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)

Thanks for the contributors: @louyuting @sanxun0325 @sczyh30 @Zhou-Haowei

v0.5.0

29 Jul 06:20
Compare
Choose a tag to compare

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)

Thanks for the contributors: @cncal, @gorexlv, @louyuting, @Mstch, @sanxun0325, @sczyh30