SpringCloud 应用在 Kubernetes 上的最佳实践 — 高可用(熔断)

前言

阿里巴巴十多年的双十一,锤炼出来了一套业界领先的高可用技术,有一些已经商业化(云产品 PTS、AHAS),也有的开源了如:Sentinel、ChaosBlade。我们这一系列的高可用章节也主要介绍这方面的内容。今天介绍熔断部分,即开源产品 Sentinel 的核心能力。

问题定义

在一个常见的分布式应用中,一个请求先通过终端到达 Gateway,再经过防火墙和网络负载均衡,其中还包括调用下游的其它服务和第三方应用,才能到达前端网络服务;如下图所示。

1.png

和这样一个架构一样,大家可能也会遇到如下的一些熟悉的 Case :

  • 瞬间洪峰流量导致系统超出最大负载,load 飙高,系统崩溃导致无法正常提供服务。
  • “黑马”热点数据击穿缓存,DB 被打垮,挤占正常流量。
  • 调用端被不稳定服务拖垮,线程池被占满,导致整个调用链路卡死甚至系统雪崩
  • ......

这些不稳定的场景可能会导致严重后果。大家可能想问:如何做到均匀平滑的用户访问?如何预防流量过大或服务不稳定带来的影响?这时候我们就要请出微服务稳定性的法宝 —— 高可用流量防护,其中重要的手段就是流量控制和熔断降级,它们是保障整个系统稳定性重要的一环。

流量控制

流量是非常随机性的、不可预测的。前一秒可能还风平浪静,后一秒可能就出现流量洪峰了(例如双十一零点的场景)。然而我们系统的容量总是有限的,如果突然而来的流量超过了系统的承受能力,就可能会导致请求处理不过来,堆积的请求处理缓慢,CPU/Load 飙高,最后导致系统崩溃。因此,我们需要针对这种突发的流量来进行限制,在尽可能处理请求的同时来保障服务不被打垮,这就是流量控制。

2.png

熔断降级

一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API;查询某个商品的价格,可能需要进行数据库查询。然而,这个被依赖服务的稳定性是不能保证的。如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调用服务的方法的响应时间也会变长,线程会产生堆积,最终可能耗尽业务自身的线程池,服务本身也变得不可用。

3.png

Spring Cloud 中如何做熔断?

在原来的 Spring Cloud 产品族中,有自带的熔断组件 Hystrix ,是 Netflix 公司提供的一个开源的组件,提供了熔断、隔离、降级的这些特性,不过 Hystrix 在 2018 年 11 月份开始,就不再迭代开发,进入维护的模式。不过好消息是也就是这一年开源了 Spring Cloud for Alibaba 产品族,其中的 Sentinel 完美的对 Hystrix 做了补充,下面针对 Sentinel 做一些基本介绍。

Sentinel 工作原理?

Sentinel 以资源流量(URL、线程、本地函数、Dubbo服务等)为切入点,根据用户输入的规则,自适应的做到流量控制、熔断降级、系统负载保护等多个维度,全方位的保障系统的稳定性。并提供了一套具备丰富的应用场景、完备的实时监控、广泛的开源生态、完善灵活的 SPI 扩展点的完美的高可用解决方案产品,一个基本的原理介绍图如下,详细介绍请参考官方文档。

4.png

在使用上,针对主流框架默认提供自动适配的能力来定义需要保护的资源,并提供设施对资源进行实时统计和调用链路分析。同时,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 高可用防护

 

原文链接
本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shadingjdbc实战分表分库

文章目录一、问题汇总1. 水平与垂直拆分之间的区别&#xff1f;2. 单表达到多大量开始进行分库分表&#xff1f;3. 基于客户端与服务端实现分表分库区别&#xff1f;4. 数据库分表分库策略有哪些&#xff1f;5. 自定义范围分表算法实现分表?二、整合ShardingSphere实现分表2.1…

阿里云机器学习怎么玩?这本新手入门指南揭秘了!

