1. 程式人生 > >Mcrouter-基於Memcached協議的緩存層流量管理工具(Memcached集群的另一個選擇)(轉)

Mcrouter-基於Memcached協議的緩存層流量管理工具(Memcached集群的另一個選擇)(轉)

cache 代碼 自動 open 句柄 不同 github tex key

Mcrouter 是一個基於Memcached協議的路由器,它是 Facebook緩存架構的核心組件,在峰值的時候,它能夠處理每秒50億次的請求。近日,Facebook開放了Mcrouter的源代碼,且遵從BSD協議,希望能夠幫助更多的網站使用Mcrouter並擴大其系統規模。因為任何要接入Memcached服務的客戶端都會使用標準ASCII編碼的Memcached協議,所以對於客戶端來說,Mcrouter就像一個Memcached服務器;而對於服務器端來說,Memcached卻又像一個普通的Memcached客戶端。采用Memcached的通用API作為通信方式如下圖所示:

技術分享

Mcrouter主要特性如下:

  • 支持標準、開源的Memcached ASCII編碼協議,使得支持Memcached協議的所有客戶端無需做任何修改即可支持Mcrouter。
  • 能夠使得客戶端共享連接池,達到減少連接個數的目的。
  • 提供了一個非常有效的一致性哈希算法,允許給多個Memcached實例分配哈希值。
  • 能夠根據key前綴把客戶端分配到不同的Memcached池中。
  • 能夠在多個主機上保存一份相同數據的備份。
  • 在測試新緩存設備時,Mcrouter能夠路做到從客戶端到緩存設備的所有可能路徑都可用的。
  • 支持靈活的跟蹤配置,通過重新哈希值範圍跟蹤測試不同大小的Memcached池,或只跟蹤哈希值範圍的一部分,或在運行時動態修改跟蹤環境。
  • 支持熱加載配置文件,它會監控所有的配置文件,一旦檢測到配置文件被修改,就啟動一個後臺線程自動地重新加載、分析這些文件,並根據新配置來處理新請求。
  • 支持靈活的路由方式,路由句柄是由小路由模塊組合而成,這些路由模塊公用一個接口,也可以自由組合,單個路由句柄更容易理解、創建和測試。
  • 支持目的主機的心跳檢測和自動故障轉移,能夠檢測每個目的主機的心跳。
  • 允許以主機、池或者集群為單位設置任何請求的速率的閥值,同時也支持限制請求的速度以減緩請求的發送速度,以保障服務質量。
  • 通過一個內核一個線程的方式充分利用了多核系統的優勢,在處理異步處理網絡事件時,使用了內部的輕量級線程即纖程。
  • 具有豐富的stats和debug命令,並提供了安全可靠的刪除操作。
  • 能夠通過簡單的配置管理大的多集群,還能夠根據slab的大小自動分割或重組數據塊
  • 能夠通過廣播操作把請求數據備份到多個Memcached池中或者集群裏面。
  • 支持本地和遠程緩存兩級緩存,自動填充新增緩存以消除新增緩存區造成的性能影響
  • 采用JSON格式的配置,支持通過任意方式的路由處理,以適應各種路由需求。

更多Mcrouter相關信息,請登錄其在GitHub上的站點查看,常用示例請參考這裏。另外,Mcrouter由Facebook在去年的[email protected]大會上提出,並於近日開源,即將成為Facebook 在新推出的TODO開源協作聯盟當中開源的第一項技術。據Facebook方面介紹,Mcrouter 能夠在Facebook遍布全世界的數據中心的服務器集群的緩存層中快速分配調用數據,它具有極強的適應性,峰值時可以達到每秒50億次的請求。去年,Instagram 數據向Facebook平穩轉移就是使用的該技術。

Mcrouter主要使用C++開發,且使用C開發了功能庫部分,使用Ragel開發了協議解析部分,使用開源庫Folly和Fbthrift處理異步網絡。盡管Mcrouter已經開源,但是Facebook仍然一直尋求改進Mcrouter性能的方法(如修復Bug、添加新特性等),並作持續的更新和改進;還會在Github Wiki上維護Mcrouter的文檔,同時還建立了一個Facebook討論組,用來推動Mcrouter項目持續、健康的發展。

參考:

http://www.infoq.com/cn/news/2014/09/mcrouter-memcached(以上內容轉自此篇文章)

http://www.oschina.net/translate/introducing-mcrouter-a-memcached-protocol-router-for-scaling-memcached-deployments

https://github.com/facebook/mcrouter/wiki(官方介紹)

https://github.com/facebook/mcrouter/wiki/mcrouter-installation(Ubuntu的安裝參考)

鏈接: https://pan.baidu.com/s/1bMhuZs 密碼: 8p8k(Mcrouter中文手冊第二章)

Mcrouter-基於Memcached協議的緩存層流量管理工具(Memcached集群的另一個選擇)(轉)