制作APP關于Redis 3.0集群
Redis 3.0集群采用了P2P的模式,完全去中心化。Redis把所有的Key分成了16384個slot,每個Redis實例負責其中部分slot。集群中的所有信息(節(jié)點、端口、slot等),部通過節(jié)點之間定期的數(shù)據(jù)交換而更新。Redis客戶端在任意一個Redis實例發(fā)出請求,深圳APP開發(fā)公司分享如果所需數(shù)據(jù)不在該實例中通過重定向命令引導客戶端訪問所需的實例。
APP開發(fā)Redis 3 0集群的工作流程如圖7-18所示
制作APP集群模式示意圖7-18Redis 3.0集群的工作流程
如上圖所示Redis集群內的機器定期交換數(shù)據(jù),工作流程如下。
1.Redis客戶端在Redis2實例上訪問某個數(shù)據(jù)。
2.在Redis2內發(fā)現(xiàn)這個數(shù)據(jù)是在Redis3這個實例中,給Redis客戶端發(fā)送個重定向的命令
3.Redis客戶端收到重定向命令后,訪問Redis3實例獲取所需的數(shù)據(jù)。
Redis 3.0的集群方案有以下兩個問題
·個Redis實例具備了“數(shù)據(jù)存儲”和“路由重定向”,完全去中心化的設計。這帶來的好處是部署非常簡單,直接部署Redis就行,不像Codis有那么多的組件和依賴。如果哪天Redis集群出了什么嚴重的Bug,就只能回滾整個Redis集群。但帶來的問題是很難對業(yè)務進行無痛的升級。
·對協(xié)議進行了較大的修改,對應的Redis客戶端也需要升級。升級Redis客戶端后誰能確保沒有Bug?而且對于線上已經大規(guī)模運行的業(yè)務,升級代碼中的Redis客戶端也是個很麻煩的事情。
綜合上面所述的兩個問題.Redis 3.0集群在業(yè)界并沒有被大規(guī)模使用。
APP開發(fā)之云服務器上的集群服務
國內的云服務器提供商阿里云、UCloud等均推出了基于Redis的云存儲服務。這個服務的特性如下:
1.動態(tài)擴容
用戶可以通過控制面板升級所需的Redis存儲空間,擴容的過程中服務部不要中斷或停止,整個擴容過程對用戶透明、無感知,這點是非常實用的,在前面介紹的方案中,解決Redis平滑擴容是個很煩瑣的任務,現(xiàn)在按幾下鼠標就能搞定,大大減少了運維的負擔。
2.數(shù)據(jù)多備
數(shù)據(jù)保存在主各兩臺機器中,其中臺機器宕機了,數(shù)據(jù)還在另外一臺機器上有備份
3.自動容災
主機宕機后系統(tǒng)能自動檢測并切換到備機上,實現(xiàn)服務的高可用。
4.實惠
很多情況下為了使Redis的性能更高,需要購買一臺專門的服務器用于Redis的存儲服務,但這樣子CPU、內存等資源就浪費了,購買Redis云存儲服務就很好地解決了這個問題。
有了Redis云存儲服務,能使App后臺開發(fā)人員從煩瑣運維中解放出來的運維成本和精力。如果使用云存儲服務,就沒必要投入這些成本和精力。App后臺要搭建一個高可用、高性能的Redis服務,需要投人相當可以讓App后臺開發(fā)人員更專注于業(yè)務。好了,APP開發(fā)公司關于服務器與Redis 3.0集群解決方案的經驗分享本文就到這里。喜歡本站的朋友請持續(xù)關注本站,謝謝。博納網絡編輯整理。