千亿流量并发治理!Alibaba实战Sentinel笔记,为微服务保驾护航
Sentinel的使用前景
随着微服务的发展及DDD领域驱动设计的兴起,越来越多的企业开始使用微服务架构。无论是项目重构,还是新项目的开发,即使项目初期没有多大的流量,但从长远考虑,企业也基本会优先使用微服务架构。但“鱼和熊掌不可兼得”,项目微服务化在提升开发效率及降低后期维护成本的同时,也加大了服务部署运维及问题排查的难度,并且容易导致服务崩溃出现级联效应,也就是“服务雪崩”。
为了应对微服务化带来的难题,一批微服务组件与应用涌现出来,如辅助问题排查的分布式调用链追踪探针、简化部署运维的Kubernetes,以及本书介绍的熔断器组件等。
Sentinel是熔断器的实现组件之一,具有扩展性强、对应用性能影响小、配置灵活,支持异步链路与响应式项目等特点,因此Sentinel很快在国内流行起来,成为国内众多开发者和架构师首选的熔断器组件。
本书内容丰富,概念通俗易懂,让读者不仅能够深入理解Sentinel的实现原理,还能够从Sentinel中学习到一些技术,如Java SPI的应用、责任链设计模式的应用、高并发性能优化、滑动窗口的实现、匀速限流与冷启动算法、信号量隔离的目的与实现等。
本书适合中高级Java开发者,也适合微服务项目开发者或组织。
文章内容可以过多,限于文章篇幅,没办法为大家展示全部内容,有感兴趣想要获取学习的朋友,麻烦帮忙点赞转发一下,后台私信【111】,获取免费下载方式。
第1章 基础知识
本章主要介绍服务降级、限流、熔断、流量效果控制等概念,解读Sentinel的一些特性,并通过对Sentinel性能压测介绍Sentinel的性能表现。
服务降级、限流、熔断、流量效果控制
Sentinel的特性
Sentinel性能压测
第2章 了解概念与核心 类
本章开始探索Sentinel。在学习Sentinel源码之前,我们需要先了解Sentinel的一些概念及核心类,这些概念及核心类也会贯穿本书。
了解Sentinel的一些概念
资源指标数据统计相关类
调用链上下文与入口类
处理器插槽:ProcessorSlot
第3章 了解整体工作流程
通过第2章的学习,我们已经了解了Sentinel的一些核心概念及核心类,本章将介绍Sentinel的整体工作流程。为了更好地理解Sentinel的整体工作流程,本章额外补充了一个知识点——SPI机制。
SPI在Sentinel中的应用
责任链模式在Sentinel中的应用
Sentinel的整体工作流程分析
第4章 资源指标数据统计
QPS、TPS和RT是衡量服务性能的指标,如衡量网站、数据库的性能。资源指标数据统计是指资源统计不同指标的数据。本章将介绍Sentinel统计资源指标数据的实现原理。
基于滑动窗口实现资源指标数据统计
资源指标数据统计全解析
第5章 限流
限流一般指的是按QPS/T hreads限流,除QPSThreads限流外,还有热点参数限流、集群限流。本章主要分析Sentinel限流功能的实现原理及几种流量效果控制器的实现原理。
限流功能实现原理
流量效果控制
第6章 熔断降级
在微服务项目中,一个微服务常常需要调用内部其他服务的接口,即便是单体架构项目,也难免会调用一些第三方API、访问数据库等。使用熔断降级功能可以有效避免因外部因素导致服务器自身不可用甚至进程挂掉的情况发生。也许有些项目并不需要限流功能,但熔断降级功能却是微服务项目不可或缺的。
旧版熔断降级
新版熔断降级
熔断器
第7章 授权与系统自适应
授权与系统自适应功能是Sentinel在实现限流与熔断降级功能之后提供的扩展性功能。授权功能用于限制访问来源,而系统自适应功能可作为限流、熔断降级功能的兜底解决方案。
授权功能的实现原理
系统自适应功能的实现原理
第8章 实现开关降级
在电商项目中,开关降级是每个微服务都必须支持的一项功能,主要用于在促销活动期间、每日流量高峰期间、主播带货期间关闭一些无关紧要的功能,降低数据库的压力以换取更高的TPS.
使用AOP实现开关降级
扩展Sentinel实现开关降级
第9章 动态数据源
Sentinel为每种规则提供一个规则管理器,而规则管理器管理的规则只存在于内存中,在应用重启后,规则会丢失。每个规则管理器都会提供loadRules API,用于在系统运行时为规则管理器注册或更新规则,但是loadRules只接收内存状态的规则对象,如何存储规则由我们自行实现。
实现规则动态配置的两种方式
使用Redis动态数据源
动态配置的实现原理
基于Spring Cloud动态配置实现动态数据源
第10章 适配主流框架
为了节省这些步骤,Sent inel提供了对主流框架的适配,如适配Spring M VC、WebFlux、Dubbo、API Gateway等框架,在Sentinel源码之外,Alibaba的
spring-cloud-starter-alibaba-sentinel也为Sentinel提供了与OpenFeign框架整合的支持。
适配Spring MVC框架
适配OpenFeign框架
适配Dubbo框架
注解切面
第11章 热点参数限流
参数限流是指根据方法调用传递的参数实现限流,或者根据接口的请求参数限流,而热点参数限流是指对访问频繁的参数限流。
热点参数限流功能的实现
流量效果控制
第12章 集群限流
由于请求倾斜的存在,分发到集群中每个节点上的流量不可能是均匀的,因此单机限流无法实现精确地限制整个集群的整体流量,从而造成在总流量没有达到阈值的情况下一些机器就开始限流。
本地限流与集群限流
集群限流的两种模式
集群限流功能的实现
第13章 异步调用链的支持
RPC框架和Web框架都将朝着异步化的方向发展,许多主流的框架或组件也都适配了主流的异步框架,如WebFlux。Sentinel也不例外,早在Sentinel— 0.2.0就引入了异步调用链的支持。本章将介绍Sentinel支持异步调用链的实现原理,以及适配响应式编程库Reactor和WebFlux框架的实现原理。
Sentinel异步调用链的支持
适配Reactor框架的实现原理
适配WebFlux框架的实现原理
第14章 Sentinel Dashboard
Sentinel Dashboard提供的功能大致可以分为3类:资源调用链(簇点链路)展示、规则配置和实时指标数据展示。
资源指标数据收集的实现原理
如何将资源指标数据输出到metrics日记文件中
如何持久化资源指标数据
文章展示到这里就结束了,需要获取学习的朋友,请帮忙点赞转发下,后台私信【111】,获取完整内容免费下载方式。