千亿流量并发治理!Alibaba实战Sentinel笔记,为微服务保驾护航

简介: 随着微服务的发展及DDD领域驱动设计的兴起,越来越多的企业开始使用微服务架构。无论是项目重构,还是新项目的开发,即使项目初期没有多大的流量,但从长远考虑,企业也基本会优先使用微服务架构。但“鱼和熊掌不可兼得”,项目微服务化在提升开发效率及降低后期维护成本的同时,也加大了服务部署运维及问题排查的难度,并且容易导致服务崩溃出现级联效应,也就是“服务雪崩”。

Sentinel的使用前景

随着微服务的发展及DDD领域驱动设计的兴起,越来越多的企业开始使用微服务架构。无论是项目重构,还是新项目的开发,即使项目初期没有多大的流量,但从长远考虑,企业也基本会优先使用微服务架构。但“鱼和熊掌不可兼得”,项目微服务化在提升开发效率及降低后期维护成本的同时,也加大了服务部署运维及问题排查的难度,并且容易导致服务崩溃出现级联效应,也就是“服务雪崩”。

为了应对微服务化带来的难题,一批微服务组件与应用涌现出来,如辅助问题排查的分布式调用链追踪探针、简化部署运维的Kubernetes,以及本书介绍的熔断器组件等。

Sentinel是熔断器的实现组件之一,具有扩展性强、对应用性能影响小、配置灵活,支持异步链路与响应式项目等特点,因此Sentinel很快在国内流行起来,成为国内众多开发者和架构师首选的熔断器组件。

本书内容丰富,概念通俗易懂,让读者不仅能够深入理解Sentinel的实现原理,还能够从Sentinel中学习到一些技术,如Java SPI的应用、责任链设计模式的应用、高并发性能优化、滑动窗口的实现、匀速限流与冷启动算法、信号量隔离的目的与实现等。

本书适合中高级Java开发者,也适合微服务项目开发者或组织

文章内容可以过多,限于文章篇幅,没办法为大家展示全部内容,有感兴趣想要获取学习的朋友,可以点击此处来获取就可以了!

第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日记文件中
  • 如何持久化资源指标数据

文章展示到这里就结束了,需要获取学习的朋友,可以点击此处来获取就可以了!

相关文章
|
5月前
|
Java UED Sentinel
微服务守护神:Spring Cloud Sentinel,让你的系统在流量洪峰中稳如磐石!
【8月更文挑战第29天】Spring Cloud Sentinel结合了阿里巴巴Sentinel的流控、降级、熔断和热点规则等特性,为微服务架构下的应用提供了一套完整的流量控制解决方案。它能够有效应对突发流量,保护服务稳定性,避免雪崩效应,确保系统在高并发下健康运行。通过简单的配置和注解即可实现高效流量控制,适用于高并发场景、依赖服务不稳定及资源保护等多种情况,显著提升系统健壮性和用户体验。
109 1
|
28天前
|
监控 API 开发者
Sentinel:微服务的全能守护
Sentinel 是阿里巴巴开源的一款轻量级流量控制和熔断降级框架。它通过设置流量控制、熔断降级和系统保护规则,确保微服务在高并发场景下稳定运行。Sentinel 提供丰富的功能、实时监控和灵活的集成方式,适用于各种分布式系统。
124 0
|
29天前
|
监控 Java Sentinel
Hystrix 与 Sentinel 大比拼:微服务稳定性工具谁更优?
Hystrix 和 Sentinel 是用于微服务架构中保护服务稳定性和可靠性的工具,主要实现服务熔断、限流、降级等功能。Hystrix 侧重于熔断器模式和服务隔离,通过线程池或信号量隔离服务,防止故障扩散;Sentinel 则更全面,涵盖流量控制、熔断降级和系统自适应保护,适用于高并发场景,并提供实时监控和灵活的策略调整。两者设计理念不同,Hystrix 适合中小规模应用,而 Sentinel 更适合大规模高并发系统。
39 0
|
28天前
|
存储 监控 供应链
微服务拆分的 “坑”:实战复盘与避坑指南
本文回顾了从2~3人初创团队到百人技术团队的成长历程,重点讨论了从传统JSP到前后端分离+SpringCloud微服务架构的演变。通过实际案例,总结了微服务拆分过程中常见的两个问题:服务拆分边界不清晰和拆分粒度过细,并提出了优化方案,将11个微服务优化为6个,提高了系统的可维护性和扩展性。
47 0
|
2月前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
107 4
|
4月前
|
Dubbo Java 应用服务中间件
微服务框架Dubbo环境部署实战
微服务框架Dubbo环境部署的实战指南,涵盖了Dubbo的概述、服务部署、以及Dubbo web管理页面的部署,旨在指导读者如何搭建和使用Dubbo框架。
347 17
微服务框架Dubbo环境部署实战
|
4月前
|
运维 持续交付 API
深入理解并实践微服务架构:从理论到实战
深入理解并实践微服务架构:从理论到实战
165 3
|
4月前
|
监控 Java Nacos
SpringCloud基础5——微服务保护、Sentinel
sentinel、雪崩问题、流量控制、隔离和降级、授权规则、规则持久化
SpringCloud基础5——微服务保护、Sentinel
|
4月前
|
运维 监控 持续交付
深入浅出:微服务架构的设计与实战
微服务,一个在软件开发领域如雷贯耳的名词,它代表着一种现代软件架构的风格。本文将通过浅显易懂的语言,带领读者从零开始了解微服务的概念、设计原则及其在实际项目中的运用。我们将一起探讨如何将一个庞大的单体应用拆分为灵活、独立、可扩展的微服务,并分享一些实践中的经验和技巧。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和深入的理解。
94 3
|
4月前
|
自然语言处理 Java 网络架构
解锁跨平台微服务新纪元:Micronaut与Kotlin联袂打造的多语言兼容服务——代码、教程、实战一次打包奉送!
【9月更文挑战第6天】Micronaut是一款轻量级、高性能的Java框架,适用于微服务开发。它支持Java、Groovy和Kotlin等多种语言,提供灵活的多语言开发环境。本文通过创建一个简单的多语言兼容服务,展示如何使用Micronaut及其注解驱动特性实现REST接口,并引入国际化支持。无论是个人项目还是企业应用,Micronaut都能提供高效、一致的开发体验,成为跨平台开发的利器。通过简单的配置和代码编写,即可实现多语言支持,展现其强大的跨平台优势。
67 3