1. 程式人生 > 實用技巧 >674【畢設課設】基於微控制器PID直流電機控制系統設計

674【畢設課設】基於微控制器PID直流電機控制系統設計

Sentinel(哨兵)是redis的高可用解決方案:由一個或多個Sentinel例項組成Sentinel系統可以監視任意多個主伺服器,以及這些這些主伺服器下屬的所有從伺服器,並在被監視的主伺服器進入下線狀態後,自動將下線主伺服器下屬的某個從伺服器升級為新的主伺服器,然後由新的主伺服器代替已下線的主伺服器繼續處理命令請求。

建立一個Sentinel.conf配置檔案內容如下:

port 26379
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 10000
View Code
  • port是哨兵例項的埠號。
  • mymaster後面是監控的主伺服器Ip,埠號,1代表只要有一個sentinel例項認為主機下線就可以開始做故障轉移操作。
  • auth-pass 主伺服器密碼 (注:主從伺服器要設定相同密碼 及主伺服器密碼 否則故障轉移無法成功)。
  • sentinel down-after-milliseconds 當mymaster斷線10秒後,Sentinel會將mymaster判斷為主觀下線狀態。

執行命令啟動哨兵例項:redis-server.exe sentinel.conf --sentinel

這樣我們的單例項哨兵就配置完成了。

Sentinel只是一個執行在特殊模式下的redis伺服器,它使用了和普通模式不同的命令表。

Sentinel會讀入使用者指定的配置檔案,為每個要被監視的主伺服器建立相應的例項結構,並建立向主伺服器的命令連線和訂閱連線,其中命令連線用於向主伺服器傳送命令請求,而訂閱連線用於接收指定頻道的訊息。

Sentinel預設會以每十秒一次的頻率,通過命令連線向被監視的主伺服器傳送info命令來獲取主伺服器的配置資訊及下屬所有的從伺服器的地址資訊,併為這些從伺服器建立相應的例項結構,以及連向這些從伺服器的命令連線和訂閱連線。

在一般情況下,Sentinel會以每十秒一次的頻率向被監視的主從伺服器傳送info命令,當主伺服器處於下線狀態,或者Sentinel正在對主伺服器做故障轉移時,Sentinel向從伺服器傳送info命令的頻率將改為每秒一次。

對於監視同一個主服務和從伺服器的Sentinel來說,它們會以每兩秒一次的頻率,通過向被監視伺服器的__sentinel__:hello頻道傳送訊息來向其他Sentinel宣告自己的存在。

每個Sentinel也會從__sentinel__:hello頻道中接收其他Sentinel發來的訊息,並根據這些資訊為其它Sentinel建立相應的實體結構,以及命令連線。

Sentinel以每秒一次的頻率向例項(主伺服器,從伺服器,Sentinel例項)傳送Ping命令,並根據例項對ping命令的回覆來判斷例項是否線上。當一個例項在指定的時長中連續向Sentinel傳送無效回覆時,Sentinel會將這個例項判斷為主觀下線。

當Sentinel將一個主伺服器判斷為主觀下線時,它會向同樣監視這個伺服器的其他Sentinel進行詢問,看他們是否同意這個主伺服器已經進入了主觀下線狀態。

當Sentinel收集了足夠多的主觀下線投票後,它會將主伺服器判斷為客觀下線,併發起一次針對主伺服器的故障轉移操作。

(注:哨兵可以提高redis的可用性,但並不會提升redis的資料儲存總量,當需要對redis進行擴充套件時,需要使用redis叢集方案)