Spring Cloud Alibab Sentinel服务端搭建
一:簡介
Sentinel是面向分布式服務架構的高可用流量防護組件,主要以流量為切入點,從限流、流量整形、熔斷降級、系統負載保護、熱點防護等多個維度來幫助開發者保障微服務的穩定性。
Sentinel 具有以下特性:
豐富的應用場景:Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發流量控制在系統容量可以承受的范圍)、消息削峰填谷、集群流量控制、實時熔斷下游不可用應用等。
完備的實時監控:Sentinel 同時提供實時的監控功能。您可以在控制臺中看到接入應用的單臺機器秒級數據,甚至 500 臺以下規模的集群的匯總運行情況。
廣泛的開源生態:Sentinel 提供開箱即用的與其它開源框架/庫的整合模塊,例如與 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相應的依賴并進行簡單的配置即可快速地接入 Sentinel。
完善的 SPI 擴展點:Sentinel 提供簡單易用、完善的 SPI 擴展接口。您可以通過實現擴展接口來快速地定制邏輯。例如定制規則管理、適配動態數據源等
項目地址: https://github.com/alibaba/Sentinel
開發文檔: https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D
二:Sentinel控制臺
Sentinel版本:V1.8.1
系統環境:Windows 10
JDK版本:1.8.0_131
1、Jar包安裝Sentinel控制臺:
從release頁面,下載最新版本的控制臺jar包。
2、源碼構建Sentinel控制臺:
下載控制臺工程使用以下命令將代碼打包成一個 fat jar: mvn clean package
Sentinel控制臺啟動:
java -Dserver.port=9999 -Dcsp.sentinel.dashboard.server=localhost:9999 -Dproject.name=dashboard -Dsentinel.dashboard.auth.username=sentinel -Dsentinel.dashboard.auth.password=123456 -jar -Dcsp.sentinel.log.dir=./logs/csp -Dcsp.sentinel.log.use.pid=true sentinel-dashboard-1.8.1.jar
Sentinel啟動界面:
從啟動日志來看Sentinel其實是一個基于Spring Boot 開發的應用
Sentinel控制臺:
訪問:http://127.0.0.1:9999/,推薦使用Chrome瀏覽器,跳轉到登錄界面,默認賬號和密碼:sentinel,也可以通過啟動配置文件來修改。
三:啟動配置項
Sentinel 提供如下的配置方式:
JVM -D 參數方式
properties 文件方式(1.7.0 版本開始支持)
其中,project.name 參數只能通過 JVM -D 參數方式配置(since 1.8.0 取消該限制),其它參數支持所有的配置方式。
優先級順序:JVM -D 參數的優先級最高。若 properties 和 JVM 參數中有相同項的配置,以 JVM 參數配置的為準。
用戶可以通過 -Dcsp.sentinel.config.file 參數配置 properties 文件的路徑,支持 classpath 路徑配置(如 classpath:sentinel.properties)。默認 Sentinel 會嘗試從 classpath:sentinel.properties 文件讀取配置,讀取編碼默認為 UTF-8。
注:1.7.0 以下版本可以通過舊的 ${user_home}/logs/csp/${project.name}.properties 配置文件進行配置(除 project.name 和日志相關配置項)。
注:若您的應用為 Spring Boot 或 Spring Cloud 應用,您可以使用 Spring Cloud Alibaba,通過 Spring 配置文件來指定配置,詳情請參考 Spring Cloud Alibaba Sentinel 文檔。
基礎配置項
| 名稱 | 含義 | 類型 | 默認值 | 是否必需 | 備注 |
|---|---|---|---|---|---|
project.name |
指定應用的名稱 | String |
null |
否 | |
csp.sentinel.app.type |
指定應用的類型 | int |
0 (APP_TYPE_COMMON) |
否 | 1.6.0 引入 |
csp.sentinel.metric.file.single.size |
單個監控日志文件的大小 | long |
52428800 (50MB) | 否 | |
csp.sentinel.metric.file.total.count |
監控日志文件的總數上限 | int |
6 | 否 | |
csp.sentinel.statistic.max.rt |
最大的有效響應時長(ms),超出此值則按照此值記錄 | int |
4900 | 否 | 1.4.1 引入 |
csp.sentinel.spi.classloader |
SPI 加載時使用的 ClassLoader,默認為給定類的 ClassLoader | String |
default |
否 | 若配置 context 則使用 thread context ClassLoader。1.7.0 引入 |
注:其中project.name項用于指定應用名(appName)。若未指定,則默認解析 main 函數的類名作為應用名。實際項目使用中建議手動指定應用名
日志相關配置項
| 名稱 | 含義 | 類型 | 默認值 | 是否必需 | 備注 |
|---|---|---|---|---|---|
csp.sentinel.log.dir |
Sentinel 日志文件目錄 | String |
${user.home}/logs/csp/ |
否 | 1.3.0 引入 |
csp.sentinel.log.use.pid |
日志文件名中是否加入進程號,用于單機部署多個應用的情況 | boolean |
false |
否 | 1.3.0 引入 |
csp.sentinel.log.output.type |
Record 日志輸出的類型,file 代表輸出至文件,console 代表輸出至終端 |
String |
file |
否 | 1.6.2 引入 |
注意:若需要在單臺機器上運行相同服務的多個實例,則需要加入-Dcsp.sentinel.log.use.pid=true來保證不同實例日志的獨立性
數據傳輸配置項
| 名稱 | 含義 | 類型 | 默認值 | 是否必需 |
|---|---|---|---|---|
csp.sentinel.dashboard.server |
控制臺的地址,指定控制臺后客戶端會自動向該地址發送心跳包。地址格式為:hostIp:port
|
String |
null |
是 |
csp.sentinel.heartbeat.interval.ms |
心跳包發送周期,單位毫秒 | long |
null |
非必需,若不進行配置,則會從相應的 HeartbeatSender 中提取默認值 |
csp.sentinel.api.port |
本地啟動 HTTP API Server 的端口號 | int |
8719 | 否 |
csp.sentinel.heartbeat.client.ip |
指定心跳包中本機的 IP | String |
- | 若不指定則通過 HostNameUtil 解析;該配置項多用于多網卡環境 |
注:csp.sentinel.api.port可不提供,默認為 8719,若端口沖突會自動向下探測可用的端口。
總結
以上是生活随笔為你收集整理的Spring Cloud Alibab Sentinel服务端搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BUUCTF [XMAN2018排位赛]
- 下一篇: 素材网站大集合,感谢老贺