阿里巴巴宣布 Sentinel 开源,进一步完善 Dubbo 生态

摘要: 1、当服务量大到一定程度,流量扛不住的时候,该如何处理? 2、应用之间相互依赖,当应用A出现响应时间过长,影响到应用B的响应,进而产生连锁反应影响整个依赖链上的所有应用,该如何处理?

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel 作为阿里巴巴“大中台、小前台”架构中的基础模块,覆盖了阿里的所有核心场景,也因此积累了大量的流量归整场景以及生产实践。

在近期的Aliware Open Source?深圳站-Apache Dubbo & ApacheRocketMQ开发者沙龙上,阿里巴巴中间件高级技术专家 子矜 宣布将Sentinel 进行开源,并发布了首个社区版本v0.1.0,以下是根据子矜的现场分享所整理,为大家回顾分享中的精彩内容。

分享嘉宾介绍:

林佳梁(子矜),阿里巴巴中间件高级技术专家,参与阿里巴巴多年双十一大促,对流量的管控、高可用架构有着丰富的经验,目前负责流量管控软件Sentinel的开发和商业化。

一、Sentinel 的产生背景
在过去的 10 多年里,阿里巴巴投入了集团大量的精英人力用于提升淘宝、天猫平台服务的稳定性,正是有了多年来上万名阿里技术人才的持续创新和技术沉淀,在一系列秒杀大促中,特别是双11 这样现象级的电商大促中,才打造出了今天大家所看到的可轻松应对双11的平台稳定性体系,包括限流和降级、流量调度、业务开关、容量压测和评估、全链路压测、业务一致性平台等,而Sentinel正是在这种背景下产生的限流降级框架,目前已接入集团几乎所有的核心应用。

二、Sentinal 可以解决什么问题?

? 限流:
当我们设计了一个函数,准备上线,这时候这个函数会消耗一些资源,处理上限是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的控制台,具备实时监控功能。

四、Sentinal 的最佳实践
? Dubbo service

我们已经把 Sentinel 的适配器捐给了Dubbo,社区传送门

如果开发者接入了Dubbo Sentinel,就能立即实现实时秒级监控的功能。这个监控提供单机链路维度和单机平铺维度,还提供汇总维度的监控。非常方便。

然后我们再来看Sentinel还带来了什么好处。当我们浏览一件商品时,背后可能应对着上百个服务,例如商品属性、商品库存、个人信息、评价信息、店铺信息、商品优惠、订单信息、交易信息、推荐信息等等,这类场景,我们可以由两个维度来看Sentinel在Dubbo service 中的实践,一个是从服务提供方service provider如何限流,例如在百个服务中要保证交易服务可以正常处理,那就可以通过容量或者并发量来限流。一个是从服务调用方service caller如何限流,则可以通过熔断降级来限流。

? RocketMQ客户端 & RocketMQ服务端

图中红色曲线是表示实际的消息流量,红色区域是超出我们处理能力的消息流量,这时候借助Sentinel对流量实施削峰填谷,把红色流量放到系统不太繁忙的时候再来处理,这样既不会丢失流量的请求,也不会对用户的购物体验产生影响。这类处理在电商的订单处理等环节很常见。在RocketMQ的服务端,消息的分发者则可以通过Sentinel匀速的对外发送请求。

这个最佳实践,我们也捐给了Apache RocketMQ,目前正在合并,大家很快就可以看到。

? Nacos

Sentinel和Nacos类似,是以Dubbo大生态中的核心组件的身份来对外开源的,目的是帮助开发者获得更完整的分布式服务解决方案。例如当我们限流的流量发生变化的时候,我们需要迅速推规则的时候,Sentinel可以和Nacos相互整合,起到快速操作、快速配送的效果。

Sentinel的理念是无缝对接Dubbo大生态,和Dubbo、Nacos等阿里中间件开源产品紧密结合,支持一键使用,并且全面拥抱开源生态,例如会对grpc ,Rest Service主流框架进行积极适配并开放出来,同时提供一系列API给到开发者,用于定制自己的需求。

原文链接请添加链接描述

本文为云栖社区原创内容,未经允许不得转载。

原文地址:http://blog.51cto.com/13876536/2159926

时间: 2024-07-31 02:52:27

阿里巴巴宣布 Sentinel 开源,进一步完善 Dubbo 生态的相关文章

支持Dubbo生态发展,阿里巴巴启动新的开源项目 Nacos

摘要: 上周六的Aliware技术行上海站Dubbo开发者沙龙上,阿里巴巴高级技术专家郭平(坤宇)宣布了阿里巴巴的一个新开源计划,阿里巴巴计划在7月份开启一个名叫Nacos的新开源项目, 在活动演讲中,坤宇介绍了这个开源项目的初衷,他表示 "将通过Nacos项目将阿里巴巴在建设共享服务体系中使用的服务发现.. 贡献Dubbo生态,阿里Nacos开源计划 在上周六的Aliware技术行上海站Dubbo开发者沙龙上,阿里巴巴高级技术专家郭平(坤宇)宣布了阿里巴巴的一个新开源计划,阿里巴巴计划在7月份

