欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析redis cluster介紹與gossip協(xié)議

 更新時(shí)間:2020年09月08日 08:37:31   作者:MrMirror  
這篇文章主要介紹了redis cluster介紹與gossip協(xié)議,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、redis cluster 介紹

  • 自動(dòng)將數(shù)據(jù)進(jìn)行分片,每個(gè) master 上放一部分?jǐn)?shù)據(jù)
  • 提供內(nèi)置的高可用支持,部分 master 不可用時(shí),還是可以繼續(xù)工作的

redis cluster架構(gòu)下的每個(gè)redis都要開放兩個(gè)端口號(hào),比如一個(gè)是6379,另一個(gè)就是加1w的端口號(hào)16379。

  • 6379端口號(hào)就是redis服務(wù)器入口。
  • 16379端口號(hào)是用來進(jìn)行節(jié)點(diǎn)間通信的,也就是 cluster bus 的東西,cluster bus 的通信,用來進(jìn)行故障檢測(cè)、配置更新、故障轉(zhuǎn)移授權(quán)。cluster bus 用的是一種叫g(shù)ossip 協(xié)議的二進(jìn)制協(xié)議,用于節(jié)點(diǎn)間高效的數(shù)據(jù)交換,占用更少的網(wǎng)絡(luò)帶寬和處理時(shí)間。

二、節(jié)點(diǎn)間的內(nèi)部通信機(jī)制

集群元數(shù)據(jù)的維護(hù)有兩種方式:集中式、Gossip 協(xié)議。
redis cluster 節(jié)點(diǎn)間采用 gossip 協(xié)議進(jìn)行通信。

1. 集中式

將集群元數(shù)據(jù)集中存儲(chǔ)在一個(gè)節(jié)點(diǎn)上。典型代表是大數(shù)據(jù)領(lǐng)域的 storm。它是分布式的大數(shù)據(jù)實(shí)時(shí)計(jì)算引擎,是集中式的元數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu),底層基于 zookeeper對(duì)所有元數(shù)據(jù)進(jìn)行存儲(chǔ)維護(hù)。

優(yōu)點(diǎn)

元數(shù)據(jù)的讀取和更新時(shí)效性非常好,元數(shù)據(jù)的變更都能立即更新到集中式存儲(chǔ)節(jié)點(diǎn)中,其它節(jié)點(diǎn)讀取的時(shí)候就可以感知到;

缺點(diǎn)

所有的元數(shù)據(jù)的更新壓力全部集中在一個(gè)地方,可能會(huì)導(dǎo)致元數(shù)據(jù)的存儲(chǔ)有壓力。

2. gossip 協(xié)議

redis 維護(hù)集群元數(shù)據(jù)采用的是gossip 協(xié)議,所有節(jié)點(diǎn)都持有一份元數(shù)據(jù),不同的節(jié)點(diǎn)如果出現(xiàn)了元數(shù)據(jù)的變更,就不斷將元數(shù)據(jù)發(fā)送給其它的節(jié)點(diǎn),讓其它節(jié)點(diǎn)也進(jìn)行元數(shù)據(jù)的變更。

優(yōu)點(diǎn)

元數(shù)據(jù)的更新比較分散,不是集中在一個(gè)地方,降低了壓力;

缺點(diǎn)

元數(shù)據(jù)的更新有延時(shí),可能導(dǎo)致集群中的一些操作會(huì)有一些滯后。


三、深入剖析gossip 協(xié)議

gossip 協(xié)議包含多種消息,包含 ping、pong、meet、fail等等。

meet:某個(gè)節(jié)點(diǎn)在內(nèi)部發(fā)送了一個(gè)gossip meet 消息給新加入的節(jié)點(diǎn),通知那個(gè)節(jié)點(diǎn)去加入我們的集群。然后新節(jié)點(diǎn)就會(huì)加入到集群的通信中

redis-trib.rb add-node
  • ping:每個(gè)節(jié)點(diǎn)都會(huì)頻繁給其它節(jié)點(diǎn)發(fā)送 ping,其中包含自己的狀態(tài)還有自己維護(hù)的集群元數(shù)據(jù),互相通過 ping 交換元數(shù)據(jù)。
  • pong:ping 和 meet消息的返回響應(yīng),包含自己的狀態(tài)和其它信息,也用于信息廣播和更新。
  • fail:某個(gè)節(jié)點(diǎn)判斷另一個(gè)節(jié)點(diǎn) fail 之后,就發(fā)送 fail 給其它節(jié)點(diǎn),通知其它節(jié)點(diǎn)說這個(gè)節(jié)點(diǎn)已宕機(jī)。

