千亿流量并发治理!Alibaba 实战 Sentinel 笔记,为微服务保驾护航
随着微服务的发展及 DDD 领域驱动设计的兴起,越来越多的企业开始使用微服务架构。
无论是项目重构,还是新项目的开发,即使项目初期没有多大的流量,从长远考虑,企业也基本会优先使用微服务架构。但“鱼和熊掌不可兼得”,项目微服务化在提升开发效率及降低后期维护成本的同时,也加大了服务部署运维及问题排查的难度,并且容易导致服务崩溃出现级联效应,也就是“服务雪崩”。
为了应对微服务化带来的难题,一批微服务组件与应用涌现出来,如辅助问题排查的分布式调用链追踪探针、简化部署运维的 Kubernetes,以及本书介绍的熔断器组件等。
Sentinel 是熔断器的实现组件之一,具有扩展性强、对应用性能影响小、配置灵活,支持异步链路与响应式项目等特点,因此 Sentinel 很快在国内流行起来,成为国内众多开发者和架构师首选的熔断器组件。
本书内容丰富,概念通俗易懂,让读者不仅能够深入理解 Sentinel 的实现原理,还能够从 Sentinel 中学习到一些技术,如 Java SPI 的应用、责任链设计模式的应用、高并发性能优化、滑动窗口的实现、匀速限流与冷启动算法、信号量隔离的目的与实现等。
目录概览
限于文章篇幅原因,只能以截图的形式展示出来,有需要的小伙伴 点击这里凭本文截图即可获取!
内容概览
第 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 日记文件中
如何持久化资源指标数据
限于文章篇幅原因,就展示到这里了,有需要的小伙伴 点击这里凭本文截图即可获取!
评论