深入理解

深入理解 Sentinel

吴就业 · 洋葱集团后端架构师

477人已买
详情
目录(21)

随着微服务的流行,很多公司在逐渐将单体架构项目重构为微服务项目。服务的调用错综复杂,如何保护自身不被其它服务打垮,是项目微服务化后重点需要考虑的问题。

作为解决突增流量打垮服务、服务雪崩的有效手段,服务降级不仅是保护内部服务的稳定运行,也能避免因调用第三方接口导致服务奔溃。在有限的硬件条件下、未知的流量增速以及业务复杂度的不断增长,服务降级已成为微服务项目中不可或缺的一部份。

阿里于 2018 年开源微服务断路器组件 Sentinel 是,承接了阿里巴巴近 10 年的双十一大促流量的核心场景,目前已有 13.3k 的 Star。Sentinel 以流量为切入点,实现流量控制、熔断降级、系统负载保护等多种服务降级方式保护服务的稳定性,并已提供对 Spring Cloud、Dubbo 等多种主流框架的适配。

但是很多人在第一次看到 Sentinel 源码时会感到无从下手。特别是关于节点树这些概念的理解,学习者不得不硬着头片去啃源码,结合官方文档去揣摩代码背后的设计思想。

通过这个专栏,你将会获得什么?

  • 深入理解服务降级以及 Sentinel 的各种降级规则
  • 实现基于 Sentinel 的无代码侵入并配置更为灵活的开关降级功能
  • 掌握热点参数限流的实现原理,进而更好地使用该功能
  • 深入理解 Sentinel 匀速流控效果冷启动流控效果的实现原理,以及相关算法

avatar

  • 从一个服务雪崩故事了解服务降级,了解限流、熔断、降级的概念
  • 系统、全面地分析 Sentinel 源码
  • 详细讲解 Sentinel 中的重要概念、数据结构、算法
  • 从代码一步步推出冷启动限流算法的公式,以及 Sentinel 在并发方面的设计理念

专栏大纲

了解 Sentinel 首先要攻克其基于滑动窗口实现的指标数据统计、以及基于责任链模式实现的服务降级过滤器链,在掌握这两点之后,整个 Sentinel 的框架源码将不难理解。Sentinel 实现的冷启动限流效果算法与匀速限流效果的算法算是限流模块中最难理解的一部份,在介绍这部分内容时,我们会结合 Guava 的限流算法分析,降低理解难度。

本专栏内容安排如下:

  • 第一部分(01-03):服务雪崩与服务降级介绍。从一个服务雪崩故事开始了解服务雪崩,进而理解为什么需要服务降级、服务降级的实现方式有哪些,以及为什么选择 Sentinel。
  • 第二部分(04-07):理解 Sentinel 的核心实现原理。我们将了解指标数据的统计与框架的整个骨架,深入理解 Sentinel 中的重要概念和核心类,介绍 Java SPI 在 Sentinel 中的使用。
  • 第三部分(08-15):分析 Sentinel 的核心功能实现原理。内容包括限流的实现与流量效果控制,熔断降级与系统自适应限流、黑白名单与热点参数限流,最后通过自定义 ProcessorSlot 实现开关降级。
  • 第四部分(16-20):Sentinel 对主流框架的适配和扩展功能。我们将了解动态数据源,以及分析 Sentinel 集群限流的实现原理,最后使用 JMH 压测 Sentinel 对应用性能的影响。

适宜人群

  • 想深入了解 Sentinel 的使用者
  • 正在实践微服务的开发者/组织
  • Spring Cloud、Dubbo 微服务初学者
  • 想要了解如何统计接口 QPS 的开发者
  • 想要了解匀速限流、冷启动限流算法的开发者

作者简介

avatar

吴就业,洋葱集团,后端架构师、Java 开发工程师。主要负责新项目的技术选型与架构设计、旧项目的重构,以及订单服务、支付中心的需求开发与维护。在微服务领域有丰富的实战经验,如:广告系统重构的分布式架构设计、支付中心的技术选型与架构设计、基于 xxl-job 二次开发的分布式定时任务调度平台、自研微服务监控系统。喜欢研究优秀的开源框架源码,擅长 Spring Cloud、Dubbo、Netty、Java 虚拟机字节码等技术。

订阅须知

  • 本专栏为图文内容,共计 20 篇。每周更新一篇,预计 2020 年 9 月更新完毕。
  • 本专栏为虚拟产品,一经付费概不退款,敬请谅解。
  • 本专栏可在 GitChat 服务号、App 及网页端 gitbook.cn 上购买,一端购买,多端阅读。

订阅福利

  • 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。
  • 提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。
  • 订阅本专栏后,即可加入 专属交流群,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们的小助手「Linmicc」咨询。(入群方式可查看 第 4 篇 文末说明)。

购买须知

  • 本课程内容版权归北京码字科技发展有限公司独家所有,未经授权,不得转载。
  • 本课程为虚拟产品,一经付费概不退款,敬请谅解。
  • 添加 GitChat 助教俏俏(微信 ID: gitchat2025),加入免费技术交流群。
× 订阅 Java 精选频道
¥ 元/月
订阅即可免费阅读所有精选内容