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是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和...
Redis高性能集群之Twemproxy of Redis 数据存储 MongoDB NOSQL简介及MongoDB支持的数据类型分析 MongoDB可视化客户端及JavaApi实践 手写基于MongoDB的ORM框架 MongoDB企业级集解决方案 MongoDB聚合、索引及...
middleware_development_learning:中间件,高性能服务器,分布式存储等(redis,memcache,nginx,大容量redis pika,rocksdb,mongodb,wiredtiger存储引擎,高性能代理中间件)二次开发,性能优化,逐步整理文档...
nginx多进程,高性能,低时延机制进行缓存中间件twemproxy,对twemproxy进行多进程优化改造,提升TPS,降低时延: nginx高并发设计优秀思想替代其他高并发代理中间件: redis,nginx,memcache,twemproxy,...
快速阅读并注释goquic,libquic,quic_client_server_example原始注释分析nginx高并发设计优秀思想替代其他高并发代理中间件:redis,nginx,memcache,twemproxy,mongodb等更多中间件,分布式系统,高效服务端核心...
redis,nginx,memcache,twemproxy,mongodb等更多中间件,分布式系统,高效服务端核心思想实现博客: ================================== << mongodb>> <<千万级tps /十万亿级数据量文档数据库内核研发...
20.3.4 Redis+Twemproxy配置 389 20.3.5 Mysql+Atlas配置 390 20.3.6 Java+Tomcat安装 394 20.3.7 Java+Tomcat逻辑开发 395 20.3.8 Nginx+Lua逻辑开发 401 21 使用OpenResty开发商品详情页 405 21.1 技术选型 407 ...
redis,nginx,memcache,twemproxy,mongodb等更多中间件,分布式系统,高效服务端核心思想实现博客: ================================== 本代码是linux内核网络协议栈源码(版本为2.6.35),本代码对三层及其以上...
9、基础设施技术涵盖了大型系统中常用的各种技术,包括了:LVS+KeepAlived、Nginx+Lua、Twemproxy+SSDB+Redis(磁盘+内存的分布式与读写分离双KV集群)、RabbitMQ消息中间件 10、直接可以二次开发的代码:本次升级...
阅读和注释wiredtiger-3.0.0 mongodb存储引擎wiredtiger原始代码分析注释=================================== ...redis,nginx,memcache,twemproxy,mongodb等更多中间件,分布式系统,高效服务端核心思想实现博客: