您的位置:首页 > 数据库 > Redis

Redis 存储分片之代理服务Twemproxy 测试

2015-06-03 10:40 477 查看

Redis 存储分片之代理服务Twemproxy 测试


转载自:http://blog.jpush.cn/redis-twemproxy-benchmark/


概述


实际业务场景中单点 Redis 容量、并发都是有限的,所以有 Redis Cluster 的需求。

但是官方的 Redis Cluster 一再跳票,还不可用。

只好先使用最简单的方式:Proxy。有很多可选,但在大范围生产使用的, Twitter 开源的 Twemproxy  看起来是个理想的选择 - https://github.com/twitter/twemproxy

我们期望的目标:

  • tag/alias 缓存集群(现在单点容量支持越来越不够)

  • 数据统计时高并发缓存


下面的文章内容也是基于实际生产需要而进行的一系列测试.

 

测试环境说明


本次测试的机器都是虚拟机,对应的母机配置为 Dell R710   Intel(R) Xeon(R) CPU       E5606  @ 2.13GHz  2CPU(单CPU 4核)  32G内存,上面安装了4台虚拟机,配置分别如下:

序号

机器IP

配置

部署服务

redis服务数量

1

192.168.2.65

4cpu,8GRam

redis,twemproxy

4个端口分别为(10000,10002,10003,10004)

2

192.168.2.66

4cpu,8GRam

redis

2个端口分别为(10000,10002)

3

192.168.2.67

4cpu,8GRam

redis

2个端口分别为(10000,10002)

4

192.168.2.68

4cpu,4GRam

redis,twemproxy

2个端口分别为(10000,10002)


虚拟机系统: CentOS release 6.3 (Final)    

Redis版本:2.6.16

Twemproxy版本:nutcracker-0.2.4


部署示意图


下面的测试都是根据上面的配置不同组合来进行测试得出对应的结论。

测试工具:Redis Benchmark.

 

测试结论


功能

  1. 前端使用 Twemproxy 做代理,后端的 Redis 数据能基本上根据 key 来进行比较均衡的分布。

  2. 后端一台 Redis 挂掉后,Twemproxy 能够自动摘除。恢复后,Twemproxy 能够自动识别、恢复并重新加入到 Redis 组中重新使用。

  3. Redis 挂掉后,后端数据是否丢失依据 Redis 本身的策略配置,与 Twemproxy 基本无关。

  4. 如果要新增加一台 Redis,Twemproxy 需要重启才能生效;并且数据不会自动重新 Reblance,需要人工单独写脚本来实现。

  5. 如同时部署多个 Twemproxy,配置文件一致(测试配置为distribution:ketama,modula),则可以从任意一个读取,都可以正确读取 key对应的值。

  6. 多台 Twemproxy 配置一样,客户端分别连接多台 Twemproxy可以在一定条件下提高性能。根据 Server 数量,提高比例在 110-150%之间。

  7. 如原来已经有 2 个节点 Redis,后续有增加 2 个 Redis,则数据分布计算与原来的 Redis 分布无关,现有数据如果需要分布均匀的话,需要人工单独处理。

  8. 如果 Twemproxy 的后端节点数量发生变化,Twemproxy 相同算法的前提下,原来的数据必须重新处理分布,否则会存在找不到key值的情况


性能

不管 Twemproxy 后端有几台 Redis,前端的单个 Twemproxy 的性能最大也只能和单台 Redis 性能差不多。

 

Twemproxy介绍


Twemproxy 也叫 nutcraker。是 Twtter 开源的一个 Redis 和 Memcache 代理服务器,主要用于管理 Redis 和 Memcached 集群,减少与Cache 服务器直接连接的数量。

Twemproxy特性:

  • 轻量级、快速

  • 保持长连接

  • 减少了直接与缓存服务器连接的连接数量

  • 使用 pipelining 处理请求和响应

  • 支持代理到多台服务器上

  • 同时支持多个服务器池

  • 自动分片数据到多个服务器上

  • 实现完整的 memcached 的 ASCII 和再分配协议

  • 通过 yaml 文件配置服务器池

  • 支持多个哈希模式,包括一致性哈希和分布

  • 能够配置删除故障节点

  • 可以通过端口监控状态

  • 支持 linux, *bsd,os x 和 solaris


Twemproxy安装配置参考官网:https://github.com/twitter/twemproxy 或 附后的 Reference。


启动命令:

[code=bash;toolbar:false">$/usr/local/twemproxy/sbin/nutcracker -d -c /usr/local/twemproxy/etc/test.yml -i 2000 -o logs/nutcracker.log

或者修改源码的 scripts 中的 ini 代码以 service 方式启动。


运行中如果需要查看运行状态使用下面方式,结果为json格式,需要自己格式化。

1.web界面运行启动服务的http://ip:22222查看,如本次测试查看url:http://192.168.2.68:22222/

2.使用nc命令查看 Twemproxy 状态语句:$nc 192.168.2.68 22222|python -mjson.tool 

[p]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: