阿里巴巴开源 Sentinel,进一步完善 Dubbo 生态
近日,阿里巴巴中间件团队宣布开源 Sentinel,并发布了首个社区版本v0.1.0。
Sentinel 作为阿里巴巴“大中台、小前台”架构中的基础模块,覆盖了阿里的所有核心场景,因此积累了大量的流量归整场景以及生产实践。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Sentinel 开源地址:https://github.com/alibaba/Sentinel
Sentinel 的功能如下:
➤ 限流:
当我们设计了一个函数,准备上线,这时候这个函数会消耗一些资源,处理上限是1秒服务3000个QPS,但如果实际情况遇到高于3000的QPS该如何解决呢?Sentinel提供了两种流量统计方式,一种是统计并发线程数,另外一种则是统计 QPS,当并发线程数超出某个设定的阈值,新的请求会被立即拒绝,当QPS超出某个设定的阈值,系统可以通过直接拒绝、冷启动、匀速器三种方式来应对,从而起流量控制的作用。
➤ 熔断降级:
接触过Spring Cloud、Service Mesh的同学,都知道熔断降级的概念。服务之间会有相互依赖关系,例如服务A做到了1秒上万个QPS,但这时候服务B并无法满足1秒上万个QPS,那么如何保证服务A在高频调用服务B时,服务B仍能正常工作呢?一种比较常见的情况是,服务A调用服务B时,服务B因无法满足高频调用出现响应时间过长的情况,导致服务A也出现响应过长的情况,进而产生连锁反应影响整个依赖链上的所有应用,这时候就需要熔断和降级的方法。Sentinel通过并发线程数进行限制和响应时间对资源进行降级两种手段来对服务进行熔断或降级。
➤ 塑形
通常我们遇到的流量具有随机性、不规则、不受控的特点,但系统的处理能力往往是有限的,我们需要根据系统的处理能力对流量进行塑形,即规则化,从而根据我们的需要来处理流量。Sentinel通过资源的调用关系、运行指标、控制的效果三个维度来对流量进行控制,开发者可以自行灵活组合,从而达到理想的效果。
➤ 系统负载保护
平时系统运行都没问题,但遇到大促的时候,发现机器的load非常高,这时候对系统的负载保护就显得非常重要,以防止雪崩。Sentinel 提供了对应的保护机制,让系统的入口流量和系统的负载达到一个平衡,保证系统在能力范围之内处理最多的请求。需要注意的是,Sentinel在系统负载保护方面的判断机制是根据系统能够处理的请求,和允许进来的请求,来做平衡,而不是根据一个间接的指标(系统load)来做限流。因为我们最终追求的目标是在系统不被拖垮的情况下,提高系统的吞吐率,而不是load一定要到低于某个阈值。
其特点包括:
➤ 轻巧
轻巧指的是对性能影响小和对应用零入侵。
限流框架是寄宿在应用上的,这时候要求限流框架不能对系统资源有过多的消耗。就像汽车上的安全气囊如果会耗油、导致汽车跑得慢,这就不是一个好气囊,Sentinel的接入对系统资源的消耗极少。
除了对性能的影响要优化到最低以外,还有一个特征,就是需要保证他对应用的零入侵。零入侵是让开发者几乎意识不到这个框架的存在。如果让开发者一边开发,一边还要想着限流降级,这就非常累了。优秀的限流就像是汽车上的安全气囊,平时系统工作正常的时候我们感受不到他的存在,只有当系统出现无法应对当前流量的时候,才会出现,这就是对应用零入侵的体现,开发者无需关心如何接入流量框架,便可调用服务。
对此,Sentinel通过对主流框架,例如Dubbo、Spring Cloud, grpc等,进行默认适配,只要接入我们的适配器,默认的资源就都有了;如果不是用主流框架,也没有关系,只需要很简单,差不多3步,就可以接入,之后还会提供annotation,让用户更简单的用起来。
➤ 专业
不同的场景下有不同的限流需求。在什么时候减流量,流量减多了影响用户体验、流量减少了影响系统稳定性,陡峭高峰如何限流、销峰填谷如何限流,这里就涉及到限流的算法。不同于 hystrix 只提供一两个维度的限流方式,Sentinel提供了一个灵活的框架,从不同的维度出发,开发者可以根据自身的场景去制定自己的限流策略。
➤ 实时监控
流量具有很强的实时性,之所以需要限流,是因为我们无法对流量的到来作出精确的预判,不然的话我们完全可以通过弹性的计算资源来处理,所以这时候限流框架的实时监控功能就非常重要了。通过Sentinel的实时监控功能,运维人员可以根据实际流量情况,采取不同的措施,限流、降级、塑形、系统保护,所以在我们第一版开源版本中,我们加入了Sentinel的控制台,具备实时监控功能。
团队同时还宣布,目前已经把 Sentinel 的适配器捐给了Dubbo,进一步完善了 Dubbo 生态。社区地址:http://dubbo.incubator.apache.org/#!/blog/sentinel-introduction-for-dubbo.md?lang=zh-cn
如果开发者接入了Dubbo Sentinel,就能立即实现实时秒级监控的功能。这个监控提供单机链路维度和单机平铺维度,还提供汇总维度的监控,非常方便。
来源: 阿里巴巴中间件
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
扎克伯格扎心,传谷歌搜索将接受审查重新进入中国
据报道,谷歌计划在中国大陆重启其搜索引擎,然而,不同于多年前的强势,此番谷歌将会配合中国政府审查,以满足大陆网络环境要求。 谷歌在 2010 年关闭了其中国搜索引擎 google.cn,理由是政府试图“限制网络上的言论自由”。但根据 The Intercept 的一份报告,这家美国科技巨头现在将以配合审查,并接受“阉割”的方式,重返中国大陆这个世界上最大用户量的互联网市场。另一边,Facebook 扎克伯格为进入中国市场可谓煞费苦心,学中文、天安门前吸雾晨跑,然而 Facebook 相关业务始终进不来,前阵子网传已经挂牌的 Facebook 杭州公司最后也被确认为虚假消息,听了谷歌这个计划,小扎该是很扎心。 根据知情人士提供给 The Intercept 的内部文件,自 2017 年年初以来,谷歌一直在开发代号为“Dragonfly”的搜索引擎的审查版本。并且其正在构建为 Android 移动应用程序,它将屏蔽掉维基百科与 BBC 新闻等“不存在的网站”,同时将过滤掉有关言论自由、人权、民主、宗教与抗议等主题的内容。审查将扩展到谷歌的图像搜索,拼写检查和建议的搜索功能。 对此谷歌在一份...
- 下一篇
腾讯开源 Lua 开发插件 sluaunreal,加速游戏业务开发
近日,腾讯开源了其用于游戏业务的 sluaunreal,该项目是适用于 unreal4 引擎的 Lua 开发插件,可让开发者高效地使用 Lua 进行业务开发。 项目地址:https://github.com/Tencent/sluaunreal 据项目主页介绍,sluaunreal作为 unreal 引擎的插件,通过 unreal 自带蓝图接口的反射能力,结合 libclang 静态 C++ 代码分析,自动化导出蓝图接口和静态 C++ 接口,提供给 Lua 语言,使得可以通过 Lua 开发 unreal 游戏业务逻辑,方便游戏高效迭代开发、上线热更新,同时支持 Lua 到 C++ 双向、Lua 到蓝图双向调用,大大提升开发速度。 具体功能如下: 通过蓝图反射机制,自动导出 unreal4 的蓝图 api 到 Lua 接口 支持以 Lua function 作为蓝图事件的回调函数 支持普通 C++ 函数和类,通过静态代码生成或者泛型代码展开导出到 Lua 接口,同时支持与蓝图接口交互 完整支持了 unreal4 的枚举,并导出了全部枚举值到 Lua 支持 FVector 等非蓝图类,同时...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启