[toc]


## 技術選型
與Hystrix進行對比。
| 對比項 | Sentinel | Hystrix |
| --- | --- | --- |
| 隔離策略 | 基于并發數(信號量隔離) | 線程池隔離/信號量隔離 |
| 熔斷降級策略 | 基于響應時間或失敗比率 | 基于失敗比率 |
| 實時指標實現 | 滑動窗口 | 滑動窗口(基于 RxJava) |
| 規則配置 | 支持多種數據源 | 支持多種數據源 |
| 擴展性 | 多個擴展點 | 插件的形式 |
| 基于注解的支持 | 即將發布 | 支持 |
| 調用鏈路信息 | 支持同步調用 | 不支持 |
| 限流 | 基于 QPS / 并發數,支持基于調用關系的限流 | 不支持 |
| 流量整形 | 支持慢啟動、勻速器模式 | 不支持 |
| 系統負載保護 | 支持 | 不支持 |
| 實時監控 API | 各式各樣 | 較為簡單 |
| 控制臺 | 開箱即用,可配置規則、查看秒級監控、機器發現等 | 不完善 |
| 常見框架的適配 | Servlet、Spring Cloud、Dubbo、gRPC 等 | Servlet、Spring Cloud Netflix |
### 隔離策略
#### 信號量隔離
線程池隔離的思想是: 把tomcat中先一個線程池分成兩個線程池。比如tomcat線程池中初始有200個線程, 分成兩個線程池A , B后, A線程池有50個線程可以用, B線程池有150個線程可以用。將訪問量較大的接口單獨配置給一個線程池, 其他接口使用另一個線程池 , 使其訪問量激增時不要影響其他接口的調用。
#### 信號量隔離
可以把信號量理解成一個計數器 , 對這個計數器在`單位時間內`規定一個計數上限, 代表一個接口被訪問的最大量。
## Sentinel 是如何工作的
Sentinel 的主要工作機制如下:
* 對主流框架提供適配或者顯示的 API,來定義需要保護的資源,并提供設施對資源進行實時統計和調用鏈路分析。
* 根據預設的規則,結合對資源的實時統計信息,對流量進行控制。同時,Sentinel 提供開放的接口,方便您定義及改變規則。
* Sentinel 提供實時的監控系統,方便您快速了解目前系統的狀態。
## 我們可以從Sentinel中學到什么
### 插槽化設計
在 Sentinel 里面,所有的資源都對應一個資源名稱以及一個 Entry。Entry 可以通過對主流框架的適配自動創建,也可以通過注解的方式或調用 API 顯式創建;每一個 Entry 創建的時候,同時也會創建一系列功能插槽(slot chain)。
- 寫在前面
- 如何閱讀源碼
- 第一部分 開源框架
- Netty
- 啟動過程
- SpringSecurityOauth2
- Quartz
- quartz啟動原理
- quartz定時調度任務觸發流程
- 第二部分 優質中間件源碼分析
- Canal
- Canal是如何偽裝為mysql的slave的?
- canal源碼調試
- Sentinel
- 核心概念梳理
- 滑動窗口實現原理
- jvm-sandbox
- jvm-sandbox-repeater
- Windows環境安裝
- 結果比對
- 第三部分 優質行業項目源碼分析
- 第一章 分庫分表實踐
- sharding-jdbc
- 第二章 DDD領域驅動
- 享同科技DDD開源框架
- J-IM
- 功能測試
- 悟空CRM
- 項目搭建
- 默認密碼
- dataX-web
- 項目搭建
- 部署報錯
- dolphinscheduler
- awescnb
- geek
- chrome插件-funds
- 優質開源項目備忘