`

twemproxy搭建和简介

阅读更多

twemproxy是 Twitter 开源出来的 Redis 和 Memcached 代理

其功能:

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

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

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

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

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

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

其缺点:

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

不支持Redis的事务操作。

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

 

-------------------------------------------------------------------------------------

 

那么说一下搭建环境的方法:https://github.com/twitter/twemproxy

To build nutcracker from distribution tarball:

$ ./configure
$ make
$ sudo make install

To build nutcracker from distribution tarball in debug mode:

$ CFLAGS="-ggdb3 -O0" ./configure --enable-debug=full
$ make
$ sudo make install

To build nutcracker from source with debug logs enabled and assertions disabled:

$ git clone git@github.com:twitter/twemproxy.git
$ cd twemproxy
$ autoreconf -fvi
$ ./configure --enable-debug=log
$ make
$ src/nutcracker -h

我使用的是第一种方法(需要下载他的nutcracker包),原因是服务器基本包缺的太多。

 

 ---------------------------------------------------------------------------

安装完需要配置(我只配置了本地36一台机子,#后边是注释)

 

redis1: #服务器池成员名字

 

  listen: 192.168.6.36:19999 #twemproxy启动端口

 

  hash: fnv1a_64 #具体的hash函数

 

  distribution: ketama #hash算法-如何分布key,关系到均匀分布key的算法,影响命中key等性能,这里是ketama算法

 

  auto_eject_hosts: true #是否在节点无法响应的时候临时找出,区分save data的slave和cache data的slave

 

  redis: true #是否是redis的proxy

 

  server_retry_timeout: 2000 #重试时间ms

 

  server_failure_limit: 1 #节点故障多少次后摘除

 

  servers: # redis节点(ip:端口号:权重)

 

   - 192.168.6.36:6379:1

 

-----------------------------------------------------------------------------------

 

 安装配置完成后,可以用nutcracker -t来检查配置文件

                                        nutcracker -d后天启动服务

                                        nucracker -D和nucracker stat查看代理状态

 

 

------------------------------------------------------------------------------------

 

接下来翻译一下老牛使用nutcracker的心得:

不支持mutiple keys的原因,将这个放在用户设计上,避免从mutiple keys上进行聚合等操作的时间

Currently is AFAIK even more strict than Redis Cluster that instead allows MULTI/EXEC blocks if all the commands are about the same key.

But IMHO it's the way to go, distribute the subset you can distribute efficiently, and pose this as a design challenge early to the user, instead to invest a big amount of resources into "just works" implementations that try to aggregate data from multiple instances, but that will hardly be fast enough once you start to have serious loads because of too big constant times to move data around.

 

在twemproxy中,一些在redis中如get的命令,如果报错,会一直占有这个链接

Twemproxy在errors时,可以监控到error,但是无法做到用其他node代替当前node进行操作,只是发出一个 A SLAVE OF NOONE commond

       twemproxy is already able to monitor instance errors, count the number of errors, and eject the node when enough errors are detected. Well it is a shame it is not able to take slave nodes as alternatives, and instead of eject nodes use the alternate nodes just after sending a SLAVE OF NOONE command. This would turn it into an HA solution as well

 

在twemproxy中,对failover失效转化的处理,是用sentinel configuration有规律的更新服务器表

2) Or alternatively, I would love if it could be able to work in tandem with Redis Sentinel, checking the Sentinel configuration regularly to upgrade the servers table if a failover happened.

 

还有一种替代的方法,是有一个hot-configure,在失败的时候,可是转化到这个配置文件,进行代理操作proxy ASAP

3) Another alternative is to provide a way to hot-configure twemproxy so that on fail overs Sentinel could switch the configuration of the proxy ASAP.

 

贴一些我查看的帖子,很有帮助:

http://blog.nosqlfan.com/html/4147.html

http://antirez.com/news/44

https://github.com/twitter/twemproxy/issues?page=1&sort=created&state=open

https://github.com/twitter/twemproxy

 

 一些在此的专业词汇:failover , IMHO ,  ASAP , Redis , Memcached , twemproxy , nutcracker

 

 

 

 

分享到:
评论

相关推荐

    Twemproxy 0.4.1

    4. **构建Redis集群**:使用Twemproxy搭建Redis集群,可以解决Redis原生集群配置复杂、网络通信开销大等问题。Twemproxy可以将客户端的请求路由到合适的Redis节点,实现数据的分布和复制。 5. **部署与配置**:部署...

    Twemproxy 安装过程

    redis集群代理Twemproxy 安装过程,Twemproxy是一个专门为了这种nosql数据库设计的一款代理工具软件,这个工具软件最大的特征是可以实现数据的分片处理。所谓的分片指的是根据一定的算法将要保存的数据保存到不同的...

    twemproxy_v0.5+autoconf-2.69.rar | twemproxy版本为2021年11月最新版

    综上所述,这个压缩包提供了twemproxy的最新版本和必要的编译工具,适用于需要搭建和优化Redis缓存系统的情况。安装和使用过程中,用户需要了解twemproxy的基本概念和配置,以及如何利用autoconf来处理源码编译。...

    redis集群搭建及各方案比较

    2. Twemproxy:轻量级代理,用于分发请求,不提供数据持久化和故障转移功能,适合对一致性要求不高的场景。 3. Codis:由阿里巴巴开源,提供可视化管理工具,简化集群操作,支持动态扩容缩容。 4. Redisa:基于 ...

    Windows环境下搭建Redis集群所需资源及其文档

    在Windows环境下搭建Redis集群是一项技术性较强的任务,但有了正确的资源和文档,这一过程可以变得相对简单。Redis是一个高性能的键值存储系统,常用于缓存、消息队列等场景,而集群则能提供高可用性和扩展性。下面...

    Redis开发运维实践指南完整版PDF最新版本

    本手册是我(作者)在一家中国大陆的中型商业银行做大数据系统工程师中进行的总结归纳,包含开发和运维的各方面的使用、应用场景和最佳实践,以及各个高可用架构的搭建和测试 目录 Redis开发运维实践指南 简述 数据...

    Redis高可用集群实现1

    在这个方案中,我们利用Sentinel、Twemproxy、Keepalive以及Redis自身来搭建一个高可用的环境。以下是各个组件的作用: 1. **Redis**: Redis是我们的主要缓存服务器,负责存储数据并提供高速访问。 2. **Sentinel*...

    开涛高可用高并发-亿级流量核心技术

    1.3.7 文档和注释 14 1.3.8 备份 14 1.4 总结 14 第2部分高可用 17 2 负载均衡与反向代理 18 2.1 upstream配置 20 2.2 负载均衡算法 21 2.3 失败重试 23 2.4 健康检查 24 2.4.1 TCP心跳检查 24 2.4.2 HTTP心跳检查 ...

    twemproxylibso-centos-64.tar.gz

    在描述中提到,“搭建redis集群的时候,需要安装twemproxy库文件”,这表明在创建Redis集群的过程中,Twemproxy扮演了一个关键角色。为了确保集群能够正常运行,我们需要在系统中安装这个库。一旦安装了这些库文件,...

    Redis集群性能测试分析

    本次实验的目的主要是搭建Redis Cluster和TwemProxy Redis两种集群,分别对其进行性能测试,测试出集群性能的拐点,找出性能的瓶颈有哪些,并对两套集群进行比较,以便于在不同业务场景下择优选择。

    吴涛英文简历1

    - 熟悉Kingshard、Mycat、Twemproxy和Codis等数据库中间件,用于分布式数据库管理。 10. **监控与运维**: - 使用EKL、Zabbix监控系统性能,确保Nginx、Mysql、Redis和Php等服务的稳定运行。 - 使用WM监控程序...

    10. 【实战】部署redis的读写分离主从架构

    目录搭建步骤启用复制,部署slave node强制读写分离集群安全认证读写分离架构的测试 搭建步骤 一主一从,往主节点去写,在从节点去读,可以读到,主从架构就搭建成功了,包含节点间认证口令 启用复制,部署slave ...

    redis Sentinel模式详解.docx

    5. Redis 高可用性服务的解决方案:包括 Keepalived、Codis、Twemproxy 和 Redis Sentinel 等,其中 Redis Sentinel 是官方的解决方案,可以监控 Redis Server 服务是否正常,并自动地将备份(slave)Redis Server ...

    藏经阁-瓜子后端技术架构的变迁.pdf

    * 搭建监控平台,增加XHProf和应用日志,提供订阅功能 * 制定统一应用日志规范 * 增加Redis集群,基于Twemproxy来做中间代理 架构V0.5的改进: * 业务之间的耦合减少 * 数据库的性能扩展性提高 * 监控平台的建立,...

    Java面试题redis部分.docx

    - 基于代理分片如 Codis 和 Twemproxy,简化客户端操作,但引入额外的性能开销。 4. 双写一致性问题通常通过事务或特定策略解决,如双删延迟策略,先删除 Redis 数据,更新数据库,等待一段时间后再删除 Redis ...

    Java思维导图xmind文件+导出图片

    NOSQL简介及MongoDB支持的数据类型分析 MongoDB可视化客户端及JavaApi实践 手写基于MongoDB的ORM框架 MongoDB企业级集解决方案 MongoDB聚合、索引及基本执行命令 MongoDB数据分片、转存及恢复策略 MyCat ...

    Java架构师简历模板(P6、P7).docx

    * 精通Redis,具有集群搭建(Twemproxy、Codis、Redis Cluster),冷热备份,性能调优、数据迁移等实战经验 * 消息中间件:掌握RocketMQ原理及集群布署 * 负载均衡:熟练使用Nginx(Tengine、Openresty)、Zookeeper...

    redis-windows客户端

    Redis 是一个高性能的键值...总的来说,"redis-windows客户端"是Windows用户快速搭建和使用Redis环境的关键。通过理解Redis的基本概念、配置方法以及操作命令,可以有效地利用这个内存数据结构存储系统,提升应用性能。

    小米网架构变迁实践

    MCC是由Twemproxy和Redis构建而成的高性能缓存系统,具有速度快、可扩展性强和稳定性高的特点。它支持热加载、全Redis协议、多线程以及业务隔离等功能,能够在单个节点上提供高达14万QPS的性能,并且可以根据业务...

Global site tag (gtag.js) - Google Analytics