高可用流控降级组件 Sentinel Go 0.6.0 发布,支持 Warm-Up 预热流控

sczyh30 · · 586 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

[Sentinel](https://github.com/alibaba/Sentinel) 是阿里巴巴开源的,面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统自适应保护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀、冷启动、消息削峰填谷、集群流量控制、实时熔断下游不可用服务等,是保障微服务高可用的利器,原生支持 Java/Go/C++ 等多种语言,并且提供 Istio/Envoy 全局流控支持来为 Service Mesh 提供高可用防护的能力。 近期,[Sentinel Go 0.6.0](https://github.com/alibaba/sentinel-golang/releases/tag/v0.6.0) 正式发布,该版本带来了 Warm-Up 预热流控特性、go-micro 框架的适配模块,以及其它的一些特性改进。Release notes: https://github.com/alibaba/sentinel-golang/releases/tag/v0.6.0 该版本的主要特性之一是 Warm-Up 预热流控支持。当系统长期处于低水位的情况下,流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。比如刚启动的服务,数据库连接池可能还未初始化,缓存也处于空的状态,这时候激增的流量非常容易导致服务崩溃。这时我们就可以利用 Sentinel 的 Warm-Up 流控模式,控制通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,而不是在一瞬间全部放行。这样可以给冷系统一个预热的时间,避免冷系统被压垮。 ![Warm Up](https://aliware-images.oss-cn-hangzhou.aliyuncs.com/ahas/sc_example_warmup.png) WarmUp 预热控制的示例可以参考 [qps_warm_up_example.go](https://github.com/alibaba/sentinel-golang/blob/master/example/warm_up/qps_warm_up_example.go)。 同时新版本还带来了 [go-micro v2 的适配模块](https://pkg.go.dev/github.com/alibaba/sentinel-golang@v0.6.0/adapter/micro?tab=doc),开发者只需在创建 server/client 的时候添加上 Sentinel 的 handler wrapper 即可快速接入适配,自动对 RPC 调用进行埋点。默认埋点会提取服务 method 作为资源名,限流处理逻辑默认返回对应的 BlockError。用户也可以在构造 handler wrapper 时传入自定义的资源名提取逻辑和流控 fallback 逻辑,来进行定制。示例: ```go svr := micro.NewService( micro.Name("sentinel.test.server"), micro.Version("latest"), micro.WrapHandler(NewHandlerWrapper( // 提供自定义的流控 fallback 逻辑 WithServerBlockFallback( func(ctx context.Context, request server.Request, blockError *base.BlockError) error { return errors.New(myBlockMessage) }), )), ) ``` 其它主要特性改进包括: - 修复熔断器模块半开启模式探测阶段被同资源其它规则 block 后状态无法变换的 bug - 支持用自定义的 Logger 实现替换默认自带的 record logger - 完善部分 rule entity 的定义,完善数据源模块提供的默认规则解析器 Sentinel Go 版本正在快速演进中,1.0 GA 版本即将在近期发布,带来更多云原生相关的特性。我们非常欢迎感兴趣的开发者参与贡献,一起来主导未来版本的演进。若您有意愿参与贡献,欢迎联系我们加入 Sentinel 贡献小组一起成长(Sentinel 开源讨论钉钉群:30150716)。我们会定期给活跃贡献者寄送小礼品,核心贡献者会提名为 committer,一起主导社区的演进。Now let's start hacking!

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

586 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传