千億流量并發(fā)治理!Alibaba實(shí)戰(zhàn)Sentinel筆記,為微服務(wù)保駕護(hù)航
Sentinel的使用前景
隨著微服務(wù)的發(fā)展及DDD領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的興起,越來越多的企業(yè)開始使用微服務(wù)架構(gòu)。無論是項(xiàng)目重構(gòu),還是新項(xiàng)目的開發(fā),即使項(xiàng)目初期沒有多大的流量,但從長遠(yuǎn)考慮,企業(yè)也基本會(huì)優(yōu)先使用微服務(wù)架構(gòu)。但“魚和熊掌不可兼得”,項(xiàng)目微服務(wù)化在提升開發(fā)效率及降低后期維護(hù)成本的同時(shí),也加大了服務(wù)部署運(yùn)維及問題排查的難度,并且容易導(dǎo)致服務(wù)崩潰出現(xiàn)級(jí)聯(lián)效應(yīng),也就是“服務(wù)雪崩”。
為了應(yīng)對(duì)微服務(wù)化帶來的難題,一批微服務(wù)組件與應(yīng)用涌現(xiàn)出來,如輔助問題排查的分布式調(diào)用鏈追蹤探針、簡化部署運(yùn)維的Kubernetes,以及本書介紹的熔斷器組件等。

Sentinel是熔斷器的實(shí)現(xiàn)組件之一,具有擴(kuò)展性強(qiáng)、對(duì)應(yīng)用性能影響小、配置靈活,支持異步鏈路與響應(yīng)式項(xiàng)目等特點(diǎn),因此Sentinel很快在國內(nèi)流行起來,成為國內(nèi)眾多開發(fā)者和架構(gòu)師首選的熔斷器組件。
本書內(nèi)容豐富,概念通俗易懂,讓讀者不僅能夠深入理解Sentinel的實(shí)現(xiàn)原理,還能夠從Sentinel中學(xué)習(xí)到一些技術(shù),如Java SPI的應(yīng)用、責(zé)任鏈設(shè)計(jì)模式的應(yīng)用、高并發(fā)性能優(yōu)化、滑動(dòng)窗口的實(shí)現(xiàn)、勻速限流與冷啟動(dòng)算法、信號(hào)量隔離的目的與實(shí)現(xiàn)等。

本書適合中高級(jí)Java開發(fā)者,也適合微服務(wù)項(xiàng)目開發(fā)者或組織。

文章內(nèi)容可以過多,限于文章篇幅,沒辦法為大家展示全部內(nèi)容,有感興趣想要獲取學(xué)習(xí)的朋友,麻煩幫忙點(diǎn)贊轉(zhuǎn)發(fā)一下,后臺(tái)私信【111】,獲取免費(fèi)下載方式。
第1章 基礎(chǔ)知識(shí)
本章主要介紹服務(wù)降級(jí)、限流、熔斷、流量效果控制等概念,解讀Sentinel的一些特性,并通過對(duì)Sentinel性能壓測介紹Sentinel的性能表現(xiàn)。
服務(wù)降級(jí)、限流、熔斷、流量效果控制
Sentinel的特性
Sentinel性能壓測

第2章 了解概念與核心 類
本章開始探索Sentinel。在學(xué)習(xí)Sentinel源碼之前,我們需要先了解Sentinel的一些概念及核心類,這些概念及核心類也會(huì)貫穿本書。
了解Sentinel的一些概念
資源指標(biāo)數(shù)據(jù)統(tǒng)計(jì)相關(guān)類
調(diào)用鏈上下文與入口類
處理器插槽:ProcessorSlot

第3章 了解整體工作流程
通過第2章的學(xué)習(xí),我們已經(jīng)了解了Sentinel的一些核心概念及核心類,本章將介紹Sentinel的整體工作流程。為了更好地理解Sentinel的整體工作流程,本章額外補(bǔ)充了一個(gè)知識(shí)點(diǎn)——SPI機(jī)制。
SPI在Sentinel中的應(yīng)用
責(zé)任鏈模式在Sentinel中的應(yīng)用
Sentinel的整體工作流程分析

第4章 資源指標(biāo)數(shù)據(jù)統(tǒng)計(jì)
QPS、TPS和RT是衡量服務(wù)性能的指標(biāo),如衡量網(wǎng)站、數(shù)據(jù)庫的性能。資源指標(biāo)數(shù)據(jù)統(tǒng)計(jì)是指資源統(tǒng)計(jì)不同指標(biāo)的數(shù)據(jù)。本章將介紹Sentinel統(tǒng)計(jì)資源指標(biāo)數(shù)據(jù)的實(shí)現(xiàn)原理。
基于滑動(dòng)窗口實(shí)現(xiàn)資源指標(biāo)數(shù)據(jù)統(tǒng)計(jì)
資源指標(biāo)數(shù)據(jù)統(tǒng)計(jì)全解析

第5章 限流
限流一般指的是按QPS/T hreads限流,除QPSThreads限流外,還有熱點(diǎn)參數(shù)限流、集群限流。本章主要分析Sentinel限流功能的實(shí)現(xiàn)原理及幾種流量效果控制器的實(shí)現(xiàn)原理。
限流功能實(shí)現(xiàn)原理
流量效果控制

