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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
云解析DNS,个人版 1个月
简介: 随着微服务的发展及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。

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

相关文章
|
11天前
|
数据采集 运维 监控
运维笔记:流编辑器sed命令用法解析
运维笔记:流编辑器sed命令用法解析
30 5
|
17天前
|
负载均衡 Java API
深度解析SpringCloud微服务跨域联动:RestTemplate如何驾驭HTTP请求,打造无缝远程通信桥梁
【8月更文挑战第3天】踏入Spring Cloud的微服务世界,服务间的通信至关重要。RestTemplate作为Spring框架的同步客户端工具,以其简便性成为HTTP通信的首选。本文将介绍如何在Spring Cloud环境中运用RestTemplate实现跨服务调用,从配置到实战代码,再到注意事项如错误处理、服务发现与负载均衡策略,帮助你构建高效稳定的微服务系统。
31 2
|
5天前
|
Kubernetes Nacos 微服务
【技术难题破解】Nacos v2.2.3 + K8s 微服务注册:强制删除 Pod 却不消失?!7步排查法+实战代码,手把手教你解决Nacos Pod僵死问题,让服务瞬间满血复活!
【8月更文挑战第15天】Nacos作为微服务注册与配置中心受到欢迎,但有时会遇到“v2.2.3 k8s 微服务注册nacos强制删除 pod不消失”的问题。本文介绍此现象及其解决方法,帮助开发者确保服务稳定运行。首先需检查Pod状态与事件、配置文件及Nacos配置,确认无误后可调整Pod生命周期管理,并检查Kubernetes版本兼容性。若问题持续,考虑使用Finalizers、审查Nacos日志或借助Kubernetes诊断工具。必要时,可尝试手动强制删除Pod。通过系统排查,通常能有效解决此问题。
11 0
|
5天前
|
安全 Nacos 数据库
【技术安全大揭秘】Nacos暴露公网后被非法访问?!6大安全加固秘籍,手把手教你如何保护数据库免遭恶意篡改,打造坚不可摧的微服务注册与配置中心!从限制公网访问到启用访问控制,全方位解析如何构建安全防护体系,让您从此告别数据安全风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其公网暴露可能引发数据库被非法访问甚至篡改的安全隐患。本文剖析此问题并提供解决方案,包括限制公网访问、启用HTTPS、加强数据库安全、配置访问控制及监控等,帮助开发者确保服务安全稳定运行。
13 0
|
5天前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
21 0
|
1月前
|
监控 负载均衡 安全
微服务架构下的服务发现与注册:技术深度解析
【7月更文挑战第20天】服务发现与注册是微服务架构中不可或缺的一部分,它确保了服务间的动态发现和通信。通过选择合适的实现工具和遵循最佳实践,可以构建出高效、可靠、可扩展的微服务系统。随着技术的不断进步,未来我们还将看到更多创新的服务发现与注册解决方案的出现。
|
1月前
|
监控 Java 微服务
Spring Boot微服务部署与监控的实战指南
【7月更文挑战第19天】Spring Boot微服务的部署与监控是保障应用稳定运行和高效维护的重要环节。通过容器化部署和云平台支持,可以实现微服务的快速部署和弹性伸缩。而利用Actuator、Prometheus、Grafana等监控工具,可以实时获取应用的运行状态和性能指标,及时发现并解决问题。在实际操作中,还需根据应用的具体需求和场景,选择合适的部署和监控方案,以达到最佳效果。
|
13天前
|
Go
【go笔记】使用标准库flag解析命令行参数
【go笔记】使用标准库flag解析命令行参数
|
3天前
|
监控 负载均衡 API
从单体到微服务:架构转型之道
【8月更文挑战第17天】从单体架构到微服务架构的转型是一项复杂而系统的工程,需要综合考虑技术、团队、文化等多个方面的因素。通过合理的规划和实施策略,可以克服转型过程中的挑战,实现系统架构的升级和优化。微服务架构以其高度的模块化、可扩展性和灵活性,为业务的持续发展和创新提供了坚实的技术保障。
|
13天前
|
缓存 监控 API
【微服务战场上的神秘守门人】:揭秘API网关的超能力 —— 探索微服务架构中的终极守护者与它的神奇魔法!
【8月更文挑战第7天】随着微服务架构的流行,企业应用被拆分为围绕特定业务功能构建的小型服务。API网关作为微服务间的通信管理核心,对请求进行路由、认证、限流等处理,简化客户端集成并提升用户体验。以电商应用为例,通过Kong部署API网关,配置产品目录等服务的API及JWT认证插件,确保安全高效的数据交互。这种方式不仅增强了系统的可维护性和扩展性,还提供了额外的安全保障。
31 2

热门文章

最新文章

推荐镜像

更多