想知道我是怎样免费在阿里云上玩机器学习的吗&#xff1f; 不慌&#xff0c;这就告诉你答案~ 它来了--阿里云向个人免费开放云端深度学习开发环境DSW&#xff08;DataScienceWorkshop&#xff09;&#xff0c;还有免费GPU资源可以使用&#xff0c;实验的数据还会免费保存30天&a…

华为庞鑫:闪存3.0时代,四大变化激发全闪存数据中心潜能释放

从2005年到2019年间&#xff0c;中国数字经济总体规模由2.6万亿元增加至35.8万亿元&#xff0c;数字经济在GDP的占比也由14.2%提升至36.2%。随着数字经济蓬勃发展&#xff0c;数据也成为当之无愧的关键生产要素&#xff0c;是基础性资源和战略性资源。数据洪流的到来进一步驱动…

基于RabbitMQ订单未支付30分钟自动取消

文章目录一、原理实现1. 超时消费流程图2. 死信队列的架构原理3. 订单超时30分钟实现原理二、核心代码实战2.1. 记录订单待支付数据2.2. 超时消费者监听2.3. 订单核对校验一、原理实现 1. 超时消费流程图 2. 死信队列的架构原理 相同点&#xff1a; 死信队列和普通队列区别不…

蚂蚁mPaaS:有人修建高楼,有人重构城市

简介&#xff1a; 纵览这时代的先声&#xff0c;在高楼之巅&#xff0c;在海天之外。 2018年2月&#xff0c;春运拉开序幕。 这是人类史上最大规模的迁徙活动&#xff0c;3.82亿人坐进车厢&#xff0c;被31万趟车次送往不同的目的地。如果有一台摄影机从高空对准中国大地&…

全场景闪存加速、全场景数据保护,华为助力医院实现智能化转型

数字经济时代的来临&#xff0c;是影响当今医疗健康服务领域最重要的大趋势。在这种大背景下&#xff0c;新时期的智能医疗必将在医疗行业内掀起一阵浪潮。2020年&#xff0c;新冠疫情的肆虐势必推进浪潮的提前到来。 首都医科大学附属北京同仁医院&#xff0c;始建于1886年&a…

从Cloudflare事件,看DNS服务的重要性

简介&#xff1a; 美国时间7月17日&#xff0c;美国知名的网络安全服务提供商Cloudflare&#xff0c;出现了突发网络服务故障。通过这个事件&#xff0c;和大家聊聊关于网络安全稳定的思考&#xff0c;以及稳定、安全的DNS服务的重要性。 7.17事件 美国时间7月17日下午&#…

基于Redis订单未支付30分钟自动取消

文章目录一、原理实现1. 超时消费流程图2. 订单超时30分钟实现原理二、核心代码实战2.1. 记录订单待支付数据2.2. redis配置2.3. 超时消费者监听一、原理实现 1. 超时消费流程图 2. 订单超时30分钟实现原理 ①用户下单之后&#xff0c;投递一个订单号码存放到redis服务端&…

面向 K8s 设计误区

作者 | 姬望来源 | 阿里巴巴中间件头图 | 下载于视觉中国K8s 设计模式Kubernetes 是一个具有普遍意义的容器编排工具&#xff0c;它提供了一套基于容器构建分布式系统的基础依赖&#xff0c;其意义等同于 Linux 在操作系统中的地位&#xff0c;可以认为是分布式的操作系统。自定…

安装docker-compose插件

文章目录一、安装docker-compose插件1. 下载docker-compose插件2. 赋予权限3. 验证一、安装docker-compose插件 1. 下载docker-compose插件 curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/…

突围数字化转型,让特步同比增长24.8%的全渠道中台

简介&#xff1a; 多年前&#xff0c;曾有媒体向丁水波提问&#xff1a;“对于你个人来说&#xff0c;转型过程中最痛苦的部分是什么&#xff1f;”“最关键的是市场意识的转变。耳听为虚眼见为实&#xff0c;做起来给外界看到了&#xff0c;他们才会明白和接受。很多东西得做完…

