通過Redis筆記(一)純小白版篇,Redis筆記(二)主從複製和Redis筆記(三)添加密碼並修改默認端口後的主從同步三篇文章,我們已經能建立一個可以使用的主從複製的Redis了,例如下圖:
在此基礎上,我們做了讀寫分離,寫主庫,讀從庫,如下:
這樣的確實現了讀和寫的分離,但是,不管是啓動還是運行過程中,只要有一個redis工作不正常,哪怕另外一個工作正常,整個redis對外就不可用——主不可用時,不可寫,從不用時不可讀,於是出現了單點故障問題,爲了解決這個問題,做了如下改進:
經過改造後,主redis和從redis只在啓動前有明確的主從關係,啓動時如果發現主或者從有一個不可用,那麼就把讀寫共同指向可用的redis,爲了達到運行時的高可用,把加載主從redis抽象成一個方法,當訪問redis出現異常時,再次調用加載redis的方法,這樣,只要在運行的過程中,有一個可用的redis,則redis就可以對外提供服務。
此爲上篇,下一篇分享一下我的實現方法。