[toc]
## 基本概念
### 資源
資源是 Sentinel 的關鍵概念。它可以是 Java 應用程序中的任何內容,例如,由應用程序提供的服務,或由應用程序調用的其它應用提供的服務,甚至可以是一段代碼。
只要通過 Sentinel API 定義的代碼,就是資源,能夠被 Sentinel 保護起來。大部分情況下,可以使用方法簽名,URL,甚至服務名稱作為資源名來標示資源。
### 規則
圍繞資源的實時狀態設定的規則,可以包括流量控制規則、熔斷降級規則以及系統保護規則。所有規則可以動態實時調整。
### 什么是熔斷降級
除了流量控制以外,降低調用鏈路中的不穩定資源也是 Sentinel 的使命之一。由于調用關系的復雜性,如果調用鏈路中的某個資源出現了不穩定,最終會導致請求發生堆積。
當調用鏈路中某個資源出現不穩定,例如,表現為 timeout,異常比例升高的時候,則對這個資源的調用進行限制,并讓請求快速失敗,避免影響到其它的資源,最終產生雪崩的效果。
## 源碼閱讀概念
### Entry
Entry在英文中直譯為大門、入口,在很多源碼中,被作為元素單位的存在。
在 Sentinel 里面,所有的資源都對應一個資源名稱以及一個 Entry。Entry 可以通過對主流框架的適配自動創建,也可以通過注解的方式或調用 API 顯式創建;每一個 Entry 創建的時候,同時也會創建一系列功能插槽(slot chain)。
總結一下便是:`Entry是針對資源創建的限流實現,其具體功能由一系列功能插槽組成`。
### Node

- StatisticNode: 統計節點,是Node接口的實現類,用于完成數據統計
- EntranceNode: 入口節點,一個Context會有一個入口節點,用于統計當前Context的總體流量數據
- DefaultNode: 默認節點,用于統計一 個資源在當前Context中的流量數據
- ClusterNode:集群節點,用于統計一個資源在所有Context中的總體流量數據

#### StatisticNode
#### EntranceNode
EntranceNode是NodeSelectorSlot中的調用路徑節點。我們先來看一下EntranceNode中都有哪些數據:
```
EntranceNode: machine-root(t:0 pq:1 bq:0 tq:1 rt:0 prq:1 1mp:0 1mb:0 1mt:0)
-EntranceNode1: Entrance1(t:0 pq:1 bq:0 tq:1 rt:0 prq:1 1mp:0 1mb:0 1mt:0)
--nodeA(t:0 pq:1 bq:0 tq:1 rt:0 prq:1 1mp:0 1mb:0 1mt:0)
-EntranceNode2: Entrance1(t:0 pq:1 bq:0 tq:1 rt:0 prq:1 1mp:0 1mb:0 1mt:0)
--nodeA(t:0 pq:1 bq:0 tq:1 rt:0 prq:1 1mp:0 1mb:0 1mt:0)
```
其中:
* t:threadNum
* pq:passQps
* bq:blockedQps
* tq:totalQps
* rt:averageRt
* prq: passRequestQps
* 1mp:1m-passed
* 1mb:1m-blocked
* 1mt:1m-total

1. 滑動窗口實現原理
#### 什么是SPI接口?
SPI接口是功能可擴展接口。
3.
## 參考資料
[官網:Sentinel工作流程](https://sentinelguard.io/zh-cn/docs/basic-implementation.html)
- 寫在前面
- 如何閱讀源碼
- 第一部分 開源框架
- 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
- 優質開源項目備忘