聊聊Twemproxy是什么

来源:互联网 发布:win8系统网络连接受限 编辑:程序博客网 时间:2024/06/05 13:24

最近看了京东的一些技术,发现京东中使用较多的,技术是nginx+redis+lua , 还有一种常用的就是 Twemproxy,这个东西是干什么的呢,根据名字可以看出它是一个代理的中间件 ,因为他的后端是多台REDIS 或memcached所以也可以被称为分布式中间件。

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 或 

主要解决问题和缺点

其功能:

通过代理的方式减少缓存服务器的连接数。

自动在多台缓存服务器间共享数据。

通过不同的策略与散列函数支持一致性散列。

通过配置的方式禁用失败的结点。

运行在多个实例上,客户端可以连接到首个可用的代理服务器。

支持请求的流式与批处理,因而能够降低来回的消耗。

其缺点:

不支持针对多个值的操作,比如取sets的子交并补等。

不支持Redis的事务操作。

错误消息、日志信息匮乏,排查问题困难。


测试结论

功能

  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 性能差不多。




0 0
原创粉丝点击