memcached的變種產品

國內外有很多基於Memcached開發的產品,這些產品支持所有Memcached的協議,同時側重不同的應用場景,可以根據自己的應用需求選擇合適的Memcached變種。下面分別介紹幾種Memcached的變種產品。

1. memcachedb

memcachedb是新浪網基於Memcached開發的一個開源項目。通過爲Memcached增加Berkeley DB的持久化存儲機制和異步主輔複製機制,使Memcached具備了事務恢復能力、持久化能力和分佈式複製能力,非常適合需要超高性能讀寫速度、持久化保存的應用場景,例如,將memcachedb應用於新浪博客的管理。如果對Memcached有持久化需求,可以考慮使用memcachedb。

2. repcached

repcached是日本人開發的基於Memcached的一個patch,實現Memcached的複製功能,它支持多個Memcached之間相互複製,可以解決Memcached的容災問題。有cache容災需求的可以嘗試使用這一功能。

3. memcached_functions_mysql

這個功能相當於MySQL的UDFs(User Defined Functions),在MySQL中通過觸發器更新Memcached。這樣可以做到把數據寫入MySQL,然後從Memcached獲取數據,以減輕數據庫的壓力,同時減少很多開發的工作量。

關於memcached_functions_mysql的使用和經驗會在下一節進行詳細介紹。

4. memcacheQ

memcacheQ在Memcached的基礎上實現了消息隊列。下面以PHP客戶端爲例介紹memcacheQ實現消息隊列的方式。

消息從尾部入棧:memcache_set

消息從頭部出棧:memcache_get

memcacheQ最大的優勢是:它是基於Memcached開發的,可以通過各種Memcached命令對它進行操作。基於Memcached開發的應用完全不需要做任何修改。

memcacheQ應用於數據庫的多機房分佈式部署環境,數據庫分佈在各地,各自寫各自的數據庫,同時寫入本地的memcacheQ,本地的memcacheQ通過調度程序(需要自己開發)把數據從memcacheQ中讀取出來,然後寫入其他機房的數據庫主庫,最終使每個機房的數據庫數據一致。如圖3-14所示爲memcacheQ在兩個機房的部署情況。

 
圖3-14 memcacheQ在數據庫的多機房分佈式部署環境中的結構
消息隊列服務還能使一個有波峯的業務轉化成一條直線,這對利用資源非常有好處,只需要準備直線的資源,不需要準備到波峯的資源。Twitter之前通過RabbitMQ來實現消息隊列服務,現在改爲通過Kestrel來實現消息隊列服務,類似的消息隊列服務產品還有ActiveMQ和ZeroMQ等。
發佈了54 篇原創文章 · 獲贊 22 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章