持续投入开源社区建设 | 阿里巴巴又一开源项目被列入 CNCF 云原生全景图

近日,阿里巴巴服务发现和配置管理领域开源项目Nacos被列入云原生全景图谱配置管理和服务发现象限,这是继Dragonfly.Dubbo.RocketMQ.OpenMessaging. PouchContainer和Sentinel后,阿里巴巴又一开源项目被列入该图谱.借助Nacos,用户在云原生时代构建微服务架构时,可极大的降低生产上的落地难度和实施风险. CNCF(Cloud Native Computing Foundation)于 2015 年 7 月成立,隶属于 Linux 基金会,初衷

2016阿里巴巴73款开源产品全向图

摘要: 受益开源,就当回馈.面对阿里头顶上“贡献开源软件数目第一”的光环,我们清醒地认知阿里开源的目的:阿里开源不是到业内“秀肌肉”,更不是自卖自夸:阿里之所以选择开源是因为开源是孵化新技术领域的容器,更是技术演进的最大推动力. 阿里巴巴集团已经开源 115 个项目,加入 FSF 基金会.Apache 基金会.Linux 基金会和 Xen 的顾问团队,并在云栖大会北京峰会宣布 AliSQL 开源. 为了让大家能更好,更全面的了解和应用上阿里开源项目, 云栖社区特别制作了一张“2016 阿里开源全

Dubbo 生态添新兵,Dubbo Admin 发布 v0.1

为了提升 Dubbo 里程碑版本2.7.0的使用体验,我们于去年年中启动了 Dubbo Admin 的重构计划,并作为Dubbo生态的子项目,于近期发布了v0.1,重构后的项目在结构上的变化如下: 将后端框架从webx替换成spring boot前端采用Vue和Vuetify.js作为开发框架移除velocity模板集成swagger,提供api管理功能当前版本的Dubbo Admin包含了之前版本中的绝大部分功能,包括服务治理,服务查询等,同时支持了Dubbo2.7中服务治理的新特性. 配置规

阿里巴巴73款开源产品列表,值得收藏

一.框架 react-web:ReadtWeb 是为那些使用 React Native 兼容的 API 构建的 Web 应用而提供的一个框架.React Web的目的及意义非常明确: 让 React Native 代码跑在 Web上让一套代码运行在各个移动终端,对前端及业务来说,这是开发效率中一个质的提升. Jstrom:"JStorm是参考 storm 的实时流式计算框架,在网络 IO.线程模型.资源调度.可用性及稳定性上做了持续改进,已被越来越多企业使用.经过 4年发展,阿里巴巴 JStor

微服务的一种开源实现方式——dubbo+zookeeper

微服务架构成了当下的技术热点,实现微服务是要付出很大成本的,但也许是因为微服务的优点太过于吸引人,以至于大部分开发者都将它当成未来的发展趋势. 微服务架构的演进过程 dubbo的用户手册中介绍了服务化架构的进化过程,如下图: 图一.服务化架构的演进过程 1.orm – 单一应用架构 一个高内聚版本,所有功能部署在一起.数据访问框架(orm)成为关键.这个架构很少被人使用,几乎接近灭绝了吧. 优点:成本低,适合功能少又简单 缺点:很多,比如无法适应高流量,二次开发难,部署成本高 2.mvc架构 -

进一步完善之后的一元N次方程求导算法

祝大家节日快乐.......写代码就是过节.... package com.system.Tools; /** * 这个类,实现对函数的求导算法 * 最大目标  实现对任意多元函数的偏导数和全导数的求导算法 * 最小目标  实现对一元N次函数的求导算法 *  * @author Administrator */public class SystemMathTools { /* *  还不是很完善,需要进一步修改...     *      *  by comsci 2019.2.4 经过进一步的

Canonical 开源 MicroK8 | 云原生生态周报 Vol. 25

作者 | 天元.进超.衷源 业界要闻 1.Canonical 开源 MicroK8 面向工作站和边缘/物联网的零运维 Kubernetes!MicroK8 是 Canonical 提供的一款功能强大的企业级 Kubernetes 发行版,我们认为它是市面上最小巧最快速的多节点 Kubernetes. 2.2019 中国开源年会即将开启 2019 中国开源年会(COSCon'19)为业界最具影响力的开源年度盛会,将于 11 月 2 日至 3 日在华东师范大学?(上海普陀区中山北路校区)由开源社举办

元素和结点的区别(待进一步完善)

1.区别介绍 Element是Node的扩展,所以也更实用一些. 例如,用Element可以方便的获得Node的属性getAttribute(String attrName),如果用Node,可以得到一个属性集,还要进一步检索才可得到想要的属性. 一个结点不一定是一个元素,而一个元素一定是一个结点.Element是Node的子集,XmlNode表示一个节点,包括XmlElement(元素)和XmlAttribute(属性)等.如: <Alarm lock="true"> /