<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Couchbase

      Couchbase介紹,更好的Cache系統

      在移動互聯網時代,我們面對的是更多的客戶端,更低的請求延遲,這當然需要對數據做大量的 Cache 以提高讀寫速度。

      術語

      節點:指集群里的一臺服務器。

      現有 Cache 系統的特點

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

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

      我期待的理想 Cache 系統

      良好的 cluster 支持

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

      支持異步持久化

      • 方便快速恢復,甚至可以直接用作 key/value 數據庫。

      經常在跟業界朋友交流時,會提到用 key 分段的方法來做容量擴展以及負載均衡。但是用靜態的 key 分段會有不少問題:

      • Cache 系統本身及使用 cache 的客戶端都需要預設一個分段邏輯,這個邏輯后期如果需要調整將會非常困難。
      • 不能解決單點失效的問題,還需要額外的手段。
      • 運維需要更多的人為參與,避免 key 超出現有分區,一旦出現 key 找不到對應服務器,訪問直接失敗。

      最接近需求的系統:Couchbase

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

      memcached VS couchbase

      Couchbase 的集群設計

      對等網

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

      high level architecture

      圖片來源:couchbase.com

      對等網的優點是,集群中的任何節點失效,集群對外提供服務完全不會中斷,只是集群的容量受影響。

      Smart Client

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

      vBucket

      vBucket 概念的引入,是 couchbase 實現 auto sharding,在線動態增減節點的重要基礎。

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

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

      但也有幾個問題:

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

      為了把 key 跟服務器解耦合,couchbase 引入了 vBucket??梢哉f vBucket 代表一個 cache 子集,主要特點:

      1. key hash 對應一個 vBucket,不再直接對應服務器。
      2. 集群維護一個全局的 vBucket 與服務器對應表。
      3. 前面提到的 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 跟服務器的靜態對應關系解耦合,基于 vBucket 可以實現一些非常強大有趣的功能,例如:

      • Replica,以 vBucket 為單位的主從備份。如果某個節點失效,只需要更新 vBucket 映射表,馬上啟用備份數據。
      • 動態擴容。新增加一個節點后,可以把部分 vBucket 轉移到新節點上,并更新 vBucket 映射表。

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

      總結

      • Couchbase 的對等網設計,smart client 直接獲取整個集群的信息,在客戶端實現負載均衡,整個集群沒有單點失效,并且完全支持平行擴展。
      • vBucket 的引入,完全實現了 auto sharding,可以方便靈活的把數據的子集在不同節點上移動,以實現集群動態管理。
      • Couchbase 有一個非常專業的 web 管理界面,并且支持通過 RESTful API 管理,這也是 memcached, redis 不能企及的。
      • 如果只是做 key/value 的 cache,Couchbase 可以完全取代 memcached。
      • Couchbase 已經被我們在生產環境中大量采用。
      posted on 2013-11-14 11:13  刀鋒誠心  閱讀(1866)  評論(1)    收藏  舉報

      主站蜘蛛池模板: 国产高清在线a视频大全| 国产亚洲亚洲国产一二区| 新余市| 亚洲成人av在线资源网| 营山县| 日韩高清国产中文字幕| 亚洲男人天堂2018| 少妇厨房愉情理9仑片视频| 日韩精品无码免费专区午夜不卡| 久久亚洲精品日本波多野结衣| 欧美人成在线播放网站免费| 在线人人车操人人看视频| 国产视频不卡一区二区三区 | 国产成人精品a视频一区| 亚洲国产美国产综合一区| 亚洲AV日韩AV综合在线观看 | 大地资源免费视频观看| 中文字幕成人精品久久不卡| 欧美精品在线观看视频| 色婷婷综合久久久久中文字幕| 日本不卡的一区二区三区| 久久se精品一区精品二区国产| 亚洲偷偷自拍码高清视频| 一区二区三区鲁丝不卡| 国产卡一卡二卡三免费入口| 国产黄色一区二区三区四区| 国产精品剧情亚洲二区| 亚洲首页一区任你躁xxxxx| 久久se精品一区精品二区国产| 99精品国产一区二区三| 亚洲AV国产福利精品在现观看| 成人3D动漫一区二区三区| 天堂网av成人在线观看| 国产首页一区二区不卡| 亚洲国产av剧一区二区三区| 97人洗澡人人澡人人爽人人模| 岛国岛国免费v片在线观看| 中文字幕乱码中文乱码毛片 | 国产精品毛片一区视频播| 国产漂亮白嫩美女在线观看| 东乌珠穆沁旗|