如何轻松应对偶发异常(3)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,182元/月
简介: 如何轻松应对偶发异常

如何轻松应对偶发异常


在回顾了一下 MSE 是如何做到全面消除变更态风险之后。我们来看一下 MSE 微服务治理在三月份新上线的这些功能,如何帮助大家轻松应对偶发异常。

我们做了大致的总结和归类,将偶发异常的情况分为了两部分:异常流量和不稳定服务依赖。

image.png

接下来我们将面向这两个大类下五个小类的场景,来阐述如何借助 MSE 微服务治理三月份发布的新功能去解决这些偶发异常的。


接口限流

首先我们看一下激增流量这一块。拿一个具体的场景来说,业务方精心准备了一个大促活动,活动非常火爆,在活动开始的一瞬间,远远超过系统承载预期的用户进来抢购秒杀,如果没有微服务治理能力,服务可能由于扛不住流量直接被打挂,甚至在重启的过程还不断被打挂。精心准备的活动由于系统宕机导致效果非常差,在遇到难得的业务爆发式增长机会时,却因为应用的宕机错失了爆发的机会。

在这个场景下,可以借助 MSE 的流控能力对关键接口配置流控规则保护应用整体的可用性。只让容量范围内的请求被处理,超出容量范围外的请求被拒绝,相当于这是一个安全气囊的作用。

image.png

如上图所示, /a 这个接口是我们应用的关键接口,我们识别到单机阈值是 200 后,配置上流控防护规则,使得这个关键接口最大的通过 QPS 是 200,超出阈值的流量会直接被拒绝,从而保护应用整体的可用性。


精准限流

接下来我们再看一下精准限流,拿一个具体的场景来说,由于在配置优惠活动的时候没有配置好最大次数,或者存在规则上的漏洞。在被黑产发现后不断地进行在刷单,业务损失严重。在这个场景下,我们可以借助 MSE 的精准限流能力实现防黑产刷单。

MSE 的精准限流可以在 API 的维度基础上,基于流量的特征值来进行限流,比如根据调用端的 IP,参数中的某一个参数的值,或者说 HTTP 请求里 header 的特征等。

image.png

如上图所示,当我们识别到黑产用户的特征之后,可以根据 header 里面 key 为 user-id 的值来进行精准的业务限流,这里配置的规则为每天只能通过一次,也就意味着黑产流量被识别到之后,一天内超出一次的调用都会被拒绝,这样就能有效地防止黑产刷单保护业务。


并发隔离

第三部分是并发隔离,拿一个具体的场景来说,假设我们的应用依赖了一个第三方的支付渠道,但是因为渠道本身的原因出现了大量的慢调用,进而导致了应用全部的线程池都被调用该支付渠道的调用占满了,没有线程去处理其他正常的业务流程。而且这个第三方的支付其实只是我们其中的一个支付渠道。我们其他的支付渠道都是正常的。

MSE 可以对应用作为客户端的流量进行并发隔离,限制同时调用这个第三方支付渠道的最大并发数,从而留下充足的资源来处理正常的业务流量。

image.png

如上图所示,我们配置了并发数阈值是 5,每个应用节点最多同时存在 5个并发去调用第三方支付服务,当调用数超过了 5 的时候,请求在发起前就会直接被拒绝。通过并发隔离,把不稳定的支付渠道隔离到有限的影响面,而不会挤占其他正常支付渠道的资源,这样来保障我们一个业务的稳定性。


SQL 防护

第四部分是 SQL 防护,拿一个具体的场景来说,应用更新后出现了慢 SQL 的语句,处理的时间比较长的,这个时候需要快速定位慢 SQL ,然后防止我们这个应用去被这个慢 SQL 拖垮了。或者在项目的初期可能没有对这个 SQL 的性能做一个很好的考量,然后随着业务的发展,业务量级的增加,然后导致线上遗留老 SQL 逐渐腐化,成为了一个慢 SQL。

MSE 的数据库治理功能,可以自动统计应用的 SQL语句,以及 SQL 的 QPS、平均耗时 和最大并发等数据,并针对于 SQL 进行一个防护。

image.png

如上图所示,在平均耗时中找到慢 SQL,点击右边的 SQL 防护按钮,通过配置并发隔离规则来进行保护应用不被慢 SQL 拖垮。


服务熔断

最后我们再来看一下服务熔断。拿一个具体的场景来说,在业务高峰期查询积分服务达到性能瓶颈,导致响应速度慢、报错增多。但是它并不是一个关键的服务,这时不能因为无法查询积分余额而导致整个流程都无法进行。正确的逻辑应该是积分余额暂时不显示,但是除此之外其他主流程都能正常完成。

