抗住双十一!实战Alibaba笔记,深度解析阿里微服务亿级流量治理

简介: 随着微服务的发展及DDD领域驱动设计的兴起,越来越多的企业开始使用微服务架构。为了应对微服务化带来的难题,一批微服务组件与应用涌现出来,如辅助问题排查得分布式调用链追踪探针、简化部署运维的Kubernetes,以及本书介绍的熔断器组件等。

随着微服务的发展及DDD领域驱动设计的兴起,越来越多的企业开始使用微服务架构。为了应对微服务化带来的难题,一批微服务组件与应用涌现出来,如辅助问题排查得分布式调用链追踪探针、简化部署运维的Kubernetes,以及本书介绍的熔断器组件等。

熔断器组件用于实现服务的自我保护,一般都具备限流、熔断功能。限流用于限制流量超过服务的临界点,避免突发流量导致服务崩溃;而熔断用于保护自身不受下游服务的影响,在感知到下游服务不稳定时自动断开请求,在下游服务恢复时再恢复请求。

并非流量大时才需要熔断器。一方面,微服务的调用错综复杂,若一个服务不可用,则有很大的概率影响到其周边服务,使其不可用,并且这种现象就像病毒一样具有扩散性,因此时需要使用熔断器;另一方面,若项目对接一些第三方的接口,则在无法预估第三方接口的最大QPS及稳定性的情况下,添加熔断器能保证服务自身稳定运行。

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

本书读者对象

❑ 正在进行微服务项目的开发者或组织

❑ 对Sentinel工作原理尚未了解的开发者

❑ 在响应式编程项目中对Sentinel感到困惑的开发

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

第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。

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

相关文章
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `<appender>` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `<logger>` 和 `<root>` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
3118 1
|
人工智能 API 开发者
HarmonyOS Next~鸿蒙应用框架开发实战:Ability Kit与Accessibility Kit深度解析
本书深入解析HarmonyOS应用框架开发,聚焦Ability Kit与Accessibility Kit两大核心组件。Ability Kit通过FA/PA双引擎架构实现跨设备协同,支持分布式能力开发;Accessibility Kit提供无障碍服务构建方案,优化用户体验。内容涵盖设计理念、实践案例、调试优化及未来演进方向,助力开发者打造高效、包容的分布式应用,体现HarmonyOS生态价值。
856 27
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
817 4
JSON数据解析实战:从嵌套结构到结构化表格
|
数据采集 机器学习/深度学习 存储
可穿戴设备如何重塑医疗健康:技术解析与应用实战
可穿戴设备如何重塑医疗健康:技术解析与应用实战
726 4
|
机器学习/深度学习 人工智能 Java
Java机器学习实战:基于DJL框架的手写数字识别全解析
在人工智能蓬勃发展的今天,Python凭借丰富的生态库(如TensorFlow、PyTorch)成为AI开发的首选语言。但Java作为企业级应用的基石,其在生产环境部署、性能优化和工程化方面的优势不容忽视。DJL(Deep Java Library)的出现完美填补了Java在深度学习领域的空白,它提供了一套统一的API,允许开发者无缝对接主流深度学习框架,将AI模型高效部署到Java生态中。本文将通过手写数字识别的完整流程,深入解析DJL框架的核心机制与应用实践。
890 3
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
772 1
|
缓存 监控 搜索推荐
【实战解析】smallredbook.item_get_video API:小红书视频数据获取与电商应用指南
本文介绍小红书官方API——`smallredbook.item_get_video`的功能与使用方法。该接口可获取笔记视频详情,包括无水印直链、封面图、时长、文本描述、标签及互动数据等,并支持电商场景分析。调用需提供`key`、`secret`和`num_iid`参数,返回字段涵盖视频链接、标题、标签及用户信息等。同时,文章提供了电商实战技巧,如竞品监控与个性化推荐,并列出合规注意事项及替代方案对比。最后解答了常见问题,如笔记ID获取与视频链接时效性等。
|
数据可视化 测试技术 API
GraphQL开发工具选型指南:Apipost高效调试与文档生成实战解析
本文深入解析了GraphQL开发工具Apipost在高效调试与文档生成方面的优势,对比同类工具Apifox,突出其可视化界面、实时调试及自动化文档生成等特性。Apipost通过智能代码补全、错误提示等功能简化复杂Query编写,支持一键生成标准化文档,显著提升开发效率和团队协作效果,尤其适合中大型团队应对复杂业务场景。
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
870 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1365 29

推荐镜像

更多
  • DNS