RabbitMQ/Redis/ZeroMQ/ActiveMQ/Jafka/Kafka
RabbitMQ
Erlang编写,支持多种协议:AMQP,XMPP, SMTP, STOMP
重量级,实现经纪人框架(Broker);
消息在发送给客户端时先在中心队列排队;
对路由(Routing),负载均衡(Load balance)或者数据持久化都有很好的支持。
Redis
支持MQ功能,可作为轻量级的队列服务;
Redis入队性能一般,但是出队性能非常好;
ZeroMQ
可实现RabbitMQ不擅长的高级/复杂的队列
ActiveMQ
类似ZeroMQ,以代理人和点对点技术实现队列;
也类似RabbitMQ,少量代码实现高级应用场景;
RocketMQ
做模块间的解耦
nanomsg
http://nanomsg.org/
Jafka/Kafka
Kafka为Publish/Subscribe消息队列系统;
Jafka是在Kafka上孵化出来的Kafka升级版;
特性:
- 快速持久化O(1)时间
- 高吞吐,普通机器10W/s吞吐率
- 完全的分布式系统:Broker、Producer、Consumer都为分布式,自动负载均衡
- 支持Hadoop数据并行加载
Kafka通过Hadoop并行加载机制统一在线和离线消息处理;
相对于ActiveMQ,Kafka非常轻量级;
用简单的话来说,你可以把Kafka当作可顺序写入的一大卷磁带, 可以随时倒带,快进到某个时间点重放。
其他队列列表
HornetQ、Apache Qpid、Sparrow、Starling、Kestrel、Beanstalkd、Amazon SQS
ZeroMQ仅支持非持久化队列;
Storm使用ZMQ传输数据;
使用消息队列的理由
、https://www.zhihu.com/question/22480085http://www.oschina.net/news/17973/message-queue-shootout
消息队列和rpc的比较
http://oldratlee.com/post/2013-02-01/synchronous-rpc-vs-asynchronous-message