消息中间件rocketmq 消息中间件( 五 )


7.4 Redis
使用C语言开发的一个Key-Value的NoSQL数据库 , 开发维护很活跃 , 虽然它是一个Key-Value数据库存储系统 , 但它本身支持MQ功能 , 所以完全可以当做一个轻量级的队列服务来使用 。对于RabbitMQ和Redis的入队和出队操作 , 各执行100万次 , 每10万次记录一次执行时间 。测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据 。实验表明:入队时 , 当数据比较小时Redis的性能要高于RabbitMQ , 而如果数据大小超过了10K , Redis则慢的无法忍受;出队时 , 无论数据大小 , Redis都表现出非常好的性能 , 而RabbitMQ的出队性能则远低于Redis 。
7.5 Kafka
Apache下的一个子项目 , 使用scala实现的一个高性能分布式Publish/Subscribe消息队列系统 , 具有以下特性:
7.6 ZeroMQ
号称最快的消息队列系统 , 专门为高吞吐量/低延迟的场景开发 , 在金融界的应用中经常使用 , 偏重于实时数据通信场景 。ZMQ能够实现RabbitMQ不擅长的高级/复杂的队列 , 但是开发人员需要自己组合多种技术框架 , 开发成本高 。因此ZeroMQ具有一个独特的非中间件的模式 , 更像一个socket library , 你不需要安装和运行一个消息服务器或中间件 , 因为你的应用程序本身就是使用ZeroMQ API完成逻辑服务的角色 。但是ZeroMQ仅提供非持久性的队列 , 如果down机 , 数据将会丢失 。如:Twitter的Storm中使用ZeroMQ作为数据流的传输 。
ZeroMQ套接字是与传输层无关的:ZeroMQ套接字对所有传输层协议定义了统一的API接口 。默认支持 进程内(inproc)  , 进程间(IPC)  , 多播 , TCP协议 , 在不同的协议之间切换只要简单的改变连接字符串的前缀 。可以在任何时候以最小的代价从进程间的本地通信切换到分布式下的TCP通信 。ZeroMQ在背后处理连接建立 , 断开和重连逻辑 。
特性:
二、主要消息中间件的比较
消息中间件定时任务区别触发时间不同 , 使用范围不同 。
1、消息中间件没有明确的触发时间 , 而定时任务具有明确的触发时间 。
2、消息中间件是在系统内部完成 , 定时任务则可以在系统内使用消息传递代替 。

秒懂生活扩展阅读