Sentinel Golang Versions Save

Sentinel Go enables reliability and resiliency for Go microservices

v1.0.4

2 years ago

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

2 years ago

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

3 years ago

Bug Fixes

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

v1.0.1

3 years ago

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

3 years ago

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

3 years ago

Bug fixes

  • Ban the system metric collector for windows OS.

v1.0.0-M1

3 years ago

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

3 years ago

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

3 years ago

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

3 years ago

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