Twemproxy——针对 MemCached 与 Redis 的代理

  • Roopesh Shenoy
  • 张龙

2012 年 12 月 17 日

话题:语言 & 开发

Twemproxy是一个代理服务器,可以通过它减少MemcachedRedis服务器所打开的连接数。

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 – Proxy For MemCached And Redis

语言 & 开发