<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    Couchbase介紹,更好的Cache系統(tǒng)

    在移動互聯(lián)網(wǎng)時代,我們面對的是更多的客戶端,更低的請求延遲,這當(dāng)然需要對數(shù)據(jù)做大量的 Cache 以提高讀寫速度。

    術(shù)語

    • 節(jié)點:指集群里的一臺服務(wù)器。

    現(xiàn)有 Cache 系統(tǒng)的特點

    目前業(yè)界使用得最多的 Cache 系統(tǒng)主要是 memcached 和 redis。 這兩個 Cache 系統(tǒng)都有都有很大的用戶群,可以說是比較成熟的解決方案,也是很多系統(tǒng)當(dāng)然的選擇。 不過,在使用 memcached 和 redis 過程中,還是碰到了不少的問題和局限:

    • Cluster 支持不夠。在擴(kuò)容、負(fù)載均衡、高可用等方面存在明顯不足。
    • 持久化支持不好,出現(xiàn)問題后恢復(fù)的代價大。memcached 完全不支持持久化,redis 的持久化會造成系統(tǒng)間歇性的負(fù)載很高。

    我期待的理想 Cache 系統(tǒng)

    良好的 cluster 支持

    • Key 可以動態(tài)分散(Auto Sharding)在不同的服務(wù)器上,可以通過動態(tài)添加服務(wù)器節(jié)點增加系統(tǒng)容量。
    • 沒有單點失效,任何一個單點都不會造成數(shù)據(jù)不可訪問。
    • 讀寫負(fù)載可以均勻分布在系統(tǒng)的不同節(jié)點上。

    支持異步持久化支持

    • 方便快速恢復(fù),甚至可以直接用作 key/value 數(shù)據(jù)庫。 經(jīng)常在跟業(yè)界朋友交流時,會提到用 key 分段的方法來做容量擴(kuò)展以及負(fù)載均衡。但是用靜態(tài)的 key 分段會有不少問題:
    • Cache 系統(tǒng)本身及使用 cache 的客戶端都需要預(yù)設(shè)一個分段邏輯,這個邏輯后期如果需要調(diào)整將會非常困難。不能解決單點失效的問題,還需要額外的手段。運維需要更多的人為參與,避免 key 超出現(xiàn)有分區(qū),一旦出現(xiàn) key 找不到對應(yīng)服務(wù)器,訪問直接失敗。

    最接近需求的系統(tǒng):Couchbase

    基于這些想法,我花了幾天時間在 google, stack overflow, quora 上看了很多大家關(guān)于 cache cluster 的討論,找到一個比較新系統(tǒng) Couchbase。

    mem vs cbmemcached VS couchbase

    Couchbase 的集群設(shè)計對等網(wǎng)

    Couchbase 群集所有點都是對等的,只是在創(chuàng)建群或者加入集群時需要指定一個主節(jié)點,一旦結(jié)點成功加入集群,所有的結(jié)點對等。

    high_level_architecture

    圖片來源:couchbase.com

    對等網(wǎng)的優(yōu)點是,集群中的任何節(jié)點失效,集群對外提供服務(wù)完全不會中斷,只是集群的容量受影響。 Smart Client

    由于 couchbase 是對等網(wǎng)集群,所有的節(jié)點都可以同時對客戶端提供服務(wù),這就需要有方法把集群的節(jié)點信息暴露給客戶端,couchbase 提供了一套機制,客戶端可以獲取所有節(jié)點的狀態(tài)以及節(jié)點的變動,由客戶端根據(jù)集群的當(dāng)前狀態(tài)計算 key 所在的位置。 vBucket

    vBucket 概念的引入,是 couchbase 實現(xiàn) auto sharding,在線動態(tài)增減節(jié)點的重要基礎(chǔ)。

    簡單的解釋 vBucket 可以從靜態(tài)分片開始說起,靜態(tài)分片的做法一般是用 key 算出一個 hash,得到對應(yīng)的服務(wù)器,這個算法很簡單,也容易理解。如以下代碼所示:

    servers = ['server1:11211', 'server2:11211', 'server3:11211'] server_for_key(key) = servers[hash(key) % servers.length] 

    但也有幾個問題:

    • 如果一臺服務(wù)器失效,會造成該分片的所有 key 失效。
    • 如果服務(wù)器容量不同,管理非常麻煩。
    • 前面提到過,運維、配置非常不方便。

    為了把 key 跟服務(wù)器解耦合,couchbase 引入了 vBucket。可以說 vBucket 代表一個 cache 子集,主要特點:

    • key hash 對應(yīng)一個 vBucket,不再直接對應(yīng)服務(wù)器。
    • 集群維護(hù)一個全局的 vBucket 與服務(wù)器對應(yīng)表。
    • 前面提到的 smart client 重要的功能就是同步 vBucket 表。

    如以下代碼所示:

    servers = ['server1:11211', 'server2:11211', 'server3:11211'] vbuckets = [0, 0, 1, 1, 2, 2] server_for_key(key) = servers[vbuckets[hash(key) % vbuckets.length]] 

    vBucket

    圖片來源:http://dustin.sallings.org/2010/06/29/memcached-vbuckets.html

    由于 vBucket 把 key 跟服務(wù)器的靜態(tài)對應(yīng)關(guān)系解耦合,基于 vBucket 可以實現(xiàn)一些非常強大有趣的功能,例如:

    • Replica,以 vBucket 為單位的主從備份。如果某個節(jié)點失效,只需要更新 vBucket 映射表,馬上啟用備份數(shù)據(jù)。
    • 動態(tài)擴(kuò)容。新增加一個節(jié)點后,可以把部分 vBucket 轉(zhuǎn)移到新節(jié)點上,并更新 vBucket 映射表。

    vBucket 非常重要,以后可以單獨寫一篇文章分享。

    總結(jié)

    • Couchbase 的對等網(wǎng)設(shè)計,smart client 直接獲取整的集群的信息,在客戶端實現(xiàn)負(fù)載均衡,整個集群沒有單點失效,并且完全支持平行擴(kuò)展。
    • vBucket 的引入,完全實現(xiàn)了 auto sharding,可以方便靈活的把數(shù)據(jù)的子集在不同節(jié)點上移動,以實現(xiàn)集群動態(tài)管理。
    • Couchbase 有一個非常專業(yè)的 web 管理界面,并且支持通過 RESTful API 管理,這也是 memcached, redis 不能企及的。
    • 如果只是做 key/value 的 cache,Couchbase 可以完全取代 memcached。
    • Couchbase 已經(jīng)被我們在生產(chǎn)環(huán)境中大量采用。

    posted on 2016-05-04 15:00 paulwong 閱讀(580) 評論(0)  編輯  收藏 所屬分類: COUCHBASE


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲欧洲中文日产| 亚洲综合精品网站| 在线观看视频免费国语| 无码专区永久免费AV网站| 日本成年免费网站| 国产精品69白浆在线观看免费| 免费精品国偷自产在线在线 | 麻豆亚洲AV永久无码精品久久 | 日韩免费高清一级毛片在线| 大学生a级毛片免费观看 | 免费国产99久久久香蕉| 黄色网址在线免费| 最近免费中文字幕mv电影| 日本zzzzwww大片免费| 91嫩草国产在线观看免费| 成人黄软件网18免费下载成人黄18免费视频| 最近中文字幕无免费视频| 国产福利免费观看| 亚洲国产精品尤物yw在线| 在线日韩日本国产亚洲| 亚洲AV无码成人专区片在线观看 | 国产亚洲情侣一区二区无| 亚洲日韩精品一区二区三区无码| 亚洲av中文无码乱人伦在线播放| 亚洲国产日韩一区高清在线| 亚洲国产av高清无码| 亚洲成AV人片在WWW| 成人久久久观看免费毛片| 精品免费视在线观看| 国产2021精品视频免费播放| 成人免费a级毛片无码网站入口 | 最近中文字幕国语免费完整 | 国产h肉在线视频免费观看| 成人免费无码大片A毛片抽搐色欲 成人免费无码大片a毛片 | 亚洲美女精品视频| 亚洲国产成人AV在线播放| 久久不见久久见免费影院www日本| 99在线热视频只有精品免费| 女人与禽交视频免费看| 中文字幕在线亚洲精品| 亚洲精品韩国美女在线|