Redis主從複製問題和擴容問題的解決思路_Redis

來源:互聯網
上載者:User

一、解決主從複製問題

當使用Redis作為儲存引擎的時候,並且使用Redis讀寫分離,從機作為讀的情況,從機宕機或者和主機中斷連線都需要重新串連主機,重新串連主機都會觸發全量的主從複製,這時候主機會產生記憶體快照,主機依然可以對外提供服務,但是作為讀的從機,就無法提供對外服務了,如果資料量大,恢複的時間會相當的長。為瞭解決Redis主從Copy的問題,有如下兩個解決方案:

主動複製
所謂主動複製,就是業務層雙寫多個Redis,避開Redis內建的主從複製。但是自己幹同步,就會產生一致性問題,為了保證主從一致,需要加入一系列的驗證機制。而且這樣的做法,會降低系統效能。
修改原始碼,支援增量同步處理
Redis寫AOF檔案,關閉Redis rewrite AOF檔案功能,為了避免檔案過大,可以自己實現檔案分割功能。
在業務低峰時期,產生記憶體快照,並記錄快照時刻AOF所在的點。
當從機重連的時候,從機發送同步命令給主機,主機收到命令後,把最新的快照檔案發送給從機,從機從快照檔案中恢複,並且獲得了該快照對應的AOF點,從機將AOF點發送給主機,主機將AOF檔案中該點之後的所有資料操作同步給從機,達到增量同步處理的效果。

二、解決擴容問題

Redis作者的思路是:Redis Presharding(http://oldblog.antirez.com/post/redis-presharding.html)

預算設定Redis instances數量,假設執行個體數量n,n = 機器數*單台機器redis執行個體數
後期擴充只需要將舊機器上的部分redis執行個體遷移到新的機器上,達到平滑擴容。
遷移步驟如下:

在新的機器上建立執行個體,並且每個執行個體設定為被遷移執行個體的從機。
主從複製完成之後,設定程式將新的執行個體作為主。
停止舊的執行個體
經過如上步驟之後,舊機器的記憶體就變大了,最後記憶體最大為每台機器一個Redis執行個體。

按作者文章中所說的,一個機器啟動多個執行個體,其實並不會耗費太多資源,因為Redis夠輕量,另外多個執行個體一個接一個的重寫AOF檔案或者產生記憶體快照,可以降低記憶體的佔用,而不影響對外的服務。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.