去芜存菁!微服务高并发流量最佳处理方案,都总结进了这份笔记

本文深入浅出地介绍了微服务核心概念,以Sentinel为例,详细解析了服务降级、限流、熔断等机制的实现原理。通过实例和类比,帮助读者掌握微服务稳定性的关键技术和 Sentinel 的内部工作机制。涵盖了Sentinel的动态数据源、集群限流、异步调用链支持等多个高级主题,是微服务治理的实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随着微服务生态的成熟,采用微服务越来越容易,这不是说,为了找份工作,你要成为微服务专家,但至少,理解基本原理还是有好处的。

事实上,关于微服务的基础知识并不难理解。最大的问题是,与此相关的大部分资料都是为了哗众取宠,而不是为了让读者掌握相关知识。

另一个原因是,微服务没有一个准确而具体的定义。于是就出现了大量语义上存在重叠的定义和术语,让试图了解微服务的人陷入困惑。

在这篇文章中,小编将去芜存菁,重点介绍微服务的核心概念。将使用各种真实世界的例子和类比,帮助你理解相关的抽象概念和思想!

第1章 基础知识

通过本章的学习,读者对服务降级、限流、熔断、流量效果控制这些概念有了基本的了解,也了解了Sentinel的一些特性,学习了如何使用基础测试工具JMH,并使用JMH对Sentinel进行了简单场景下的性能压测。本书主要分析Sentinel的实现原理,不对入门使用做介绍。

第2章 了解概念与核心类

通过本章的学习,读者应对Sentinel的一些概念、核心类及Sentinel提供的ProcessorSlot有了一定的了解。资源指标数据的统计及每个ProcessorSlot可实现的功能等内容将会在后续章节详细分析

第3章 了解整体工作流程

在处理一次请求的过程中,Sentinel会为调用链上的每个资源都创建一个CtEntry实例,每个CtEntry实例引用资源对应的ProcessorSlotChain。CtEntry维护双向链表的目的:在下一个资源方法执行结束时,能够将Context实例引用的CtEntry实例回退为引用上一个资源方法的CtEntry实例,以便随时通过Context实例获取当前资源的ProcessorSlotChain。

第4章 资源指标数据统计

QPS、TPS和RT是衡量服务性能的指标,如衡量网站、数据库的性能。资源指标数据统计是指资源统计不同指标的数据。本章将介绍Sentinel统计资源指标数据的实现原理。

第5章 限流

本章主要分析了Sentinel限流功能的实现原理、can pass check全过程,以及流量效果控制的实现原理,同时详细地介绍了Sentinel实现匀速限流与冷启动效果所采用的算法。

第6章 熔断降级

本章主要分析Sentinel 1.7.x与Sentinel 1.8.0的熔断降级功能的实现原理,并详细介绍了使用熔断器实现熔断降级功能的实现原理,以及Sentinel提供的两种熔断器的实现原理。

第7章 授权与系统自适应

本章主要介绍了Sentinel黑白名单授权功能的实现原理,以及系统自适应功能的实现原理,并讲解了Sentinel如何获取系统的平均负载与CPU使用率

第8章 实现开关降级

本章主要介绍如何使用Spring AOP实现开关降级,以及扩展Sentinel实现开关降级。

使用Spring AOP实现开关降级的缺点是配置不灵活:如果让一个开关控制多个接口,则无法实现动态为开关添加或移除其管理的接口;如果一个开关仅控制一个接口,则需要多个开关配置,不易于管理。

在不使用Sentinel的项目中,使用Spring AOP实现开关降级是一种不错的方式,而如果在项目中已经使用了Sentinel,建议采用扩展Sentinel实现开关降级,并结合动态配置,实现更为灵活的开关降级。

第9章 动态数据源

本章主要介绍了如何使用Sentinel提供的动态数据源扩展功能,并分析了Sentinel实现规则是动态配置的原理。在了解Sentinel动态数据源的实现原理后,也介绍了如何利用Kubernetes提供的ConfigMap资源存储规则配置,以及基于SpringCloud动态配置实现动态数据源。

第10章 适配主流框架

本章主要分析了Sentinel适配SpringMVC框架、OpenFeign框架和Dubbo框架的实现原理。Sentinel适配各种主流框架的方式:一是通过框架提供的方法拦截器/过滤器注入Sentinel保护资源的逻辑;二是通过拦截主流框架的入口方法注入Sentinel保护资源的逻辑。适配模块在简化使用步骤的同时省去了大量重复代码的编写。

第11章 热点参数限流

参数限流是指根据方法调用传递的参数实现限流,或者根据接口的请求参数限流,而热点参数限流是指对访问频繁的参数限流。

在电商场景中,每位顾客购买的商品不同,有主播带货的商品下单流量较大,而没有主播带货的商品相对来说下单流量较少。因为商品数量有限,每个下单请求都能成功是不太可能的,所以如果能够根据客户端请求传递的商品ID实现限流,将流量控制在商品的库存总量左右,并且使用QPS限流等进行兜底,即可将接口通过的有效流量最大化。

第12章 集群限流

由于请求倾斜的存在,分发到集群中每个节点上的流量不可能是均匀的,因此单机限流无法实现精确地限制整个集群的整体流量,从而造成在总流量没有达到阈值的情况下一些机器就开始限流。

第13章 异步调用链的支持

本章重点分析了Sentinel支持异步调用链的实现原理,并通过介绍响应式编程框架Reactor的同步订阅工作流程讲解了Reactor框架的Context实例传递的实现原理,然后以此为基础分析了Sentinel适配Reactor框架的实现原理。

第14章 Sentinel Dashboard

Sentinel Dashboard提供的功能大致可以分为3类:资源调用链(簇点链路)展示、规则配置和实时指标数据展示。

Sentinel承接了阿里巴巴集团近10年的“双十一”促销活动流量的核心场景,截至笔者写作本书时已有15.2k的Star(Sentinel在GitHub上的Star数)。Sentinel以流量为切入点,通过流量控制、熔断降级、系统负载保护等多种服务降级方式保护服务的稳定性,并已提供对多种主流框架的适配,如SpringCloud、Dubbo。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值