日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

redis 集群讲解

發布時間:2023/12/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis 集群讲解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

群集節點屬性

每個節點在集群中都有唯一的名稱。節點名稱是一個160位隨機數的十六進制表示,是第一次啟動節點(通常使用/ dev / urandom)時獲得的。節點將其ID保存在節點配置文件中,并永久使用相同的ID,或者至少只要節點配置文件不被系統管理員刪除,或者通過CLUSTER RESET命令請求硬復位

節點ID用于標識整個集群中的每個節點。給定節點有可能改變其IP地址,而不需要改變節點ID。集群還能夠檢測到IP /端口的變化,并使用群集總線上運行的八卦協議進行重新配置。

節點ID不是與每個節點相關的唯一信息,而是唯一始終全局一致的信息。每個節點也有以下一組相關的信息。一些信息是關于此特定節點的群集配置詳細信息,并最終在整個群集中保持一致。其他一些信息,比如最后一個節點被ping的時候,對每個節點都是本地的。

每個節點都維護有關在集群中知曉的其他節點的以下信息:節點ID,節點的IP和端口,一組標志,如果標記為節點的主節點slave,則上次是節點被ping通并且最后一次接收到pong時,節點的當前?配置歷元(在本說明書中稍后解釋),鏈路狀態以及最后的散列槽的集合被服務。

有關所有節點字段的詳細說明,請參閱CLUSTER NODES文檔。

群集節點命令可在簇中被發送到任何節點,并提供該集群的狀態,并根據本地視圖所查詢的節點具有群集的每個節點的信息。

以下是在三個節點的小群集中發送到主節點CLUSTER NODES命令的輸出示例

$ redis-cli cluster nodes d1861060fe6a534d42d8a19aeb36600e18785e04 127.0.0.1:6379 myself - 0 1318428930 1 connected 0-1364 3886e65cc906bfd9b1f7e7bde468726a052d1dae 127.0.0.1:6380 master - 1318428930 1318428931 2 connected 1365-2729 d289c575dcbc4bdd2931585fd4339089e461a27d 127.0.0.1:6381 master - 1318428931 1318428931 3 connected 2730-4095

在上面的列表中,不同的字段是按順序排列的:節點ID,地址:端口,標志,最后ping發送,最后一個pong接收,配置歷元,鏈路狀態,插槽。關于上述領域的細節將在我們討論Redis集群的特定部分時盡快討論。

群集總線

每個Redis群集節點都有一個額外的TCP端口,用于接收來自其他Redis群集節點的傳入連接。該端口與用于接收來自客戶端的傳入連接的常規TCP端口有固定的偏移量。要獲得Redis集群端口,應該將10000添加到正常的命令端口。例如,如果一個Redis節點正在偵聽端口6379上的客戶端連接,則集群總線端口16379也將被打開。

節點到節點之間的通信僅使用群集總線和群集總線協議:由不同類型和大小的幀組成的二進制協議。集群總線二進制協議沒有公開記錄,因為它不是為外部軟件設備與使用此協議的Redis集群節點進行通信。然而,你可以通過閱讀獲取有關群集的總線協議的詳細信息?cluster.hcluster.c文件在Redis的集群源代碼。

集群拓撲

Redis集群是一個完整的網格,其中每個節點都使用TCP連接與每個其他節點連接。

在N個節點的集群中,每個節點都有N-1個傳出TCP連接,以及N-1個傳入連接。

這些TCP連接始終保持活動狀態,并不是按需創建的。當一個節點期望響應群集總線中的ping響應時,在等待足夠長的時間以將節點標記為不可達時,它將嘗試通過從頭重新連接來刷新與節點的連接。

當Redis Cluster節點形成一個完整的網格時,節點使用八卦協議和配置更新機制,以避免在正常情況下節點之間交換太多的消息,所以交換的消息數量不是指數級的。

節點握手

節點總是接受集群總線端口上的連接,甚至在收到ping時回復ping,即使ping不可信節點也是如此。但是,如果發送節點不被視為群集的一部分,所有其他數據包將被接收節點丟棄。

一個節點只能以兩種方式接受另一個節點作為集群的一部分:

  • 如果一個節點出現一個MEET消息。遇見消息與PING消息完全相同,但強制接收者接受作為群集一部分的節點。只有當系統管理員通過以下命令請求時,節點才會將MEET消息發送到其他節點

    集群符合IP端口

  • 如果已經被信任的節點將閑談這個其他節點,節點也將注冊另一個節點作為集群的一部分。所以,如果A知道B,B知道C,那么B最終會發送八卦消息給A,C發生這種情況時,A將C注冊為網絡的一部分,并嘗試與C連接。

這意味著只要我們加入任何連接圖中的節點,它們最終將自動形成完全連通的圖形。這意味著群集能夠自動發現其他節點,但前提是系統管理員強制建立信任關系。

這種機制使群集更健壯,但防止不同的Redis群集在更改IP地址或其他網絡相關事件后意外混合。



官方地址:https://redis.io/topics/cluster-spec


總結

以上是生活随笔為你收集整理的redis 集群讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。