开发者学堂课程【微服务实战-服务熔断 - Sentinel :阿里云应用高可用服务 AHAS】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/618/detail/9425
阿里云应用高可用服务 AHAS
内容介绍:
一、阿里云应用高可用服务
二、在阿里云上使用 Sentinel 流控降级
一、阿里云应用高可用服务
1. 应用高可用服务
应用高可用服务(Application High Availability Service)是一款专注于提高应用高可用能力的云工具产品,提供应用架构自动探测,故障注入式高可用能力评测和一键流控降级等功能,可以快速低成本的提升应用可用性。
2. 高可用服务分为三大部分
(1) 架构感知
运筹帷幄:自动感知应用架构,识别组件和服务
(2) 流控降级
被动防御:流量控制和熔断降级(提供企业级的流量控制和实时的监控能力)
(3) 故障注入
主动出击:模拟故障验证高可用能力
AHAS 控制台: https://ahas.console.aliyun.com
3. AHAS 流控降级一全方位的防护
AHAS 中一个重要的部分是 AHAS Sentinel 流控降级,AHAS Sentinel 流控降级提供企业级的全方位的防护。从用户的客户端到业务链入口,包括 API Gateway 以及网关,到负载均衡层到 web servers 服务端,再到 RPC 的服务,再到数据库和缓存。Sentinel 都可以为这一系列全方位的这样一个架构来提供流量防护的能力。
AHAS Sentinel 与开源相比提供的功能:
流量实时监控
水位诊断分析
链路入口流控
热点漏斗
按照服务水位流控
削峰填谷
匀速器
慢 SQL 发现熔断
慢方法熔断
热点探测
二、在阿里云上使用 Sentinel 流控降级
1.AHAS 流控降级接入方式
只需要在开源依赖的基础上,再添加一个 AHAS sentinel client 的依赖。即可快速的接入流程及服务,那 AHAS 流控降级的 CK 是完全兼容开源版本的。
自己的代码无需任何改动,只需要去替换一下这个依赖。然后还需要设置一些参数,除了通过 project.name 来配置应用名称之外,还需要在 AHAS 控制台流控降级应用,进入页面拿到公网所需要的 AHAS. lessons 来接入 AHAS 的流控降级。
如果是在阿里云 ecs 环境,则不需要 AHAS.lessons,但需要用户的阿里云账户提前开通 AHAS。
替换开源依赖
com.alibaba.csp
ahas-sentinel-client
1.3.7
完全兼容开源版本,代码无需改动
设置启动参数
-Dproject.name=AppName -Dahas.license=xxx
2.演示:
使用刚才的开源 demo,在开源的基础上添加了 AHAS sentinel client 的依赖,并提前配置了 AHAS.lessons。
添加完依赖以后,直接启动这三个应用。先启动 Dubbo provider。再分别启动Gateway 应用和 Web 应用。
之后通过网关来触发这三个服务的访问。然后直接访问 AHAS 的控制台。在控制台上,找到流控降级,可以看到,流控降级分为应用流控和网关流控两部分。其中大部分 Dubbo provider 和 Web service 是在应用列表中,而 demo Gateway 则是在网关列表中。
点击应用以后可以看到,这几个服务对应的实时的访问量。之后通过脚本触发这个服务的多次调用,刷新就可以看到服务的对应量显示。
在每个应用的应用概览页,能够看到这个应用调用的一些早晚的数据,包括近五分钟内通过的请求数,限流的请求数,以及实施的一些集群级别的、近五分钟的这样一个监控曲线,同时我们也可以看到实时的集群、平均 cpu、平均 load 等系统指标。来帮助大家了解整个集群系统的水位,帮助大家做限流量级的角色。
同时服务也会列出请求的 top 资源,可以再触发一下其他服务的调用,看到 top 资源可以根据这些 top 资源来进行流控。在监控下面,可以看到详细的监控曲线。
一个比较好的实验方式就是根据实时的流量情况,来动态地去配置下列规则,比如观察系统的这一个服务的一个水位,都在五之间走动,可以配置阀值为五的限流规则。针对 provide 配置限流规则以后,可以在 endpoints 端和 console 端看到限流的异常。同时监控曲线也标志着限流生效,可以看到后面的通过量都控制在了五以内,而拒绝量在缓慢的上升。
同时,网关留空的操作也类似于开源控制台中管理控制操作,可以新增对应的 API 来进行自定义 API 管理。并且针对 API 以及路由来进行限流。
以上就是 AHAS sentinel 控制台子的接入以及基本的使用。