赠书 | 什么是 Knative?

作者 | 李志伟、游杨来源 | 华章计算机头图 | 下载于视觉中国✎ 导读 什么是Knative&#xff1f;本文将对Knative的产生背景及发展历程&#xff0c;架构设计&#xff0c;受众群体等做详细介绍。Knative是由谷歌发起&#xff0c;有Pivotal、IBM、Red Hat等公司共同参与开发的Ser…

canal kafka 实现mysql与es/redis 数据同步

文章目录一、原理实现1. 方案设计流程图2. 实现原理二、mysql开启binlog模式2.1. 配置my.ini2.2. 重启mysql服务2.3. 验证binlog模式2.4. 创建canal账号2.5. 账号验证三、docker-compose环境搭建3.1. 环境总览3.2. 编写docker-compose.yml3.3. 安装docker-compose3.4. 构建环境…

免费下载!《阿里工程师的自我修养》公开10位阿里大牛解决问题的思维方式

简介&#xff1a; 今天&#xff0c;阿里技术公布一波阿里P8、P9技术大牛的思维模型&#xff0c;将他们的思维模式呈现出来。你可以在阿里资深专家职业生涯的真切感悟中&#xff0c;找到应对危机的最佳方法。《阿里工程师的自我修养》现已正式公开&#xff0c;可免费下载阅读。 …

云原生时代消息中间件的演进路线

简介&#xff1a; 本文整理自作者于 2020 年云原生微服务大会上的分享《云原生时代的消息中间件演进》&#xff0c;主要探讨了传统的消息中间件如何持续进化为云原生的消息服务。 作者 | 周礼&#xff08;不铭&#xff09; 阿里巴巴集团消息中间件架构师 导读&#xff1a;本文…

四大“化学融合”、两大核心平台能力,华为首次系统解读OneStorage

4月14日&#xff0c;在2021华为全球分析师大会期间&#xff0c;华为举办数据存储专场Session&#xff0c;面向全球分析师全面解读下一代数据存储解决方案OneStorage&#xff0c;引领数据存储产业迈向全场景智能和多云融合。同时&#xff0c;在此期间华为首次向业界系统性地诠释…

科普|不同协议下远程服务器文件上传_下载优劣对比

简介&#xff1a; 作为一个程序员&#xff0c;如果不知道如何进行远程服务器的文件上传与下载&#xff0c;实在是一件尴尬的事情&#xff0c;今天我们聊聊如何实现远程服务器的文件上传与下载。 作为一个程序员&#xff0c;如果不知道如何进行远程服务器的文件上传与下载&#…

Module build failed: Error: Cannot find module ‘gifsicle‘

问题描述&#xff1a; build Cannot find module ‘gifsicle’ 解决方案&#xff1a; 第一步&#xff1a;卸载image-webpack-loader 第1种方式&#xff1a;删除项目中的image-webpack-loader npm uninstall image-webpack-loader第2种方式&#xff1a;删除node_modules中的im…

高德AR驾车导航解决方案

简介&#xff1a; 高德从2018年首创了车载AR导航后&#xff0c;已经先后在后视镜、智能车盒、前装整车厂、后装车机产品、行车记录仪等众多场景落地应用&#xff0c;搭建了非常完整的AR导航生态。 日前&#xff0c;高德地图最新发布了v10.60新版本&#xff0c;上线了手机端的A…

第 11 个“世界备份日”刚过,《Veeam 2021 数据保护报告》为你解读全球数据备份现状

2011 年 3 月 31 日&#xff0c;美国网络社区 Reddit 发起“世界备份日&#xff08;World Backup Day&#xff09;”倡议活动&#xff0c;号召人们做好数据安全备份。于是每年愚人节前一天成为“世界备份日”&#xff0c;口号很有趣 Don’t Be An April Fool,Backup Your Data&…