人世繁华|SpringCloud在Kubernetes的最佳实践—熔断
前言阿里巴巴十多年的双十一 , 锤炼出来了一套业界领先的高可用技术 , 有一些已经商业化(云产品 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 也提供开放的接口 , 方便您自定义并改变规则 。
推荐阅读
- 人世繁华|OPPO A53海外开售 不足1200元人民币起售
- 繁华散零落散为止经病|湖人想赢系列赛,必须懂得围魏救赵,詹姆斯和戴维斯挡拆势在必行
- 朵小喵儿|小天才手表背后,是成人世界的焦虑
- 人世繁华|华为Mate40Pro将10月发布,设计不再激进,拍照冲第一
- 人世繁华|警惕!493人集体发热腹泻 没想到罪魁祸首竟是它
- 乘风破浪的姐姐@《乘风破浪的姐姐》收官,我看清了成年人世界8条扎心真相
- 繁华散零落散为止经病|戴维斯要碾压火箭内线,哈登要击溃湖人外线,没想到塔克最关键
- 德国|去德国之前,以为德国发达繁华,德国人严谨内敛;去了才知道并不
- 小熊科技|SpringCloud在K8s上的最佳实践—高可用 混沌工程
- 人世繁华|YES,英伟达哪会扔出30系列核弹?,平心而论,若不是AMD