一、redis cluster 介紹
redis cluster架構下的每個redis都要開放兩個端口號,比如一個是6379,另一個就是加1w的端口號16379。
二、節點間的內部通信機制
集群元數據的維護有兩種方式:集中式、Gossip 協議。
redis cluster 節點間采用 gossip 協議進行通信。
1. 集中式
將集群元數據集中存儲在一個節點上。典型代表是大數據領域的 storm。它是分布式的大數據實時計算引擎,是集中式的元數據存儲的結構,底層基于 zookeeper對所有元數據進行存儲維護。
優點
元數據的讀取和更新時效性非常好,元數據的變更都能立即更新到集中式存儲節點中,其它節點讀取的時候就可以感知到;
缺點
所有的元數據的更新壓力全部集中在一個地方,可能會導致元數據的存儲有壓力。
2. gossip 協議
redis 維護集群元數據采用的是gossip 協議,所有節點都持有一份元數據,不同的節點如果出現了元數據的變更,就不斷將元數據發送給其它的節點,讓其它節點也進行元數據的變更。
優點
元數據的更新比較分散,不是集中在一個地方,降低了壓力;
缺點
元數據的更新有延時,可能導致集群中的一些操作會有一些滯后。
三、深入剖析gossip 協議
gossip 協議包含多種消息,包含 ping、pong、meet、fail等等。
meet:某個節點在內部發送了一個gossip meet 消息給新加入的節點,通知那個節點去加入我們的集群。然后新節點就會加入到集群的通信中
redis-trib.rb add-node
繼續深入剖析ping消息
10000 端口:
每個節點都有一個專門用于節點間通信的端口,就是自己提供服務的端口號+10000,比如 6379,那么用于節點間通信的就是16379端口。每個節點每隔一段時間都會往另外幾個節點發送 ping 消息,同時其它幾個節點接收到 ping 之后返回 pong。
交換的信息:信息包括故障信息,節點的增加和刪除,hash slot 信息等等。
總結
到此這篇關于redis cluster介紹與gossip協議的文章就介紹到這了,更多相關redis cluster和gossip協議內容請搜索武林網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持武林網!
新聞熱點
疑難解答