第6章 熔斷降級(jí)
在微服務(wù)項(xiàng)目中,一個(gè)微服務(wù)常常需要調(diào)用內(nèi)部其他服務(wù)的接口,即便是單體架構(gòu)項(xiàng)目,也難免會(huì)調(diào)用一些第三方API、訪問數(shù)據(jù)庫等。使用熔斷降級(jí)功能可以有效避免因外部因素導(dǎo)致服務(wù)器自身不可用甚至進(jìn)程掛掉的情況發(fā)生。也許有些項(xiàng)目并不需要限流功能,但熔斷降級(jí)功能卻是微服務(wù)項(xiàng)目不可或缺的。
舊版熔斷降級(jí)
新版熔斷降級(jí)
熔斷器

第7章 授權(quán)與系統(tǒng)自適應(yīng)
授權(quán)與系統(tǒng)自適應(yīng)功能是Sentinel在實(shí)現(xiàn)限流與熔斷降級(jí)功能之后提供的擴(kuò)展性功能。授權(quán)功能用于限制訪問來源,而系統(tǒng)自適應(yīng)功能可作為限流、熔斷降級(jí)功能的兜底解決方案。
授權(quán)功能的實(shí)現(xiàn)原理
系統(tǒng)自適應(yīng)功能的實(shí)現(xiàn)原理

第8章 實(shí)現(xiàn)開關(guān)降級(jí)
在電商項(xiàng)目中,開關(guān)降級(jí)是每個(gè)微服務(wù)都必須支持的一項(xiàng)功能,主要用于在促銷活動(dòng)期間、每日流量高峰期間、主播帶貨期間關(guān)閉一些無關(guān)緊要的功能,降低數(shù)據(jù)庫的壓力以換取更高的TPS.
使用AOP實(shí)現(xiàn)開關(guān)降級(jí)
擴(kuò)展Sentinel實(shí)現(xiàn)開關(guān)降級(jí)

第9章 動(dòng)態(tài)數(shù)據(jù)源
Sentinel為每種規(guī)則提供一個(gè)規(guī)則管理器,而規(guī)則管理器管理的規(guī)則只存在于內(nèi)存中,在應(yīng)用重啟后,規(guī)則會(huì)丟失。每個(gè)規(guī)則管理器都會(huì)提供loadRules API,用于在系統(tǒng)運(yùn)行時(shí)為規(guī)則管理器注冊或更新規(guī)則,但是loadRules只接收內(nèi)存狀態(tài)的規(guī)則對(duì)象,如何存儲(chǔ)規(guī)則由我們自行實(shí)現(xiàn)。
實(shí)現(xiàn)規(guī)則動(dòng)態(tài)配置的兩種方式
使用Redis動(dòng)態(tài)數(shù)據(jù)源
動(dòng)態(tài)配置的實(shí)現(xiàn)原理
基于Spring Cloud動(dòng)態(tài)配置實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源

第10章 適配主流框架
為了節(jié)省這些步驟,Sent inel提供了對(duì)主流框架的適配,如適配Spring M VC、WebFlux、Dubbo、API Gateway等框架,在Sentinel源碼之外,Alibaba的
spring-cloud-starter-alibaba-sentinel也為Sentinel提供了與OpenFeign框架整合的支持。
適配Spring MVC框架
適配OpenFeign框架
適配Dubbo框架
注解切面

第11章 熱點(diǎn)參數(shù)限流
參數(shù)限流是指根據(jù)方法調(diào)用傳遞的參數(shù)實(shí)現(xiàn)限流,或者根據(jù)接口的請(qǐng)求參數(shù)限流,而熱點(diǎn)參數(shù)限流是指對(duì)訪問頻繁的參數(shù)限流。
熱點(diǎn)參數(shù)限流功能的實(shí)現(xiàn)
流量效果控制

第12章 集群限流
由于請(qǐng)求傾斜的存在,分發(fā)到集群中每個(gè)節(jié)點(diǎn)上的流量不可能是均勻的,因此單機(jī)限流無法實(shí)現(xiàn)精確地限制整個(gè)集群的整體流量,從而造成在總流量沒有達(dá)到閾值的情況下一些機(jī)器就開始限流。
本地限流與集群限流
集群限流的兩種模式
集群限流功能的實(shí)現(xiàn)

第13章 異步調(diào)用鏈的支持
RPC框架和Web框架都將朝著異步化的方向發(fā)展,許多主流的框架或組件也都適配了主流的異步框架,如WebFlux。Sentinel也不例外,早在Sentinel— 0.2.0就引入了異步調(diào)用鏈的支持。本章將介紹Sentinel支持異步調(diào)用鏈的實(shí)現(xiàn)原理,以及適配響應(yīng)式編程庫Reactor和WebFlux框架的實(shí)現(xiàn)原理。
Sentinel異步調(diào)用鏈的支持
適配Reactor框架的實(shí)現(xiàn)原理
適配WebFlux框架的實(shí)現(xiàn)原理

第14章 Sentinel Dashboard
Sentinel Dashboard提供的功能大致可以分為3類:資源調(diào)用鏈(簇點(diǎn)鏈路)展示、規(guī)則配置和實(shí)時(shí)指標(biāo)數(shù)據(jù)展示。
資源指標(biāo)數(shù)據(jù)收集的實(shí)現(xiàn)原理
如何將資源指標(biāo)數(shù)據(jù)輸出到metrics日記文件中
如何持久化資源指標(biāo)數(shù)據(jù)

文章展示到這里就結(jié)束了,需要獲取學(xué)習(xí)的朋友,請(qǐng)幫忙點(diǎn)贊轉(zhuǎn)發(fā)下,后臺(tái)私信【111】,獲取完整內(nèi)容免費(fèi)下載方式。
