带你读《Apache Dubbo微服务开发从入门到精通》—— 一、 限流降级(上)

简介: 带你读《Apache Dubbo微服务开发从入门到精通》—— 一、 限流降级(上)

服务治理与生态

 

一、 限流降级

 

在复杂的生产环境下可能部署着成千上万的Dubbo服务实例,流量持续不断地进入,服务之间进行相互调用。但是分布式系统中可能会因流量激增、系统负载过高、网络延迟等一系列问题,导致某些服务不可用,如果不进行相应的控制可能导致级联故障,影响服务的可用性,因此如何对流量进行合理的控制,成为保障服务稳定性的关键。

 

Sentinel是阿里中间件团队开源的,面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。本文将基于Dubbo,看看Sentinel是如何进行流量控制的,并且提供Dubbo整合Sentinel的最佳实践。

 

1. 快速接入Sentinel

 

Sentinel意为哨兵,这个命名形象的诠释了Sentinel在分布式系统中的工作角色和重要性。以Sentinel在Dubbo生态系统中的作用为例,Dubbo的核心模块包括注册中心、服务提供方、服务消费方(服务调用方)和监控四个模块。Sentinel通过对服务提供方和服务消费方的限流来进一步提升服务的可用性。接下来我们看看Sentinel对服务提供方和服务消费方限流的技术实现方式。

 

image.png

 

Sentinel提供了与Dubbo适配的模块–Sentinel Dubbo Adapter,包括针对服务提供方的过滤器和服务消费方的过滤器(Filter)。使用时我们只需引入以下模块(以Maven为例):

 

image.png

 

引入此依赖后,Dubbo的服务接口和方法(包括调用端和服务端)就会成为Sentinel中的资源,在配置了规则后就可以自动享受到Sentinel的防护能力。同时提供了灵活的配置选项,例如若不希望开启Sentinel Dubbo Adapter中的某个Filter,可以手动关闭对应的Filter。

 

接入Sentinel Dubbo Adapter后,即使未配置规则,Sentinel也会对相应的Dubbo服务的调用信息进行统计。那么我们怎么知道Sentinel接入成功了呢?这时候就要请出一大利器——Sentinel控制台了。

 

2. 限流必备—监控管理

 

流量具有很强的实时性,之所以需要限流,是因为我们无法对流量的到来作出精确的预判,不然的话我们完全可以通过弹性的计算资源来处理,所以这时候为了保证限流的准确性,限流框架的监控功能就非常重要了。

 

Sentinel的控制台(Dashboard)是流量控制、熔断降级规则统一配置和管理的入口,同时它为用户提供了多个维度的监控功能。在Sentinel控制台上,我们可以配置规则并实时查看流量控制效果。

 

接入Sentinel控制台的步骤如下(缺一不可):

 

按照Sentinel控制台文档启动控制台

 

应用引入sentinel-transport-simple-http依赖,以便控制台可以拉取对应应用的相关信息

 

给应用添加相关的启动参数,启动应用。需要配置的参数有:

 

-Dcsp.sentinel.api.port:客户端的port,用于上报相关信息(默认为8719)

-Dcsp.sentinel.dashboard.server:控制台的地址

-Dproject.name:应用名称,会在控制台中显示

 

注意某些环境下本地运行Dubbo服务还需要加上-Djava.net.preferIPv4Stack=true参数。比如中Service Provider的启动参数可以配成:

 

image.png

 

这样在启动应用后就能在控制台找到对应的应用了。以下是常用功能:

 

单台设备监控:当在机器列表中看到您的机器,就代表着已经成功接入控制台,可以查看单台设备的设备名称、IP地址、端口号、健康状态和心跳时间等信息。

 

image.png

 

链路监控:簇点链路实时的去拉取指定客户端资源的运行情况,它提供了两种展示模式,一种用书状结构展示资源的调用链路;另外一种则不区分调用链路展示资源的运行情况。通过链路监控,可以查看到每个资源的流控和降级的历史状态。

 

树状链路

平铺链路

image.png

image.png

 

聚合监控同一个服务下的所有机器的簇点信息会被汇总,实现实时监控,精确度达秒级。

image.png

 

 

规则配置:可以查看已有的限流、降级和系统保护规则,并实时地进行配置。


image.png


 

《Apache Dubbo微服务开发从入门到精通》——服务治理与生态—— 一、 限流降级(中):https://developer.aliyun.com/article/1224018


相关文章
|
运维 监控 负载均衡
探索微服务架构下的服务治理:动态服务管理平台深度解析
探索微服务架构下的服务治理:动态服务管理平台深度解析
|
运维 监控 安全
探索微服务架构下的服务治理:动态服务管理平台的力量
探索微服务架构下的服务治理:动态服务管理平台的力量
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
340 2
|
负载均衡 监控 Java
深入探索微服务架构下的服务治理
深入探索微服务架构下的服务治理
229 39
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
202 0
|
存储 监控 负载均衡
构建高效微服务架构:服务治理与监控的实践
构建高效微服务架构:服务治理与监控的实践
|
负载均衡 Java 云计算
微服务架构下的服务治理与容错机制
微服务架构下的服务治理与容错机制
275 20
|
负载均衡 算法 Java
深入探索微服务架构下的服务治理
深入探索微服务架构下的服务治理
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
532 2
|
监控 安全 测试技术
深入理解并实践微服务架构中的服务治理
深入理解并实践微服务架构中的服务治理
664 1

热门文章

最新文章

推荐镜像

更多