-
速度快
-
轻量级
-
维护持久的服务器连接
-
在后台低消耗缓存redis数据库的连接数
-
启用请求和响应的管道
-
支持代理到多个服务器
-
同时支持多个服务器池
-
多个服务器自动分享数据
-
实现了完整的 memcached ascii 和 redis 协议.
-
服务器池配置简单,通过一个 YAML 文件即可
-
支持多个哈希模式,包括一致的哈希和分布
-
可配置在失败时禁用某个节点
-
通过统计监测端口的可观察性
-
支持 Linux, *BSD, OS X and Solaris (SmartOS)
wget https://github.com/twitter/twemproxy/archive/master.zip unzip master.zip cd twemproxy autoreconf -fvi ./configure make make install
redis1: listen: 127.0.0.1:8000 #监听的端口 redis: true #是否是Redis的proxy hash: fnv1a_64 #支持的hash算法 distribution: ketama #具体的算法 auto_eject_hosts: true #是否在结点无法响应的时候临时摘除结点 timeout: 4000 #超时时间(毫秒) server_retry_timeout: 2000 #重试的时间(毫秒) server_failure_limit: 3 #结点故障多少次就算摘除掉 servers: #下面表示所有的Redis节点(IP:端口号:权重) - 127.0.0.1:9001:1 - 127.0.0.1:9002:1 - 127.0.0.1:9003:1
(4)、启动twemproxy
src/nutcracker -d conf/nutcracker.yml
(5)、使用redis-cli测试
测试时发现,查看9001,9002,9003的aof文件时,不同的数据会分配到端口redis上,这个也正是基于一致性哈希算法,数据会分配到不同的节点中。也正是实现了数据分片。
二、nutcracker用法与命令选项
Options:
-h, –help : 查看帮助文档,显示命令选项
-V, –version : 查看nutcracker版本
-t, –test-conf : 测试配置脚本的正确性
-d, –daemonize : 以守护进程运行
-D, –describe-stats : 打印状态描述
-v, –verbosity=N : 设置日志级别 (default: 5, min: 0, max: 11)
-o, –output=S : 设置日志输出路径,默认为标准错误输出 (default: stderr)
-c, –conf-file=S : 指定配置文件路径 (default: conf/nutcracker.yml)
-s, –stats-port=N : 设置状态监控端口,默认22222 (default: 22222)
-a, –stats-addr=S : 设置状态监控IP,默认0.0.0.0 (default: 0.0.0.0)
-i, –stats-interval=N : 设置状态聚合间隔 (default: 30000 msec)
-p, –pid-file=S : 指定进程pid文件路径,默认关闭 (default: off)
-m, –mbuf-size=N : 设置mbuf块大小,以bytes单位 (default: 16384 bytes)
配置yml文件之后
nutcracker -t nutcracker.yml 可以检测配置文件是否正确
三、twemproxy缺点
- 虽然可以动态移除节点,但该移除节点的数据就丢失了。
- redis集群动态增加节点的时候,twemproxy不会对已有数据做重分布.maillist里面作者说这个需要自己写个脚本实现
- 性能上的损耗(其实作为代理 必定会有损耗, twemproxy损耗属于很小的级别了)
- 不支持针对多个值的操作,比如取sets的子交并补等(MGET 和 DEL 除外)
- 不支持Redis的事务操作
- 出错提示还不够完善
- twemproxy缺点中,动态移除不可用的节点,但是该节点的数据丢失了,这个缺点是最致命的,造成了CAP中的A缺失,可用性丢失,最好每个节点后面跟一个从节点,使用Keepalived+VIP,可以故障漂移,从节点自动升级为主节点。保证了高可用性。
- 性能会稍微有些丢失,既然是代理就是没办法避免的。
- 不能动态增加节点、删除节点,这个还要运维自行实现了,重启集群,不过这种操作本身也最好需要重启,分配新的集群集群。
相关推荐
本次实验的目的主要是搭建Redis Cluster和TwemProxy Redis两种集群,分别对其进行性能测试,测试出集群性能的拐点,找出性能的瓶颈有哪些,并对两套集群进行比较,以便于在不同业务场景下择优选择。
除了官方提供的集群方案外,还有一些第三方工具可以用于 Redis 的集群部署,例如 Twemproxy 和 Codis。 - **Twemproxy**: - 优点:配置简单,支持多种数据库; - 缺点:不支持动态扩容,运维相对麻烦; - **...
Redis 集群方案是为了应对单实例Redis在处理大规模数据时面临的存储瓶颈,尤其是在像新浪微博这样的大型应用中,单实例无法满足超过TB级...无论采用何种方案,确保数据一致性、高可用性和扩展性是设计Redis集群的关键。
从2012年到2015年,开发者们尝试使用Redis+Twemproxy的方式处理大规模数据,这提供了一种简单有效的代理分片方式。但随着时间推移,人们对于访问方式、性能、容量、高可用性、语言客户端兼容性以及吞吐量和延迟的...
twemproxy是twitter开发的一个redis代理proxy,Twemproxy可以把多台redis server当作一台使用,开发人员通过twemproxy访问这些redis servers 的时候不用关心到底去哪一台redis server读取k-v数据或者把k-v数据更新到...
- **Codis**:豌豆荚公司开发的一款Redis集群代理解决方案,需要修改Redis源码。 - **Predixy**:一款高性能且功能全面的Redis代理,支持Redis Sentinel和Redis Cluster。 - **Redis-Cerberus**:作为Redis Cluster...
Redis_集群_Twitter_Twemproxy模式_1.mp4 Redis_集群_Twitter_Twemproxy模式_2.mp4 Redis_集群_Twitter_Twemproxy模式_3.mp4 Redis_集群_Twitter_Twemproxy模式_4.mp4 Redis_集群_原生3.x集群模式_1.mp4 Redis_集群_...
在构建高可用性、高并发的Redis集群时,`Keepalive`、`Twemproxy`和Redis的主从配置是常见的技术组合。这些组件在分布式系统中起到关键作用,确保数据的可靠性和服务的稳定性。下面我们将详细探讨这三个组件以及它们...
2016122301_Redis_集群_Twitter_Twemproxy模式_1.mp4 2016122301_Redis_集群_Twitter_Twemproxy模式_2.mp4 2016122301_Redis_集群_Twitter_Twemproxy模式_3.mp4 2016122301_Redis_集群_Twitter_Twemproxy模式_4.mp4 ...
本文将详细介绍几种常见的Redis集群方案,包括客户端分片、Twemproxy、Codis以及Redis 3.0集群。 #### 一、客户端分片 **概念**: 客户端分片是一种将分片逻辑置于客户端实现的策略。该方案通过客户端预先定义好的...
以下是关于Redis集群及其在Linux下部署的详细知识点: 1. **Redis集群原理**: - Redis集群通过分片(Sharding)将数据分散到多个节点上,每个节点负责一部分数据,实现数据的水平扩展。 - 集群中的每个节点都有...
最近有个需求是需要用nginx播放服务器的视频,考虑安全问题,需要在nginx加个lua去取redis的token进行验证,刚开始访问测试环境单机还挺好用,可是要访问生产的是集群环境,找了多了资料趟了数不尽的坑,最终形成这...
在构建高可用的Redis集群时,我们通常会结合多种技术以确保服务的稳定性和连续性。在这个方案中,我们利用Sentinel、Twemproxy、Keepalive以及Redis自身来搭建一个高可用的环境。以下是各个组件的作用: 1. **Redis...
Twemproxy,又称为Nutcracker,是一款轻量级的代理服务,用于在多台Redis或SSDB服务器之间分发请求,提高系统的可扩展性和可用性。本章节将深入探讨这三者的安装与使用,帮助你更好地理解和应用这些技术。 首先,...
通过对Redis集群部署的相关知识点的详细讲解,我们可以看到,不同的分片方案各有优劣,选择合适的方案对于构建高效的Redis集群至关重要。在实际部署过程中,还需要考虑具体的应用场景和技术背景,以达到最佳的性能...
### Redis集群在腾讯游戏的应用及演进 #### 一、Redis简介 Redis是一种开源的、遵循BSD许可的高级键值存储系统。它以其强大的数据结构服务器功能而闻名,能够存储字符串(Strings)、哈希(Hashes)、列表(Lists...
除此以外,Redis官方提供的分布式方案、twemproxy等也是实现Redis集群的常见方式。 综上所述,Redis是一个功能强大且广泛应用的内存数据库,其单进程单线程的设计保证了高效的数据处理能力,支持多种数据结构以及...