sentinel-golang

Sentinel Go enables reliability and resiliency for Go microservices

APACHE-2.0 License

Stars
2.7K
Committers
43

Bot releases are hidden (Show)

sentinel-golang - v1.0.4 Latest Release

Published by sczyh30 almost 3 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

sentinel-golang - v1.0.3

Published by sczyh30 about 3 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

sentinel-golang - v1.0.2

Published by louyuting almost 4 years ago

Bug Fixes

  • Fix the potential deadlock bug when LoadRules and multiple resource Entry are executed concurrently (#397)
sentinel-golang - v1.0.1

Published by louyuting almost 4 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

sentinel-golang - v1.0.0

Published by sczyh30 almost 4 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

sentinel-golang - v0.6.2

Published by louyuting almost 4 years ago

Bug fixes

  • Ban the system metric collector for windows OS.
sentinel-golang - v1.0.0-M1

Published by sczyh30 about 4 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!

sentinel-golang - v0.6.1

Published by louyuting about 4 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)
sentinel-golang - v0.6.0

Published by louyuting about 4 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

sentinel-golang - v0.5.0

Published by sczyh30 about 4 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

sentinel-golang - v0.4.0

Published by louyuting over 4 years ago

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)

Thanks for the contributors: @louyuting @sczyh30

sentinel-golang - v0.3.0

Published by sczyh30 over 4 years ago

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)

Thanks for the contributors: @ansiz, @chenjiandongx, @hellosmallstone, @louyuting, @NineSunRD, @novoland, @sczyh30, @sdttttt, @zhangmingke, @zsy619

sentinel-golang - v0.2.0

Published by sczyh30 over 4 years ago

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

Thanks for the contributors: @gorexlv, @hellosmallstone, @louyuting, @pantianying, @sczyh30, @wenxuwan, @zsy619

sentinel-golang - v0.1.0

Published by sczyh30 over 4 years ago

Sentinel Golang v0.1.0 (the initial release version)

Package Rankings
Top 0.72% on Proxy.golang.org
Badges
Extracted from project README
codecov GoDoc Go Report Card License Gitter GitHub last commit GitHub repo size GitHub closed issues GoDoc
Related Projects