`
flychao88
  • 浏览: 751916 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Redis分布式中间件TwemProxy

 
阅读更多

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数据。

分享到:
评论

相关推荐

    最全50道Redis高频面试题.pdf

    Redis是一个开源的、使用ANSI C编写的key-value类型内存数据库,它通常被用作数据库、缓存和消息中间件。在Redis中,数据是基于内存存储的,它支持多种类型的数据结构,如字符串(Strings)、列表(Lists)、集合(Sets)...

    蚂蚁中间件团队面试题:Netty+Redis+Kafka+MongoDB+分布式

    ### 分布式缓存Redis与Memcached对比 #### Redis的优势 1. **数据类型丰富**:Memcached所有的值均为简单的字符串,而Redis则支持多种数据类型,如字符串(Strings)、列表(Lists)、集合(Sets)、有序集合(Sorted ...

    Redis集群_实际使用自己整理的版本.docx

    1. **逻辑可控**:所有分片逻辑均由开发人员自行定义,无需依赖第三方分布式中间件,降低了潜在的技术风险。 2. **明确的规则**:开发人员对如何实现分片和路由规则有着清晰的理解,便于维护和优化。 **缺点**: 1....

    Twemproxy 0.4.1

    在实际应用中,通过Twemproxy可以将客户端的请求智能地路由到不同的Redis节点,从而实现数据的分布式存储和负载均衡。 **Twemproxy详解** 1. **基本概念**:Twemproxy,又名Nutcracker,是由Twitter开源的一个轻量...

    redis -3.0.501 -windows x64

    虽然Redis 3.0.501不支持官方的集群模式,但可以通过社区开发的工具如Twemproxy或Redis Sentinel实现分布式部署。在更高版本的Redis中,原生集群功能已经加入,能提供更强大的扩展性和高可用性。 通过了解并熟练...

    Redis的改造与实践

    然而,官方提供的解决方案以及开源社区中的分布式实现如Twemproxy,并不能完全满足这些新需求。 **Twemproxy存在的问题**: 1. **缺乏集群管理功能**:对于大规模集群而言,缺少有效的集群管理机制会导致运维工作变...

    Redis面试题(含答案).pdf

    Redis是一种高性能的键值存储系统,常用于缓存、数据库和消息中间件等场景。面试中,Redis的相关问题通常涵盖其核心特性和使用场景。以下是一些常见的Redis面试知识点: 1. **Redis的主要功能** - **哨兵系统...

    Redis的Linux版本2.8.13

    在集群方面,虽然Redis 2.8.13不支持官方的集群解决方案,但用户可以通过第三方工具如Twemproxy实现分布式部署。不过,从Redis 3.0开始,官方引入了内置的集群支持,允许数据自动分片到多个节点,提高了可扩展性。 ...

    redis数据库集群部署

    - 不依赖第三方分布式中间件,完全可控。 - 性能较高,因为避免了中间件带来的额外开销。 - **缺点**: - 升级维护成本高,每次增删Redis实例都需要调整客户端程序。 - 对开发人员的技术要求较高,且可能存在...

    Redis专场:Codis 集群演化与 Redis 异步迁移

    从2012年到2015年,开发者们尝试使用Redis+Twemproxy的方式处理大规模数据,这提供了一种简单有效的代理分片方式。但随着时间推移,人们对于访问方式、性能、容量、高可用性、语言客户端兼容性以及吞吐量和延迟的...

    Redis详细使用说明书

    Redis是一款开源的高性能键值对存储系统,由于其支持多种数据结构如字符串、列表、集合、有序集合和哈希表等,常被用于数据库、缓存和消息中间件等多种场景。它的数据模型灵活,支持多种数据类型提供了丰富的操作...

    最全50道Redis高频面试题

    - Redis Cluster:官方提供的分布式解决方案,支持槽分区。 - Twemproxy:轻量级代理,用于分发请求到多个Redis实例。 - Codis:由阿里巴巴开源的集群解决方案,支持动态扩容和缩容。 7. **Redis的内存管理**: ...

    Redis面试专题1

    Redis 是一款高性能的键值存储系统,广泛应用于缓存、数据库和消息中间件等场景。相比 Memcached,Redis 有着诸多优势,包括支持更丰富的数据结构(如字符串、哈希、列表、集合和有序集合),提供虚拟内存、持久化和...

    Redis 的各项功能主要解决了什么问题

    Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和...

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

    Redis高性能集群之Twemproxy of Redis 数据存储 MongoDB NOSQL简介及MongoDB支持的数据类型分析 MongoDB可视化客户端及JavaApi实践 手写基于MongoDB的ORM框架 MongoDB企业级集解决方案 MongoDB聚合、索引及...

    redis集群主流架构方案分析.doc

    Redis Cluster 是官方提供的分布式解决方案,它无中心节点,数据按 Slot 均匀分布,支持平滑扩容缩容及自动故障转移。然而,Redis Cluster 依赖外部工具如 Redis-Trib 进行管理,缺乏完善的监控系统,需要智能...

    middleware_development_learning:中间件,高性能服务器,分布式存储等(redis,memcache,nginx,大容量redis pika,rocksdb,mongodb,wiredtiger存储引擎,高性能代理中间件)二次开发,性能优化,逐步整理文档说明并配合演示指导-每周末定时更新2-3篇文章和程序演示-(技术交流QQ群:568892619)

    middleware_development_learning:中间件,高性能服务器,分布式存储等(redis,memcache,nginx,大容量redis pika,rocksdb,mongodb,wiredtiger存储引擎,高性能代理中间件)二次开发,性能优化,逐步整理文档...

    Codis使用入门

    文件名“codis比较.txt”可能包含了对Codis与其他类似分布式缓存解决方案的对比,例如Redis Cluster或Twemproxy。在文件中,可能分析了各种方案的优缺点,如数据一致性、容错能力、操作复杂度和性能等方面,帮助读者...

    redis集群主流架构方案分析.docx

    Redis Cluster 是一种分布式架构方案,优点是无中心节点,数据按照 Slot 存储分布在多个 Redis 实例上,平滑的进行扩容/缩容节点,自动故障转移,降低运维成本,提高了系统的可扩展性和高可用性。但是,这种方案的...

    Redis面试题.docx

    Redis 是一款高性能的键值存储系统,常用于缓存、数据库和消息中间件等场景。在面试中,Redis 的相关知识通常包括其核心特性和功能、数据类型、高可用性解决方案、事务处理、持久化机制以及与其他缓存系统的比较等...

Global site tag (gtag.js) - Google Analytics