Redis特性分析

来源:互联网 发布:树莓派3 网络配置 编辑:程序博客网 时间:2024/04/30 15:38

在看阿里技术嘉年华的时候看到了张乐伟分享的淘宝消息中间件演变,讲的是Metaq,http://adc.alibabatech.org/
追溯到Metaq的核心开发人员庄晓丹分布式消息中间件 MetaQ 作者庄晓丹专访         ,为下文将rdis作铺垫

一、Metaq介绍
全称Metamorphosis,是一个高性能、高可用、可扩展的分布式消息中间件,起源于LinkedLn的Kafka。具有消息存数顺序写、吞吐量大和支持本地和XA(分布式交易处理的规范 )事务等特性,适用于大吞吐量、顺序消息、广播和日志数据传输等场景。先看下性能测试报告:

硬件

  • CPU 16核 intel
  • 内存 24G
  • 磁盘 SAS 15000转,RAID 10
软件
  • JDK6
  • RedHat 5.x
  • Metaq java client

场景

           单个消息生产者客户端,并发100个线程,使用同一个producer发送消息,并启动订阅者消费。

  • 同组和不同组:是指10个consumer是否同一个分组,如果是同一个分组则共同分担消费同一个topic;否则,每个consumer完整消 费该topic。通俗地说,同组就是一条消息只会被分组内一个consumer消费,不同组,则一条消息会被每个consumer消费。


MetaQ在淘宝每日有十亿级别的消息流转,在支付宝有百亿级别的消息流转(作为storm的spout源),在阿里B2B也有部分应用 ,AVOS.com在使用它作为后端系统的消息中间件。还有部分公司在尝试使用,例如腾讯、京东等。然而,Metaq 需要依赖zookeeper ,不如redis等轻量。

二、Redis

Redis既可以当Cache又可以当Queue,这里与Memcached稍作比较存在,Memcached存在Object Size的问题,由于SQL未作优化直接映射对象,导致缓存对象大于1MB,Memcached就抛了异常。
而Redis默认缓存对象512MB,最大支持1GB。至少在缓存对象时,可以有更大的伸缩空间了!此外,Memcached比较简单,而Redis可以支持更多复杂的数据类型,如HASH、SET、SortedSet等等。

更多详细的比较cankao《Redis与Memcached的区别 》
总体来说快速的原因如下: 
1)绝大部分请求是纯粹的内存操作(非常快速) 
2)采用单线程,避免了不必要的上下文切换和竞争条件
内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间 

Redis的使用入门,可参考文《征服 Redis》

关于Epoll以及Redis的持久化,后续再讲。



0 0
原创粉丝点击