jinfeng_wang

          G-G-S,D-D-U!

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks
          http://www.tuicool.com/articles/nM7zymJ


          Redis 集群 方案選型比較

          Redis數(shù)據(jù)量日益增大,使用的公司越來(lái)越多,不僅用于做緩存,同時(shí)趨向于存儲(chǔ)這一塊,這樣必促使 集群 的發(fā)展,各個(gè)公司也在收集適合自己的集群方案, 目前行業(yè)用的比較多的是下面幾種集群架構(gòu) ,大部分都是采用分片技術(shù),保證單實(shí)例內(nèi)存增大帶來(lái)的一系列問(wèn)題 ,下面所列出的 codis 方案目前正在不斷測(cè)試過(guò)程中,測(cè)試過(guò)程沒(méi)有展示出來(lái), 主要從以下幾點(diǎn)出發(fā) 。

          測(cè)試架構(gòu) 和性能 

          1、keepalived+haproxy 故障測(cè)試

          2、Zookeeper 集群節(jié)點(diǎn)測(cè)試

          3、Codis-proxy 集群節(jié)點(diǎn)測(cè)試

          4、Codis-server 集群節(jié)點(diǎn)測(cè)試

          5、 腳本 寫入大量 測(cè)試數(shù)據(jù) 并模擬 數(shù)據(jù)遷移

          6、 性能測(cè)試

          下面具體介紹 codis 和其他幾大集群方案

          集群方案:

          1、 主從高可用(該方案就是單實(shí)例形式,只是為了保證數(shù)據(jù)的安全,對(duì)于用戶數(shù)據(jù)少,業(yè)務(wù)的前期可以采用,目前我司緩存架構(gòu)就是采用該方案)

          2、 客戶端分片(典型代表: Jedis 。自主寫分片算法,代碼掌握在自己手中,可控性強(qiáng),但是需要專業(yè)的開(kāi)發(fā)運(yùn)維人員維護(hù),技術(shù)要求和維護(hù)成本高)

          3 、代理分片(典型代表: Twemproxy , redis 集群沒(méi)有正式推出之前官網(wǎng)推薦的方案,也是目前使用最多的)

          4、 Redis cluster ( 3 版本推出的集群方案,歷時(shí)四年之多的開(kāi)發(fā))

          5、 Codis 集群(豌豆莢 15 年開(kāi)源的解決方案,開(kāi)源之前其已經(jīng)用了 2 年之多,與其同期官網(wǎng)推出 redis cluster )

          6、 各大互聯(lián)網(wǎng)公司自主研發(fā)的集群架構(gòu),但是還沒(méi)有開(kāi)源,可能也不會(huì)開(kāi)源

          根據(jù)以上的簡(jiǎn)單介紹,下面主要解釋后面三種集群方案的特點(diǎn),以及針對(duì) 業(yè)務(wù) 的具體情況,斟酌選擇合適的架構(gòu)思考。

          codis 架構(gòu)圖

          簡(jiǎn)單說(shuō)明: 1 、 codis-proxy 提供連接集群 redis 的服務(wù)入口

          2 、 codis-config 管理工具,支持包括添加 / 刪除 redis/proxy 節(jié)點(diǎn),發(fā)起數(shù)據(jù)遷移等操作,自帶一個(gè) dashboard 工具,瀏覽器可以直觀查看集群的運(yùn)行狀態(tài)

          3 、 codis-server-group 實(shí)現(xiàn) redis 讀寫的水平擴(kuò)展、高性能

          4 、 codis-server 實(shí)現(xiàn) redis 實(shí)例服務(wù),通過(guò) codis-ha 實(shí)現(xiàn)服務(wù)的高可用

          5 、 Zookeeper/etcd 存放數(shù)據(jù)路由表和 codis-proxy 節(jié)點(diǎn)的元信息, codis-config發(fā)起的命令通過(guò)其同步到各個(gè)存活的 codis-proxy ,則 zookeeper 如果出問(wèn)題則可能導(dǎo)致數(shù)據(jù)不一致的情況或者嚴(yán)重的會(huì)對(duì)外提供服務(wù)造成影響

          說(shuō)明:一切知識(shí)點(diǎn)來(lái)源于官方,本人經(jīng)過(guò)測(cè)試一步步驗(yàn)證,大致總結(jié)以上幾點(diǎn)

          Twemproxy 架構(gòu)圖

          簡(jiǎn)單說(shuō)明: 1 、 proxy 提供分片算法和 redis 服務(wù)入口,支持高可用

          2 、 Redis 提供實(shí)現(xiàn)實(shí)例,并且通過(guò) sentinel 支持高可用

          3 、 Redis-Twemporxy 提供通知底層 HA 切換至 proxy

          4 、每個(gè)層結(jié)構(gòu)出現(xiàn)問(wèn)題或者變更節(jié)點(diǎn)信息等所有操作都需要重新規(guī)劃分片算法,則需要重啟服務(wù)

          Redis cluster 架構(gòu)圖

          簡(jiǎn)單說(shuō)明: 1 、 redis cluster 本身集群方案,客戶端可以任一連接一個(gè)節(jié)點(diǎn)

          2 、 redis-trib.rb 腳本為集群的管理工具,比如自動(dòng)添加節(jié)點(diǎn),規(guī)劃槽位,遷移數(shù)據(jù)等一系列操作( ruby 語(yǔ)言)

          3 、每個(gè)節(jié)點(diǎn)都和 N-1 個(gè)節(jié)點(diǎn)通信,所以要維護(hù)好這個(gè)集群架構(gòu)的每個(gè)節(jié)點(diǎn)信息,不然會(huì)導(dǎo)致整個(gè)集群不可工作

          注意:以下三大方案redis cluster基于3.0版本

          Redis 集群方案各參數(shù)比較

          Twemproxy

          Codis

          Redis Cluster

          架構(gòu)設(shè)計(jì)

          分布式 CAP, 犧牲 P 性能,而僅僅只是數(shù)據(jù)分片

          分布式 CAP, 犧牲 P 性能,設(shè)計(jì)初衷為數(shù)據(jù)一致性

          分布式 CAP,犧牲 C 數(shù)據(jù)強(qiáng)一致性原則,追求redis 最大的特點(diǎn)性能

          設(shè)計(jì)模型

          Proxy-based

          Proxy-based

          Gossip/P2P

          設(shè)計(jì)思路

          分布式邏輯和存儲(chǔ)引擎分開(kāi),邏輯層 proxy 代理,存儲(chǔ)用的是原子 redis ,當(dāng)每個(gè)層面需要添加刪除節(jié)點(diǎn)必須重啟服務(wù)生效(要重新利用散列函數(shù)生成 KEY 分片更新)

          分布式邏輯和存儲(chǔ)引擎分開(kāi),邏輯層 codis-proxy ,存儲(chǔ)用的是修改過(guò)的 codis-server, 這種好處是 proxy 層可以自動(dòng)擴(kuò)展和收縮,存儲(chǔ)層也同樣可以,每個(gè)層面都可以熱插撥

          分布式的邏輯和存儲(chǔ)引擎不分開(kāi),即又負(fù)責(zé)讀寫操作,又負(fù)責(zé)集群交互,升級(jí)困難,如果代碼有 bug ,集群無(wú)法工作

          架構(gòu)特點(diǎn)

          Proxy 無(wú)狀態(tài), redis數(shù)據(jù)層有狀態(tài)的,客戶端可以請(qǐng)求任一 proxy 代理上面,再由其轉(zhuǎn)發(fā)至正確的 redis 節(jié)點(diǎn),該 KEY分片算法至某個(gè)節(jié)點(diǎn)都是預(yù)先已經(jīng)算好的,在 proxy 配置文件保存著,但是如果更新或者刪除節(jié)點(diǎn),又要根據(jù)一致性 hash 重新計(jì)算分片,并且重啟服務(wù)

          Proxy 無(wú)狀態(tài), codis-server 分為組間,每個(gè)組存在一個(gè)主節(jié)點(diǎn)(必須有并且只能有一個(gè))和多個(gè)從節(jié)點(diǎn)。客戶端請(qǐng)求都是和 proxy 鏈接,鏈接哪個(gè) proxy 都一樣,然后由它根據(jù) zookeeper 路由信息轉(zhuǎn)發(fā)至正確節(jié)點(diǎn),直接可以定位到正確節(jié)點(diǎn)上

          這個(gè)結(jié)構(gòu)為無(wú)中心的組織,不好把控集群當(dāng)前的存活狀態(tài),客戶端可以向任一節(jié)點(diǎn)發(fā)送請(qǐng)求,再有其重定向正確的節(jié)點(diǎn)上。如果在第一次請(qǐng)求和重定向期間 cluster 拓?fù)浣Y(jié)構(gòu)改變,則需要再一次或者多次重定向至正確的節(jié)點(diǎn),但是這方面性能可以忽悠不計(jì)

          codis獨(dú)特之處

          不支持

          1、 有中心節(jié)點(diǎn),邏輯問(wèn)題交由 proxy 處理, codis還有個(gè)特點(diǎn)下層存儲(chǔ)可以根據(jù)數(shù)據(jù)的冷熱程度把冷數(shù)據(jù)暫時(shí)保存至磁盤,待其為熱數(shù)據(jù)的時(shí)候又可以上線(這點(diǎn)我還沒(méi)有測(cè)試)

          2、 提供數(shù)據(jù)在線遷移的工具

          比如需求要從 redis 或者 twemproxy 遷移數(shù)據(jù)至 codis或者以后 redis 數(shù)據(jù)庫(kù)中,又不想直接預(yù)熱,可以借助其提供的 redis-port 命令行工具

          不支持

          開(kāi)發(fā)語(yǔ)言

          C 語(yǔ)言

          Go 語(yǔ)言、 C 語(yǔ)言

          C 語(yǔ)言

          服務(wù)啟動(dòng)方式

          單進(jìn)程

          多進(jìn)程

          單進(jìn)程

          性能問(wèn)題

          1、 單點(diǎn)的話比起原子redis 降低 20% 左右;

          2、 增加 PIPELINE 管道提高性能

          只要是代理的設(shè)計(jì)性能瓶頸肯定在其,因 redis實(shí)在太快

          1、 相當(dāng)于單 redis 實(shí)例 40% 性能丟失 ( 從最開(kāi)始的版本比 Twemproxy慢20% 至目前比其快 100%) ;

          2、 彌補(bǔ):增加 proxy 數(shù)量和支持多核,比起 Twemproxy 還是好一點(diǎn),因 Twemproxy 最好的情況跑滿一個(gè) CPU ;

          3、 彌補(bǔ):增加 PIPELINE管道提高性能

          只要是代理的設(shè)計(jì)性能瓶頸肯定在其,因 redis 實(shí)在太快

          沒(méi)什么損失,追求的就是這個(gè)

          1000 個(gè)節(jié)點(diǎn)內(nèi)擁有線性的伸縮性,和操作 redis實(shí)例性能差不多

          分片算法

          Redis 一致 hash ,當(dāng)初設(shè)計(jì)好如后續(xù)變更修改(增減節(jié)點(diǎn))需要配置 proxy 通知新的算法,重啟服務(wù)

          通過(guò)presharding采用 solt槽位的形式,整個(gè)集群分為1024 個(gè)哈希槽,分片算法位SlotId = crc32(key) % 1024,增減節(jié)點(diǎn)不需要重啟服務(wù)

          采用 solt 槽位的形式,整個(gè)集群分為 16384 個(gè)哈希槽,分片算法位 SlotId = crc16(key) % 16384,增減節(jié)點(diǎn)不需要重啟服務(wù)

          所需組件

          Redis 、 twemproxy(nutcracker)

          Codis 、 zookeeper

          redis

          數(shù)據(jù)一致性

          不能保證強(qiáng)一致性

          1、 如 redis cluster 第一種情況沒(méi)有,設(shè)計(jì)不一樣

          2、 網(wǎng)絡(luò)分裂,這種情況其有監(jiān)控工具可以通知管理員某個(gè)主節(jié)點(diǎn)宕機(jī),這時(shí)如果管理員切換 HA(但是不提供自動(dòng)提升從節(jié)點(diǎn)為主節(jié)點(diǎn),因從節(jié)點(diǎn)變?yōu)橹鞴?jié)點(diǎn)必須更新分片算法,重啟服務(wù)),數(shù)據(jù)就會(huì)丟失,因主節(jié)點(diǎn)的寫命令會(huì)丟失,除非再次 AOF 同步最后一條寫命令,二者如國(guó)管理員可以判斷其為網(wǎng)絡(luò)分裂,等待網(wǎng)絡(luò)恢復(fù)是主節(jié)點(diǎn)會(huì)向從節(jié)點(diǎn)同步寫命令數(shù)據(jù)

          強(qiáng)一致性

          1、 數(shù)據(jù)遷移過(guò)程中數(shù)據(jù)強(qiáng)一致性性,因遷移都是一個(gè)個(gè) KEY 原子遷移,每次操作都是給 ZK 發(fā)送信息,通知 proxy ,同時(shí)所有操作都是上一把鎖,假如該期間有客戶端訪問(wèn),則提升訪問(wèn)該KEY 的操作為優(yōu)先操作,快速遷移至新節(jié)點(diǎn),訪問(wèn)轉(zhuǎn)移至新節(jié)點(diǎn),不會(huì)訪問(wèn)老的 KEY ,如期間也可以中斷正在同步的數(shù)據(jù),也是不影響,因?yàn)?nbsp;redis 沒(méi)有回滾機(jī)制,要么成功要么失敗

          2、 網(wǎng)絡(luò)分裂:因?yàn)樗脑O(shè)計(jì)初衷就是不考慮 HA 自動(dòng)切換(后面添加該功能),等到網(wǎng)絡(luò)恢復(fù) Zookeeper 保證數(shù)據(jù)一致性,寫命令不會(huì)丟失 ,所有操作都要在zookeeper 上面注冊(cè)

          不能保證強(qiáng)一致性

          比如官網(wǎng)給出的兩種有可能丟失寫命令的情況如下

          1、 客戶端向主節(jié)點(diǎn) A 發(fā)送一條寫命令,主節(jié)點(diǎn)是首先立馬向客戶端返回命令回復(fù),然后再把剛剛的執(zhí)行寫命令同步至從節(jié)點(diǎn),追求性能所致該設(shè)計(jì)

          2、 網(wǎng)絡(luò)分裂(network partition) ,如果時(shí)間很長(zhǎng)導(dǎo)致 A 節(jié)點(diǎn)的從節(jié)點(diǎn)轉(zhuǎn)換為主節(jié)點(diǎn),然這中間可能存在客戶端正在和 A 節(jié)點(diǎn)通信也就被孤立了,這樣寫的命令將丟失,如當(dāng)網(wǎng)絡(luò)恢復(fù) A 又重新加入集群

          數(shù)據(jù)的特殊安全

          1、 比如某段時(shí)間業(yè)務(wù)數(shù)據(jù)一下爆表(內(nèi)存寫滿),數(shù)據(jù)來(lái)不及遷移,這樣的話 redis 會(huì)根據(jù) LRU 策略,會(huì)淘汰一部分老的 key ,這個(gè)沒(méi)辦法,所以運(yùn)維中當(dāng)內(nèi)存使用 80% 時(shí)應(yīng)該擴(kuò)容

          2、 主從切換過(guò)程中有一部分?jǐn)?shù)據(jù)丟失(主掛了到從切換上來(lái)丟失的這部分?jǐn)?shù)據(jù))

          磁盤 IO

          基于 redis 本身的持久化( RDB 和 AOF ),肯定會(huì)存在數(shù)據(jù)丟失的情況

          數(shù)據(jù)的遷移

          不可在線遷移,并且遷移完之后需要修改配置文件的分片算法,再重新啟動(dòng) Twemproxy 服務(wù),重新識(shí)別分片算法

          采用 sharding 在線遷移數(shù)據(jù),安全透明,可以自動(dòng)平衡數(shù)據(jù)到其他節(jié)點(diǎn),相當(dāng)于可熱插撥,不會(huì)造成響應(yīng)時(shí)延(因遷移時(shí)會(huì)另外有個(gè)進(jìn)程來(lái)做,數(shù)據(jù)遷移還是原子的數(shù)據(jù)遷移指令,這樣遷移的話就會(huì)相當(dāng)慢一些)

          在線遷移數(shù)據(jù),動(dòng)態(tài)遷移 KEY 值會(huì)造成響應(yīng)時(shí)延(遷移數(shù)據(jù)是拷貝 RDB 數(shù)據(jù)文件,而且因?yàn)?nbsp;redis 是單進(jìn)程的),另外新節(jié)點(diǎn) solt 又不自動(dòng),依賴 ruby(redis cluster 集群管理和分配腳本 )腳本來(lái)平衡數(shù)據(jù),無(wú)中心設(shè)計(jì)如此

          水平擴(kuò)容縮容(增減節(jié)點(diǎn))

          Redis 存儲(chǔ)層操作,不提供自動(dòng)的解決方案,并且要自己寫腳本支持?jǐn)?shù)據(jù)的搬遷活動(dòng),然后更改 proxy 哈希算法,重啟服務(wù)

          Redis 存儲(chǔ)層,都是在線操作(擴(kuò)容數(shù)據(jù)遷移,縮容的話先搬遷數(shù)據(jù)至別的節(jié)點(diǎn),然后下線該節(jié)點(diǎn))

          沒(méi)有代理和存儲(chǔ)之分,可以在線操作(擴(kuò)容數(shù)據(jù)遷移,縮容的話先搬遷數(shù)據(jù)至別的節(jié)點(diǎn),然后下線該節(jié)點(diǎn))

          主從是否必須

          1、 沒(méi)有數(shù)據(jù)復(fù)制不影響可用節(jié)點(diǎn)代替故障節(jié)點(diǎn)

          2、 如果沒(méi)有做備份,故障節(jié)點(diǎn) key 全部丟失

          1、 故障節(jié)點(diǎn)如果沒(méi)有備份,則丟失掉該組的所有數(shù)據(jù),但是不影響其他組的運(yùn)行,不會(huì)導(dǎo)致整個(gè)集群壞掉

          2、 如有備份節(jié)點(diǎn),則把其升為主節(jié)點(diǎn),集群沒(méi)有影響,正常運(yùn)轉(zhuǎn)(需要管理員手動(dòng)變更從節(jié)點(diǎn)為主節(jié)點(diǎn),最新版本添加 HA 功能)

          沒(méi)有主從復(fù)制的節(jié)點(diǎn)一旦故障,將導(dǎo)致整個(gè)集群不可用,無(wú)法寫入或者讀入任何 key ,無(wú)法進(jìn)行數(shù)據(jù)重新分片

          官網(wǎng)建議:至少 3 主 3 從

          主從特點(diǎn)

          基于 redis 本身的主從方案(利用發(fā)布 / 訂閱機(jī)制,采用廣播形式),

          采用異步復(fù)制( asynchronous replication )的方案,無(wú)論是 master 端還是 slave 端都不會(huì)引起阻塞,但是肯定是存在數(shù)據(jù)丟失的情況

          集群設(shè)計(jì)

          1、 proxy 部署高可用(多 proxy 結(jié)合 keepalived+haporxy )

          2、 redis 層設(shè)計(jì)多主多從部署

          1、 proxy 部署(多 proxy+zookeeper 集群方案,并且結(jié)合 keepalived+haporxy )

          2、 codis-server 部署多組,每組部署一主多從架構(gòu)

          利用 redis 本身部署集群:至少 3 主 3 從

          HA 方案

          Proxy 層已經(jīng)有了,由上面的設(shè)計(jì), redis 層基于自帶的 HA 解決方案(sentinel ),這里不闡述sentinel 機(jī)制

          Proxy 層已經(jīng)有了,存儲(chǔ)層本來(lái)設(shè)計(jì)就沒(méi)有考慮自動(dòng)HA 切換,后面根據(jù)用戶強(qiáng)烈的要求,目前添加 codis-ha解決

          自主監(jiān)控自動(dòng)切換 ( 把 sentinel功能搬遷過(guò)來(lái) )

          故障監(jiān)控

          自帶監(jiān)控并告警

          自帶監(jiān)控并告警

          目前還沒(méi)有提供

          故障檢測(cè)和故障轉(zhuǎn)移時(shí)間

          1 、 proxy 配置文件設(shè)置: auto_eject_hosts: true  

          timeout: 400

          server_failure_limit: 3

          當(dāng) proxy server 超時(shí) 400 毫且 3 次重試機(jī)會(huì),則認(rèn)為該 proxy 節(jié)點(diǎn)壞掉,這樣故障節(jié)點(diǎn)從 hash 環(huán)直接取下,并且清理該 Key 信息

          故障轉(zhuǎn)移耗時(shí):400*3=1200 毫秒

          2 、如果存儲(chǔ)層加入 sentinel 做 HA

          (注意:底層 redis 轉(zhuǎn)移故障之后,因 proxy 層不知道該配置信息已經(jīng)變動(dòng),此時(shí)需要引入第四方工具 redis-twemproxy-agent ( node.js ),更新Twemproxy 配置,并重啟)

          故障轉(zhuǎn)移耗時(shí):

          每個(gè) sentinel 以每秒發(fā)送一次 ping ,配置 down-after-milliseconds=2s,則主觀認(rèn)為下線 3 秒,然數(shù)量 sentinel (配置文件可以配置)認(rèn)可同意需要 1s ,再 sentinel 當(dāng)選故障轉(zhuǎn)移主持節(jié)點(diǎn)需要 1秒,選出 slave 升級(jí)為 master 需要 0.5 秒,通過(guò)發(fā)布和訂閱推送更新配置至其他 sentinel 并且配置更新需要 1 秒,這樣 總共耗時(shí) 6.5 秒。

          1、 proxy 層配置文件:

          backend_ping_period=5則表示 5 秒 zookeeper 沒(méi)有等到 pong 回應(yīng)就認(rèn)為 proxy已經(jīng)壞掉

          故障轉(zhuǎn)移耗時(shí): 5 秒

          2、 存儲(chǔ)層本來(lái)不設(shè)置自動(dòng)故障遷移的

          (后面添加 codis-ha 機(jī)制)

          過(guò)程: codis-ha 通過(guò)dashboard監(jiān)控每組的存活狀況,zookeeper 能夠快速知道存活的 proxy 節(jié)點(diǎn),然后休眠3 秒再次監(jiān)控至重試 3 次,大致 10 秒左右時(shí)間切換,但是官方建議,還是不希望使用該解決方案,因主節(jié)點(diǎn)有問(wèn)題,立馬切換從節(jié)點(diǎn)為主節(jié)點(diǎn)可能導(dǎo)致數(shù)據(jù)丟失的情況。推薦大家使用手動(dòng)切換,做好監(jiān)控,確定好數(shù)據(jù)安全然后使用 web 界面或者命令手動(dòng)操作(因用戶的強(qiáng)烈要求才加入該解決方案)

          Redis cluster拓?fù)浣Y(jié)構(gòu)是一張完全圖:每個(gè)節(jié)點(diǎn)都持有 N-1 個(gè)輸入 TCP 和 N-1個(gè)輸出 TCP 。

          這里不闡述故障監(jiān)控和切換的流程(比如 FAIL狀態(tài)、 slave 選主時(shí)機(jī)和 cluster邏輯時(shí)鐘等)

          故障轉(zhuǎn)移耗時(shí)(配置文件可以修改)

          Node_time=2

          Fail_report_validity_mult=3

          標(biāo)記 master為 pfail 耗時(shí) 2秒,升級(jí) pfail 為fail 狀態(tài)耗時(shí)為 2*3=6 秒,選主前隨機(jī)延期期望為1 秒,收集足夠多 master 投票為 max((2*node_time),2)=4 秒

          這樣總共耗時(shí)13 秒。

          功能限制

          1、 不支持多 key 操作

          2、 不支持 MULTI/EXEC

          3、 不支持 EVAL

          比較多,可以查看官方文檔

          1、 復(fù)雜的多KEY(set 求并求交集 ) 不能跨節(jié)點(diǎn)操作

          2、 不支持 MULTI/EXEC

          3、 寫丟失比較頻繁

          提供支持

          不在維護(hù)

          目前活躍狀態(tài)

          官網(wǎng)主打

          客戶端driver工具

          保持不變( redis 支持的都支持)

          保持不變( redis 支持的都支持)

          只能支持 cluster 協(xié)議的客戶端工具(目前官網(wǎng)上面說(shuō)的是針對(duì)JAVA 的是 Jides,針對(duì) PHP 的是 Predis ,而且不成熟)

          概括

          1、 輕量級(jí)

          2、 在 proxy 層實(shí)現(xiàn)一致性哈希

          3、 快速的故障轉(zhuǎn)移

          4、 可借助 sentinel 實(shí)現(xiàn)底層 HA

          5、 每次變更必須重啟生效

          1、 基于 zookeeper 的 proxy 高可用 ,zookeeper 會(huì)記錄整個(gè)集群的生存狀態(tài),則需要維護(hù)好 zookeeper

          2、 優(yōu)勢(shì)為動(dòng)態(tài)水平擴(kuò)容,平衡數(shù)據(jù),在遷移的時(shí)候不影響業(yè)務(wù)訪問(wèn)和響應(yīng)時(shí)間,這點(diǎn)很炫,也是它主打的方向

          3、 Dashboard 操作降低人失誤率,圖形直觀查看信息

          4、 強(qiáng)一致數(shù)據(jù)(也是設(shè)計(jì)的重點(diǎn))

          1、 性能好(也是設(shè)計(jì)的原則)

          2、 無(wú)中心組織結(jié)構(gòu),有利有弊

          3、 故障轉(zhuǎn)移響應(yīng)時(shí)間長(zhǎng)

          4、 有寫丟失,比較頻繁

          總結(jié): 沒(méi)有最好的架構(gòu),只有最合適的架構(gòu)

          posted on 2016-12-15 11:21 jinfeng_wang 閱讀(567) 評(píng)論(0)  編輯  收藏 所屬分類: 2016-REDIS
          主站蜘蛛池模板: 扎囊县| 庆元县| 光山县| 临漳县| 泽普县| 尚志市| 报价| 万盛区| 凤山市| 齐齐哈尔市| 辽宁省| 武定县| 重庆市| 襄城县| 遂川县| 寿宁县| 高唐县| 义马市| 磐安县| 兰考县| 长泰县| 准格尔旗| 五莲县| 饶河县| 滦平县| 阿坝| 巴塘县| 朝阳市| 广宁县| 鄂托克前旗| 南漳县| 额敏县| 荥经县| 邢台市| 郓城县| 泸西县| 日土县| 正定县| 朝阳县| 彭泽县| 长乐市|