八、Sentinel介紹和使用

1. Sentinel介紹

1.1 什么是Sentinel

Sentinel (分布式系統(tǒng)的流量防衛(wèi)兵) 是阿里開源的一套用于服務(wù)容錯的綜合性解決方案。它以流量
為切入點, 從流量控制、熔斷降級、系統(tǒng)負載保護等多個維度來保護服務(wù)的穩(wěn)定性。

1.2 Sentinel 特征

  • 豐富的應(yīng)用場景:Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景, 例如秒殺(即突發(fā)流量控制在系統(tǒng)容量可以承受的范圍)、消息削峰填谷、集群流量控制、實時熔斷下游不可用應(yīng)用等。
  • 完備的實時監(jiān)控:Sentinel 提供了實時的監(jiān)控功能。通過控制臺可以看到接入應(yīng)用的單臺機器秒級數(shù)據(jù), 至 500 臺以下規(guī)模的集群的匯總運行情況。
  • 廣泛的開源生態(tài):Sentinel 提供開箱即用的與其它開源框架/庫的整合模塊, 例如與 SpringCloud、Dubbo、gRPC 的整合。只需要引入相應(yīng)的依賴并進行簡單的配置即可快速地接入Sentinel。
  • 完善的 SPI 擴展點:Sentinel 提供簡單易用、完善的 SPI 擴展接口。您可以通過實現(xiàn)擴展接口來快速地定制邏輯。例如定制規(guī)則管理、適配動態(tài)數(shù)據(jù)源等。

1.3 Sentinel 2大主要組成部分

1 核心庫(Java 客戶端)

不依賴任何框架/庫,能夠運行于所有 Java 運行時環(huán)境,同時對 Dubbo /Spring Cloud 等框架也有較好的支持。

2 控制臺(Dashboard)

基于 Spring Boot 開發(fā),打包后可以直接運行,不需要額外的 Tomcat 等應(yīng)用容器。

2. Sentinel使用

Sentinel所有知識都可以官網(wǎng)查詢:官網(wǎng)地址

2.1 安裝Sentinel控制臺

```
# 直接使用jar命令啟動項目(控制臺本身是一個SpringBoot項目)
java -Dserver.port=8850 -Dcsp.sentinel.dashboard.server=localhost:8850 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.7.2.jar
```
    1. 防火墻將端口放行,重載規(guī)則后瀏覽器訪問 ( 默認用戶名密碼是 sentinel/sentinel )
     firewall-cmd --zone=public --add-port=8850/tcp --permanent 
     firewall-cmd --reload
    

瀏覽器地址:http://192.168.2.89:8850

sentinel登陸界面

登陸后界面

    1. 設(shè)置Sentinel自啟動(jar包自啟動)
    • 在jar包同目錄下新建啟動腳本
      vim sentinel-start.sh
      # 加入如下內(nèi)容:
      #!/bin/sh
      export JAVA_HOME=/usr/local/jdk1.8.0_251
      export PATH=$JAVA_HOME/bin:$PATH
      nohup java -Dserver.port=8850 -Dcsp.sentinel.dashboard.server=localhost:8850 -Dproject.name=sentinel-dashboard -jar /usr/local/sentinel/sentinel-dashboard-1.7.2.jar > /usr/local/sentinel/sentinel.log 2>&1 &
      echo $! > /var/run/sentinel.pid
      
    • 新建停止腳本sentinel-stop.sh
      vim sentinel-stop.sh
      # 加入如下內(nèi)容:
      #!/bin/sh
      PID=$(cat /var/run/sentinel.pid)
      kill -9 $PID
      
    • 增加權(quán)限
      chmod +x sentinel-start.sh
      chmod +x sentinel-stop.sh
      
    • 新建開機啟動腳本
      vim /lib/systemd/system/sentinal.service
      # 加入如下內(nèi)容:
      #!/bin/sh
      [Unit]
      Description=nacos
      After=network.target
      
      [Service]
      Type=forking
      ExecStart=/usr/local/sentinel/sentinel-start.sh
      ExecStop=/usr/local/sentinel/sentinel-stop.sh
      PrivateTmp=true
      
      [Install]  
      WantedBy=multi-user.target
      
    • 自啟命令
      systemctl daemon-reload  #先進行文件生效配置
      systemctl start sentinel # 啟動
      systemctl stop sentinel # 停止
      systemctl enable sentinel # 設(shè)置自啟
      systemctl status sentinel
      
      啟動命令時錯誤:-bash: ./sentinel-start.sh: /bin/sh^M: 壞的解釋器: 沒有那個文件或目錄
      錯誤原因:這個文件在Windows下編輯過,在Windows下每一行結(jié)尾是\n\r,而Linux下則是\n,所以才會有 多出來的\r。
      修改錯誤:使用指令sed -i 's/\r$//' xxxxxxx.sh,上面的指令會把 xxxxxxx.sh中的\r 替換成空白!

2.2 微服務(wù)集成Sentinel

    1. 在pom.xml中加入下面依賴,因容錯在上游,所以在消費者中引入
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>
    
    1. 配置文件中配置Sentinel
    spring:
      cloud:
        sentinel:
          transport:
            port: 13001 #跟控制臺交流的端口,隨意指定一個未使用的端口即可,防火墻放行
            dashboard: 192.168.2.89:8850 # 指定控制臺服務(wù)的地址
            ##非局域網(wǎng)內(nèi)的地址,有問題,還未解決
            // TODO
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容