繼續(xù)深入剖析ping消息

  • ping 時(shí)要攜帶一些元數(shù)據(jù),如果很頻繁,可能會(huì)加重網(wǎng)絡(luò)負(fù)擔(dān)。因此,一般每個(gè)節(jié)點(diǎn)每秒會(huì)執(zhí)行 10 次 ping,每次會(huì)選擇 5 個(gè)最久沒有通信的其它節(jié)點(diǎn)。
  • 當(dāng)然如果發(fā)現(xiàn)某個(gè)節(jié)點(diǎn)通信延時(shí)達(dá)到了 cluster_node_timeout / 2,那么立即發(fā)送 ping,避免數(shù)據(jù)交換延時(shí)過長(zhǎng)導(dǎo)致信息嚴(yán)重滯后。比如說,兩個(gè)節(jié)點(diǎn)之間都 10 分鐘沒有交換數(shù)據(jù)了,那么整個(gè)集群處于嚴(yán)重的元數(shù)據(jù)不一致的情況,就會(huì)有問題。所以 cluster_node_timeout 可以調(diào)節(jié),如果調(diào)得比較大,那么會(huì)降低 ping 的頻率。
  • 每次 ping,會(huì)帶上自己節(jié)點(diǎn)的信息,還有就是帶上 1/10 其它節(jié)點(diǎn)的信息,發(fā)送出去,進(jìn)行交換。至少包含 3 個(gè)其它節(jié)點(diǎn)的信息,最多包含 總節(jié)點(diǎn)數(shù)減 2 個(gè)其它節(jié)點(diǎn)的信息。

10000 端口:
每個(gè)節(jié)點(diǎn)都有一個(gè)專門用于節(jié)點(diǎn)間通信的端口,就是自己提供服務(wù)的端口號(hào)+10000,比如 6379,那么用于節(jié)點(diǎn)間通信的就是16379端口。每個(gè)節(jié)點(diǎn)每隔一段時(shí)間都會(huì)往另外幾個(gè)節(jié)點(diǎn)發(fā)送 ping 消息,同時(shí)其它幾個(gè)節(jié)點(diǎn)接收到 ping 之后返回 pong。
交換的信息:信息包括故障信息,節(jié)點(diǎn)的增加和刪除,hash slot 信息等等。

總結(jié)

到此這篇關(guān)于redis cluster介紹與gossip協(xié)議的文章就介紹到這了,更多相關(guān)redis cluster和gossip協(xié)議內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis RDB與AOF持久化方式詳細(xì)講解

    Redis RDB與AOF持久化方式詳細(xì)講解

    Redis是基于內(nèi)存的數(shù)據(jù)結(jié)構(gòu)服務(wù)器,保存了大量的鍵值對(duì)數(shù)據(jù),所以持久化到磁盤是非常必要的,Redis提供了兩種持久化的方式,分別是RDB和AOF。下面我們看下這兩種持久化方式的具體實(shí)現(xiàn)原理
    2022-11-11
  • redis加鎖的三種方式小結(jié)

    redis加鎖的三種方式小結(jié)

    本文主要介紹了redis加鎖的三種方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Redis的9種數(shù)據(jù)類型用法解讀

    Redis的9種數(shù)據(jù)類型用法解讀

    這篇文章主要介紹了Redis的9種數(shù)據(jù)類型用法及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Redis未授權(quán)訪問配合SSH key文件利用詳解

    Redis未授權(quán)訪問配合SSH key文件利用詳解

    這篇文章主要給大家介紹了關(guān)于Redis未授權(quán)訪問配合SSH key文件利用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • redis過期回調(diào)功能實(shí)現(xiàn)示例

    redis過期回調(diào)功能實(shí)現(xiàn)示例

    Redis提供了一種過期回調(diào)的機(jī)制,可以在某個(gè)鍵過期時(shí)觸發(fā)一個(gè)回調(diào)函數(shù),本文就來介紹一下redis過期回調(diào)功能實(shí)現(xiàn)示例,感興趣的可以了解一下
    2023-09-09
  • Redis數(shù)據(jù)庫安全詳解

    Redis數(shù)據(jù)庫安全詳解

    這篇文章主要為大家介紹了Redis數(shù)據(jù)庫安全詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • RedisDesktopManager遠(yuǎn)程連接redis的實(shí)現(xiàn)

    RedisDesktopManager遠(yuǎn)程連接redis的實(shí)現(xiàn)

    本文主要介紹了RedisDesktopManager遠(yuǎn)程連接redis的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Redis特殊數(shù)據(jù)類型bitmap位圖

    Redis特殊數(shù)據(jù)類型bitmap位圖

    這篇文章主要為大家介紹了Redis特殊數(shù)據(jù)類型bitmap位圖,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 如何利用Redis?List實(shí)現(xiàn)Java數(shù)據(jù)庫分頁快速查詢

    如何利用Redis?List實(shí)現(xiàn)Java數(shù)據(jù)庫分頁快速查詢

    這篇文章主要給大家介紹了關(guān)于如何利用Redis?List實(shí)現(xiàn)Java數(shù)據(jù)庫分頁快速查詢的相關(guān)資料,Redis是一個(gè)高效的內(nèi)存數(shù)據(jù)庫,它支持包括String、List、Set、SortedSet和Hash等數(shù)據(jù)類型的存儲(chǔ),需要的朋友可以參考下
    2024-02-02
  • Redis中AOF與RDB持久化策略深入分析

    Redis中AOF與RDB持久化策略深入分析

    Redis作為一款內(nèi)存數(shù)據(jù)庫,因?yàn)槭莾?nèi)存讀寫,所以性能很強(qiáng),但內(nèi)存存儲(chǔ)是易失性的,斷電或系統(tǒng)奔潰都會(huì)導(dǎo)致數(shù)據(jù)丟失,因此Redis也需要將其數(shù)據(jù)持久化到磁盤上面,當(dāng)Redis服務(wù)重啟時(shí),會(huì)把磁盤上的數(shù)據(jù)再加載進(jìn)內(nèi)存,Redis提供了兩種持久化機(jī)制-RDB快照和AOF日志
    2022-11-11

最新評(píng)論