Twemproxy是一個代理服務器,可以通過它減少Memcached或Redis服務器所打開的連接數。
Twemproxy有何用途呢?它可以:
- 通過代理的方式減少緩存服務器的連接數
- 自動在多台緩存服務器間共享數據
- 通過不同的策略與散列函數支持一致性散列
- 通過配置的方式禁用失敗的結點
- 運行在多個實例上,客戶端可以連接到首個可用的代理服務器
- 支持請求的流式與批處理,因而能夠降低來回的消耗
Redis的創建者Salvatore Sanfilippo(@antirez)撰寫了一篇文章,介紹了如何通過Twemproxy在開啟Redis-cluster特性前就讓Redis集群發揮作用,而在大多數情況下都不會喪失太多的性能:
Twemproxy的強大之處在於可以通過配置的方式讓它禁用掉失敗的結點,同時還能在一段時間后進行重試,抑或使用指定的鍵->服務器映射。這意味着在將Redis用作數據存儲時,它可以對Redis數據集進行分片(禁用掉結點驅逐);在將Redis用作緩存時,它可以啟用結點驅逐以實現簡單的高可用性。
Twemproxy速度很快,真的很快,它幾乎與直接訪問Redis速度一樣快。我敢說在最差的情況下,性能也只不過才損失20%而已。
我對性能問題唯一的想法是當在多個實例上使用命令時,我覺得MGET還有改進空間。
Twemproxy早在今年初由Twitter開源,它最開始支持Memcached,最近又添加了對Redis的支持。Twitter使用了大量的緩存服務器,每秒會發送300k的tweet;可以看看這篇介紹Real-Time Delivery Architecture At Twitter以了解更多信息。
原文: Twemproxy——針對MemCached與Redis的代理
Twemproxy, a Redis proxy from Twitter