中国建设银行网站的发展,平台兼职网站开发,熊掌号怎么域名做网站,申请网页要多少钱前言
阿里巴巴十多年的双十一#xff0c;锤炼出来了一套业界领先的高可用技术#xff0c;有一些已经商业化#xff08;云产品 PTS、AHAS#xff09;#xff0c;也有的开源了如#xff1a;Sentinel、ChaosBlade。我们这一系列的高可用章节也主要介绍这方面的内容。今天介…前言
阿里巴巴十多年的双十一锤炼出来了一套业界领先的高可用技术有一些已经商业化云产品 PTS、AHAS也有的开源了如Sentinel、ChaosBlade。我们这一系列的高可用章节也主要介绍这方面的内容。今天介绍熔断部分即开源产品 Sentinel 的核心能力。
问题定义
在一个常见的分布式应用中一个请求先通过终端到达 Gateway再经过防火墙和网络负载均衡其中还包括调用下游的其它服务和第三方应用才能到达前端网络服务如下图所示。 和这样一个架构一样大家可能也会遇到如下的一些熟悉的 Case
瞬间洪峰流量导致系统超出最大负载load 飙高系统崩溃导致无法正常提供服务。“黑马”热点数据击穿缓存DB 被打垮挤占正常流量。调用端被不稳定服务拖垮线程池被占满导致整个调用链路卡死甚至系统雪崩......
这些不稳定的场景可能会导致严重后果。大家可能想问如何做到均匀平滑的用户访问如何预防流量过大或服务不稳定带来的影响这时候我们就要请出微服务稳定性的法宝 —— 高可用流量防护其中重要的手段就是流量控制和熔断降级它们是保障整个系统稳定性重要的一环。
流量控制
流量是非常随机性的、不可预测的。前一秒可能还风平浪静后一秒可能就出现流量洪峰了例如双十一零点的场景。然而我们系统的容量总是有限的如果突然而来的流量超过了系统的承受能力就可能会导致请求处理不过来堆积的请求处理缓慢CPU/Load 飙高最后导致系统崩溃。因此我们需要针对这种突发的流量来进行限制在尽可能处理请求的同时来保障服务不被打垮这就是流量控制。 熔断降级
一个服务常常会调用别的模块可能是另外的一个远程服务、数据库或者第三方 API 等。例如支付的时候可能需要远程调用银联提供的 API查询某个商品的价格可能需要进行数据库查询。然而这个被依赖服务的稳定性是不能保证的。如果依赖的服务出现了不稳定的情况请求的响应时间变长那么调用服务的方法的响应时间也会变长线程会产生堆积最终可能耗尽业务自身的线程池服务本身也变得不可用。
Spring Cloud 中如何做熔断
在原来的 Spring Cloud 产品族中有自带的熔断组件 Hystrix 是 Netflix 公司提供的一个开源的组件提供了熔断、隔离、降级的这些特性不过 Hystrix 在 2018 年 11 月份开始就不再迭代开发进入维护的模式。不过好消息是也就是这一年开源了 Spring Cloud for Alibaba 产品族其中的 Sentinel 完美的对 Hystrix 做了补充下面针对 Sentinel 做一些基本介绍。
Sentinel 工作原理
Sentinel 以资源流量URL、线程、本地函数、Dubbo服务等为切入点根据用户输入的规则自适应的做到流量控制、熔断降级、系统负载保护等多个维度全方位的保障系统的稳定性。并提供了一套具备丰富的应用场景、完备的实时监控、广泛的开源生态、完善灵活的 SPI 扩展点的完美的高可用解决方案产品一个基本的原理介绍图如下详细介绍请参考官方文档。 在使用上针对主流框架默认提供自动适配的能力来定义需要保护的资源并提供设施对资源进行实时统计和调用链路分析。同时Sentinel 也提供开放的接口方便您自定义并改变规则。
快速使用 Sentinel 的方式
除了在开源提供的方案之外Sentinel 已经以多种形态进入到了各种云产品的组合解决方案中列举如下
一、在 AHAS 中使用
Sentinel 现在已经是阿里云云产品 AHAS 的重要能力使用方式请参考官方文档相比开源的方式接入云产品主要省去了繁琐的配置提供了更快的接入方式以及更友好的产品管控界面以及更强大的能力当然除此之外最重要的是在接入和运行的过程中都可以获得原厂同学的直接的支持。
二、在容器服务 Kubernetes 集群中使用
在容器服务中我们目前做到了纯白屏和云原生的方式进行安装使用方式请参考官方文档来安装所需的 pilot在集群中安装完 pilot 之后会自动选择集群中打上了相应 AHAS 注解的 POD 进行 Sentinel Agent 的挂载配置如下
annotations:# 是否开启 AHAS 应用流控插件, on、true 表示开启, off、false表示关闭ahasPilotAutoEnable: on# 服务名称会显示在 AHAS 控制台上ahasAppName: your-service-name
三、在 EDAS 中使用
在 EDAS 中如果选择的是部署在容器服务K8s集群或 Serverless K8s 集群中的应用支持通过重新部署来接入AHAS并可在EDAS内嵌的监控页面中实时监控流量规则所有的配置能力都能通过一个控制台白屏化操作完成全面可视化地保障您的应用可用性使用方式可以参考文档。
结尾
本文简单介绍了高可用流量防护的背景和手段在熔断的场景下我们理解十年的积累打磨了高可用产品 AHAS 来为 Kubernetes Spring Cloud 应用保驾护航。除此之外AHAS 高可用防护还提供以下能力
针对不稳定弱依赖的熔断降级能力支持慢调用比例/异常比例策略支持渐进式恢复策略。机器维度的系统自适应保护智能化调配系统流量全自动托管、高可用的集群流量控制针对 Nginx 网关及 Spring Cloud Gateway、Zuul 等 API Gateway 的网关流控针对 Istio/Envoy 集群的 Mesh 高可用防护原文链接 本文为阿里云原创内容未经允许不得转载。