当前位置:网站首页>看到这个应用上下线方式,不禁感叹:优雅,太优雅了!
看到这个应用上下线方式,不禁感叹:优雅,太优雅了!
2022-08-08 14:53:00 【51CTO】
摘要: 本文讲述基于Sermant Agent接入的SpringCloud应用实现优雅上下线功能。
什么是优雅上下线
试想一个A场景,系统中运行着一个消费者(客户端)和两个服务提供者(服务端),消费者可负载均衡调用服务提供者。假设某个服务提供者因业务更新或其他场景需要滚动升级,若此时存在大量并发流量,便会出现以下问题:
- 大量TCP连接因服务提供者升级下线操作,导致大量请求错误。
- 由于消费者(客户端)存在注册表延迟刷新的问题,后续流量依旧会分配到已经下线的提供者,导致大量请求错误。
以上便是一个典型的“不优雅”场景。
于是,为了规避诸如此类的问题,服务优雅上下线应运而生,主要针对服务的重启、上线、下线等操作提供保护。
服务运维常见问题
- 服务自身存在大量懒加载机制(例如负载均衡初始化),在服务刚上线时,因并发流量请求涌入,导致大量请求同时进行懒加载,以至于请求响应慢,线程阻塞,甚至最终导致服务崩溃。
- 服务无法做到优雅下线,就如前面提到的A场景,服务端下线而客户端服务无法及时感知,导致流量流入已下线的实例,从而丢失大量流量。
优雅上下线提供了什么样的能力
服务端预热能力
服务端预热是基于客户端实现的,当流量进入时,Sermant Agent会动态调整流量,根据服务的预热配置,对流量进行动态分配。对于开启服务预热的实例,在刚启动时,相对于其他已启动的实例,分配的流量会更少,流量将以曲线方式随时间推移增加直至与其他实例近乎持平。目的是采用少流量对服务实例进行初始化,防止服务崩溃。
优雅下线能力
优雅下线结合服务端与客户端实现,主要实现点如下:
- 反注册
当服务端被要求下线时,Sermant Agent会动态根据当前注册中心进行反注册操作,及时刷新注册表,然而即使注册表已刷新,但是上游消费端因缓存问题却无法及时感知,从而引入下线通知。
- 下线通知
进行反注册后,Sermant Agent会采用接口通知与响应通知的方式告知所有上游,并主动同步刷新provider实例缓存。
- 黑名单
为保证流量不再调用已下线实例,引入黑名单机制。在客户端接收到下线通知后,自动将下线实例拉入黑名单,在执行流量分配时,自动过滤黑名单(已下线)实例,不再调用已下线实例。说明:黑名单采用定时刷新机制,默认为2分钟,即针对同一个IP实例,标记下线后,等待2分钟即可重新发现。
- 流量统计
为确保当前请求已全部处理完成,在服务下线时,Sermant Agent会尝试等待30s(可配置),定时统计和判断当前实例请求是否均处理完成,处理完成后最终下线。
如何使用优雅上下线能力
虚机场景
参考 虚拟机场景使用优雅上下线能力
容器场景
参考 CCE场景使用优雅上下线能力
基于Demo验证优雅上下线能力
以Nacos demo应用为例,通过Sermant Agent接入CSE,并在CCE集群上验证优雅上下线功能,参考 自定义优雅上下线。
边栏推荐
- 超详细的最新版 2022.2 kali 安装步骤及拍摄快照的方法
- 基于Qt设计的课堂考勤系统(采用RDS for MySQL云数据库 )【华为云至简致远】
- [Small Coder Study Room] [NOI Online 2020-2 Beginner Group] Finished: Abominable precision will make you burnt
- bandanas Kerchief头巾是何含义?
- 什么是幂等性
- 深度学习中的常见正则化方法(Regularization)以及优化器中的WeightDecay参数详解
- 本机Redis Desktop Manager连不上vmware的redis
- 创建二维数组
- 「复盘」面试BAMT回来整理398道高频面试题,助你拿高薪offer
- 兆骑科创创业赛事活动举办平台,投融资对接,线上直播路演
猜你喜欢
星起航跨境—跨境电商进入3.0时代,卖家迎来全新机遇
【Kaggle实践记录】电商图片分类
Tungsten Fabric SDN — OpenStack 与 Kubernetes 异构集群统一 SDN 方案
Notes on the development of kindergarten enrollment registration system based on WeChat applet
浏览器跨域方案,适用于本地调试接口(超简单)
Shell三剑客之sed命令详解
投资一个约20台桩的充电站需要多少钱?多久可以实现盈利?
bandanas Kerchief头巾是何含义?
Elegantly detect and update web applications in real time
「复盘」面试BAMT回来整理398道高频面试题,助你拿高薪offer
随机推荐
shell------常用小工具,sort,uniq,tr,cut
Introduction to Recurrent Neural Network (RNN)
shell三剑客-----awk命令
腾讯超大 Apache Pulsar 集群的客户端性能调优实践
HMS Core Analysis Service Intelligent Operation Version 6.5.1 Launched
兆骑科创赛事服务平台对接,海内外高层次人才引进
[Small Coder Study Room] [NOI Online 2020-2 Beginner Group] Finished: Abominable precision will make you burnt
Talking about the underlying data structure of Redis
幂等性~~
本机Redis Desktop Manager连不上vmware的redis
UOJ#748-[UNR #6]机器人表演【dp】
有了国产 DevOps 工具 ,还怕数字化转型成本高?
Tungsten Fabric SDN — OpenStack 与 Kubernetes 异构集群统一 SDN 方案
H5不同屏幕大小显示不同的文字大小图片大小
小程序轮播图实现由远及近动画
Is it safe to open an account online now?Which securities to choose for securities account opening?
什么是发饰hair accessories?
CS231n:6 训练神经网络(三)
【小码匠自习室】ABC258-A 代码写的啰嗦了
我凭借这份pdf成功拿到了阿里,腾讯,京东等六家大厂offer