MSE 的服务熔断功能,可以很好地解决上述的问题。MSE 支持通过慢调用的比例,或者错误数去衡量一个服务是否处于正常状态,当识别到服务已经不正常的时候就自动触发熔断。熔断后消费者不会再去调用出问题的服务了,而是直接返回 Mock 值。

image.png

如上图所示,配置当异常比例超过 80% 的时候自动触发熔断,不再去调用不正常的服务。一方面消费者不再去调用不正常的弱依赖服务,不会因为弱依赖的问题导致主流程不正常。另一方面,熔断也给了不稳定的下游一些喘息的时间,让它有机会去恢复。

我们最后再来总结一下 MSE 微服治理是如何助您轻松应对线上偶发异常的,针对我们刚才总结的这五类场景:

  1. 当遇到激增流量的时候,我们应该使用接口限流。
  2. 当我们遇到黑产刷单等问题的时候,我们应该使用精准限流。
  3. 当第三方服务不响应,占满线程池的时候,我们应该使用并发隔离。
  4. 当应用存在慢 SQL 的时候,我们应该使用 SQL 防护。
  5. 当应用的弱依赖出现异常,影响我们核心业务流程的时候,我们应该使用服务熔断。

通过这五个功能,MSE 微服务治理可以助您去轻松去应对上述场景的一些偶发异常,后续 MSE 也会持续不断地去探索和拓展更多场景,更全面地保障您应用的运行时的稳定性。


结语

MSE 微服务治理致力于帮用户低成本构建安全、稳定的微服务。由于篇幅原因,更多的功能就不在这里给大家详细介绍了,关于 MSE 更多的详情,读者可以通过查看 MSE 帮助文档的了解详情。

目录
相关文章
|
存储 NoSQL 关系型数据库
数据库的演变与未来:技术趋势与行业应用
一、引言 数据库作为信息技术的核心组成部分,承载着数据的存储、管理和分析功能
|
关系型数据库 MySQL Linux
Linux 安装 mysql【使用yum源进行安装】
这篇文章介绍了在Linux系统中使用yum源安装MySQL数据库的步骤,包括配置yum源、安装MySQL服务、启动服务以及修改root用户的默认密码。
Linux 安装 mysql【使用yum源进行安装】
|
存储 缓存 分布式计算
Hadoop配置文件core-site.xml
【7月更文挑战第17天】
1043 2
Hadoop配置文件core-site.xml
|
数据采集 搜索推荐 机器人
Python 神器:wxauto 库
Python 神器:wxauto 库
2853 1
|
存储 Java 测试技术
阿里巴巴java开发手册
这篇文章是关于阿里巴巴Java开发手册的整理,内容包括编程规约、异常日志、单元测试、安全规约、MySQL数据库使用以及工程结构等方面的详细规范和建议,旨在帮助开发者编写更加规范、高效和安全的代码。
|
前端开发
前端学习笔记202306学习笔记第三十八天-Es6-块级作用域2 原
前端学习笔记202306学习笔记第三十八天-Es6-块级作用域2 原
158 0
|
文字识别 小程序 数据安全/隐私保护
9款文字识别(OCR)工具推荐!涵盖移动端、网页端、PC端,满足您的所有需求!
9款文字识别(OCR)工具推荐!涵盖移动端、网页端、PC端,满足您的所有需求!
3358 0
|
弹性计算 Ubuntu Linux
2024年Steam游戏【幻兽帕鲁/Palworld】联机主机怎么搭建?
Steam游戏《幻兽帕鲁》是新上线的一款开服世界生存制作游戏,上线短短5天时间,就卖出了700万份,同时在线人数最高达到180万人,创下了Steam历史榜单第二名的好成绩。预期之外的爆火使幻兽帕鲁官方服务器正面临大量玩家涌入而导致的服务器网络拥堵问题,很多玩家反馈服务器连接不上或是会卡顿的情况。 官方表明游戏会尽快优化并把该问题解决。好在幻兽帕鲁这款游戏支持自建多人联机服务器,官方最高支持32人联机,自建幻兽帕鲁服务器可以修改参数,支持32+人联机游戏,当然人数越多,对服务器配置要求就越高,由于幻兽帕鲁服务端本身存在的问题,非常的吃内存和CPU,经过我们团队的反复测试,32G内存可以8-10
|
SQL 数据采集 JSON
Pandas入门指南:Python中的数据处理与分析
Python的Pandas库是数据科学领域中非常重要的一个库,它使数据清洗和分析工作变得更快更简单。Pandas结合了NumPy的高性能数组计算功能以及电子表格和关系型数据库(如SQL)的灵活数据处理能力。
|
SQL 区块链 数据库

热门文章

最新文章