Skip to content

Releases: bunnier/circuit

v1.1.0

22 Jul 04:19
Compare
Choose a tag to compare

重构超时逻辑,当没有设置超时时间时,不再加入额外超时控制逻辑,功能函数直接将直接在当前goroutine中运行。

v1.0.9

21 Jul 17:14
Compare
Choose a tag to compare
  • 功能函数签名和降级函数签名均稍作调整,加入context,以便方法内控制超时;
  • 新提供ContextExecute接口,以便传入context;
  • 降级函数也支持command的默认超时了;
  • 修复超时统计不完整的问题;

v1.0.8

20 Jul 15:16
Compare
Choose a tag to compare
  • 修复breaker没有将context传递到metric,导致goroutine泄漏的问题。
  • 调整功能函数签名,将功能函数签名里的[]interface{}调整为interface{},原有签名需要稍做调整。
  • 提供基于srebreaker的command的benchmark。

v1.0.7

20 Jul 02:13
Compare
Choose a tag to compare
  • 调整metric逻辑,支持超过1分钟的滑动窗口;
  • 按Google SRE文章中给出的值,设置SreBreaker默认统计窗口为2min,以避免窗口过短导致限流不平滑;

v1.0.6

19 Jul 15:45
Compare
Choose a tag to compare

提供能简单处理服务熔断逻辑的工具包。

本工具包主要通过Command对象交互,可通过circuit.NewCommand 函数获取一个 Command对象,通过该对象的Execute方法即可在熔断器上执行设置的功能函数。

初始化 Command 时可设置熔断器算法,熔断器的主接口为Breaker,包中目前内置了两个熔断器供选择:

  • CutBreaker(默认):提供了常规的断路器模式的熔断器实现。即维护 Openhalf-OpenClosed 3个状态,错误率达到阈值后OpenOpen后休眠指定时间转变为half-Open,之后允许一个请求探测,如恢复正常,则Closed,反之重新进入Open
  • SreBreaker:提供了Google SRE提出的 adaptive throttling 算法实现的自适应熔断器。算法介绍参考:https://sre.google/sre-book/handling-overload/#eq2101

v1.0.2

12 Jul 03:12
Compare
Choose a tag to compare

整理error逻辑。

v1.0.0

11 Jul 18:10
Compare
Choose a tag to compare

本版本定好了熔断器接口,并提供一个基于“一刀切”恢复算法的熔断器作为默认熔断器。

默认熔断器算法:

  • 内部维护 开启、关闭、半开 三个状态。
  • 到达预定比例的错误率后开启熔断器;
  • 熔断器开启一定时间后进入半开启状态,该状态时只能有一个请求进入尝试;
  • 半开状态的请求如果通过将关闭熔断器并重置统计,不通过将重新开启熔断器。