Twemproxy,Twitter 发布的 Redis 代理服务(2)

在深入项目的更多特性之前,有一个好消息,它在Linux上非常容易构建。好吧,没有Redis那么简单,但是……你仅仅需要简单按照下面的几步操作:
apt-get install automake
apt-get install libtool
git clone git://github.com/twitter/twemproxy.git
cd twemproxy
autoreconf -fvi
./configure --enable-debug=log
make
src/nutcracker -h


它的配置也非常简单,在项目的github页面上有足够的文档可以让你有一个平滑的初体验。我使用了如下的配置:
redis1:
  listen: 0.0.0.0:9999
  redis: true
  hash: fnv1a_64
  distribution: ketama
  auto_eject_hosts: true
  timeout: 400
  server_retry_timeout: 2000
  server_failure_limit: 1
  servers:
  - 127.0.0.1:6379:1
  - 127.0.0.1:6380:1
  - 127.0.0.1:6381:1
  - 127.0.0.1:6382:1

redis2:
  listen: 0.0.0.0:10000
  redis: true
  hash: fnv1a_64
  distribution: ketama
  auto_eject_hosts: false
  timeout: 400
  servers:
  - 127.0.0.1:6379:1
  - 127.0.0.1:6380:1
  - 127.0.0.1:6381:1
  - 127.0.0.1:6382:1

第一个集群配置为(故障时)节点自动排除,第二个集群则在所有实例上配置了静态映射。

有趣的是,针对同一组服务器你能同时有多个部署。然而在生产环境更适合使用多个示例以利用多核的能力。


单点失效?
---

还有另一件有趣的事情,使用这个部署并不意味着有单点失效问题,你可以通过运行多套twemproxy,让你的客户端连接到第一个可用的实例。


通过使用twemproxy你基本上把分片逻辑和客户端进行了分离。在这种情况下,一个基本的客户端就可以实现目的,分片将完全由代理来处理。

这是一个直接而安全的方法,个人观点。
现在Redis Cluster还不成熟,twemproxy是大多数希望利用Redis集群的用户的好方法。也不要太激动,先看看这种方法的限制 ;)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/0996dd12c9169ee20adcf2ff713a7e45.html