在深入项目的更多特性之前,有一个好消息,它在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集群的用户的好方法。也不要太激动,先看看这种方法的限制 ;)