1. 程式人生 > >redis叢集與rabbitmq叢集

redis叢集與rabbitmq叢集

 

網際網路專案中,redis和mq幾乎成標配,開源的rabbitmq更加受歡迎,以下記錄下相關原理,哪天忘記了 來瞅一眼

 

redis叢集指官方推薦叢集方式,最少部署6個節點,會自動進行分片,副本叢集。6個節點時,會分3個片,每個片一個副本。

 

為啥要分3個片呢?----redis叢集採用的是哨兵模式,網上文章很多,我這一句話總結:哨兵負責主從之間報信 和選舉(低於3個哨兵的投票沒有任何意義)。

如果發現主節點 或者從節點有異常,大家馬上就知道了。從節點有異常就標記一下,主節點有異常就比較麻煩了,要重新選取新的主節點。(主節點是否掛掉,由哨兵們選舉決定,過半的人覺得他掛了,嗯。。他就掛了)。

選擇為主節點後,會告訴所有從節點,XX成主節點了,xx成從節點了,並將XX的所有資料都同步到xx中。然後轉換完成。

那redis是如何寫到不同的主節點的,嗯,他採取了CRC16演算法,總的來說會出現2^16次方個值,但基於節省空間的原則,作者選了儲存量在20k的2^14次方16384個槽。有N個主節點,算出來的槽在(16384/N)哪個區間內,然後進行讀寫。嗯,就是分庫分表的原理。

 

rabbitmq叢集------採用erlang特性 cookie同步,將對應的.erlang.cookie值設定為相同即可,他們之間的資訊就會相互copy。嗯,在我看來就是檔案共享。這樣所有的節點都是水平分佈的,那又是如何確定寫入不同的主節點呢

 

rabbitmq通常需要裝一個外掛HAProxy代理,效能巨好,通過rabbion演算法分配,當然也可以自己定義。當然,使用你ngxin、F5等等都是OK的,只要能扛得住流量