twemproxy,也叫nutcraker。是一个twtter开源的一个redis和memcache代理服务器。 redis作为一个高效的缓存服务器,非常具有应用价值。但是当使用比较多的时候,就希望可以通过某种方式 统一进行管理。避免每个应用每个客户端管理连接的松散性。同时在一定程度上变得可以控制。 搜索了不少的开源代理项目,知乎实现的python分片客户端。node的代理中间层,还有各种restfull的开源代理。
-
RedBrige
- C + epoll实现的一个小的webserver
- redis自身执行lua脚本的功能来执行redis命令
- 访问时在url中带上lua脚本文件的名字,直接调用执行该lua脚本
- 本质是通过http协议远程执行lua脚本
-
Webdis
- libevent, http-parser...实现的小型web服务器
- C 语言实现,通过unix-socket,TCP调用redis命令。
- 访问方法:
/cmd/key/arg0,arg1,...
实质是对redis命令的简单变换
-
redis-proxy
- 使用node写的redis代理层。
- 支持主从节点的失败处理(可以仔细研究)
- 测试后发现性能为原生的1/3
-
twemproxy
-
支持失败节点自动删除
- 可以设置重新连接该节点的时间
- 可以设置连接多少次之后删除该节点
- 该方式适合作为cache存储
-
支持设置HashTag
- 通过HashTag可以自己设定将两个KEYhash到同一个实例上去。
-
减少与redis的直接连接数
- 保持与redis的长连接
- 可设置代理与后台每个redis连接的数目
-
自动分片到后端多个redis实例上
- 多种hash算法(部分还没有研究明白)
- 可以设置后端实例的权重
-
避免单点问题
- 可以平行部署多个代理层.client自动选择可用的一个
-
支持redis pipelining request
-
支持状态监控
- 可设置状态监控ip和端口,访问ip和端口可以得到一个json格式的状态信息串
- 可设置监控信息刷新间隔时间
-
高吞吐量
- 连接复用,内存复用。
- 将多个连接请求,组成reids pipelining统一向redis请求。
-
另外可以修改redis的源代码,抽取出redis中的前半部分,作为一个中间代理层。最终都是通过linux下的epoll 事件机制提高并发效率,其中nutcraker本身也是使用epoll的事件机制。并且在性能测试上的表现非常出色。
配置部署建议: 编译时候打开logging模块。
redis部署知识: AOF;一种记录redis写操作的文件,用于恢复redis数据。
相关推荐
另一个高性能 Redis 代理,替代 Twemproxy缓存OneCache 是基于 Redis 协议的分布式缓存中间件,用于替代 Twemproxy 或 Codis。单个 redis 实例不够强大,因此我们需要多个 redis 实例组来提高吞吐量。与 twemproxy ...
Redis是一个开源的、使用ANSI C编写的key-value类型内存数据库,它通常被用作数据库、缓存和消息中间件。在Redis中,数据是基于内存存储的,它支持多种类型的数据结构,如字符串(Strings)、列表(Lists)、集合(Sets)...
### 分布式缓存Redis与Memcached对比 #### Redis的优势 1. **数据类型丰富**:Memcached所有的值均为简单的字符串,而Redis则支持多种数据类型,如字符串(Strings)、列表(Lists)、集合(Sets)、有序集合(Sorted ...
1. **逻辑可控**:所有分片逻辑均由开发人员自行定义,无需依赖第三方分布式中间件,降低了潜在的技术风险。 2. **明确的规则**:开发人员对如何实现分片和路由规则有着清晰的理解,便于维护和优化。 **缺点**: 1....
在实际应用中,通过Twemproxy可以将客户端的请求智能地路由到不同的Redis节点,从而实现数据的分布式存储和负载均衡。 **Twemproxy详解** 1. **基本概念**:Twemproxy,又名Nutcracker,是由Twitter开源的一个轻量...
虽然Redis 3.0.501不支持官方的集群模式,但可以通过社区开发的工具如Twemproxy或Redis Sentinel实现分布式部署。在更高版本的Redis中,原生集群功能已经加入,能提供更强大的扩展性和高可用性。 通过了解并熟练...
然而,官方提供的解决方案以及开源社区中的分布式实现如Twemproxy,并不能完全满足这些新需求。 **Twemproxy存在的问题**: 1. **缺乏集群管理功能**:对于大规模集群而言,缺少有效的集群管理机制会导致运维工作变...
Redis是一种高性能的键值存储系统,常用于缓存、数据库和消息中间件等场景。面试中,Redis的相关问题通常涵盖其核心特性和使用场景。以下是一些常见的Redis面试知识点: 1. **Redis的主要功能** - **哨兵系统...
在集群方面,虽然Redis 2.8.13不支持官方的集群解决方案,但用户可以通过第三方工具如Twemproxy实现分布式部署。不过,从Redis 3.0开始,官方引入了内置的集群支持,允许数据自动分片到多个节点,提高了可扩展性。 ...
- 不依赖第三方分布式中间件,完全可控。 - 性能较高,因为避免了中间件带来的额外开销。 - **缺点**: - 升级维护成本高,每次增删Redis实例都需要调整客户端程序。 - 对开发人员的技术要求较高,且可能存在...
从2012年到2015年,开发者们尝试使用Redis+Twemproxy的方式处理大规模数据,这提供了一种简单有效的代理分片方式。但随着时间推移,人们对于访问方式、性能、容量、高可用性、语言客户端兼容性以及吞吐量和延迟的...
Redis是一款开源的高性能键值对存储系统,由于其支持多种数据结构如字符串、列表、集合、有序集合和哈希表等,常被用于数据库、缓存和消息中间件等多种场景。它的数据模型灵活,支持多种数据类型提供了丰富的操作...
- Redis Cluster:官方提供的分布式解决方案,支持槽分区。 - Twemproxy:轻量级代理,用于分发请求到多个Redis实例。 - Codis:由阿里巴巴开源的集群解决方案,支持动态扩容和缩容。 7. **Redis的内存管理**: ...
Redis 是一款高性能的键值存储系统,广泛应用于缓存、数据库和消息中间件等场景。相比 Memcached,Redis 有着诸多优势,包括支持更丰富的数据结构(如字符串、哈希、列表、集合和有序集合),提供虚拟内存、持久化和...
Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和...
Redis高性能集群之Twemproxy of Redis 数据存储 MongoDB NOSQL简介及MongoDB支持的数据类型分析 MongoDB可视化客户端及JavaApi实践 手写基于MongoDB的ORM框架 MongoDB企业级集解决方案 MongoDB聚合、索引及...
Redis Cluster 是官方提供的分布式解决方案,它无中心节点,数据按 Slot 均匀分布,支持平滑扩容缩容及自动故障转移。然而,Redis Cluster 依赖外部工具如 Redis-Trib 进行管理,缺乏完善的监控系统,需要智能...
middleware_development_learning:中间件,高性能服务器,分布式存储等(redis,memcache,nginx,大容量redis pika,rocksdb,mongodb,wiredtiger存储引擎,高性能代理中间件)二次开发,性能优化,逐步整理文档...
文件名“codis比较.txt”可能包含了对Codis与其他类似分布式缓存解决方案的对比,例如Redis Cluster或Twemproxy。在文件中,可能分析了各种方案的优缺点,如数据一致性、容错能力、操作复杂度和性能等方面,帮助读者...
Redis Cluster 是一种分布式架构方案,优点是无中心节点,数据按照 Slot 存储分布在多个 Redis 实例上,平滑的进行扩容/缩容节点,自动故障转移,降低运维成本,提高了系统的可扩展性和高可用性。但是,这种方案的...