最近要为公司的消息队列中间件进行选型,市面上相关的开源技术又非常多,如ActiveMQ、RabbitMQ、ZeroMQ、Kafka,还有阿里巴巴的RocketMQ等。

这么多技术,如何进行选型呢?

首先对于阿里的RocketMQ,因为是阿里开源的,对于国内开源的保持谨慎的态度,暂时不采取该中间件。

所以只能在ActiveMQ、RabbitMQ、ZeroMQ、Kafka中间选一款作为消息队列中间件。

下面从几个维度来对比下

1、社区活跃度

从目前网上的资料上看,RabbitMQ、activeMQ、ZeroMQ三者中RabbitMQ绝对是首选。

2、消息持久化

ZeroMq不支持消息持久化,ActiveMQ和RabbitMQ都支持。

3、核心技术

可靠性、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件系统等等。

RabbitMq / Kafka最好,ActiveMQ次之,ZeroMQ最差。当然ZeroMQ也可以做到,不过自己必须手动写代码实现,工作量不小。尤其是可靠性中的:持久性、投递确认、发布者证实和高可用性。

4、高并发

毋庸置疑RabbitMQ最高,因为RabbitMQ是由天生具备高并发高可用特性的erlang语言实现的。

以上对比参考来源网络,大同小异。总结就是需要从RabbitMQ和Kafka之间选一款适合自己的。RabbitMQ和Kafka这两款无疑也是现在市场上有得比较多的两款消息队列中间件,从网络资料和面试要求也可以看得出来。

关于这两者非常全的评测,参考:http://mp.weixin.qq.com/s/2Esqohw8L30Yvw4Dmr53nA

如何抉择??

总体来说,分布式消息中间件Kafka和RabbitMQ在行业认可、服务支持、可靠性、可维护性、兼容性、易用性等方面各有特色。Kafka在开源许可证、产品活跃度、性能、安全性、可扩展性等方面优于RabbitMQ,Kafka采用的许可证更宽松,活跃度更高,性能远高于RabbitMQ,在安全性和可扩展性方面能够提供更好的保障。Kafka仅在功能上略少于RabbitMQ,但是已经具备了主要的功能。

综合上述所有评测结果,我们决定选择Kafka。

推荐阅读

干货:免费领取2TB架构师四阶段视频教程

面经:史上最全Java高级面试题及答案

工具:推荐一款在线创作流程图、思维导图软件

消息中间件ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka如何选型?的更多相关文章

  1. MQ选型对比ActiveMQ,RabbitMQ,RocketMQ,Kafka 消息队列框架选哪个?

    最近研究消息队列,发现好几个框架,搜罗一下进行对比,说一下选型说明: 1)中小型软件公司,建议选RabbitMQ.一方面,erlang语言天生具备高并发的特性,而且他的管理界面用起来十分方便.不考虑r ...

  2. kafka,activemq rabbitmq.rocketmq的优点和缺点

    kafka,activemq rabbitmq.rocketmq的优点和缺点: 特性 ActiveMQ RabbitMQ RocketMQ Kafka 单机吞吐量 万级,吞吐量比RocketMQ和Ka ...

  3. 百万年薪架构师一文整理RabbitMQ、ActiveMQ、RocketMQ、Kafka

    一般来说,大型应用通常会被拆分成多个子系统,这些子系统可能会部署在多台机器上,也可能只是一台机器的多个进程中,这样的应用就是分布式应用.在讨论分布式应用时,很多初学者会把它和集群这个概念搞混,因为从部 ...

  4. ActiveMQ, RabbitMQ和ZeroMQ 选型关注点

    选择MQ时,主要关注的特性,可能就以下几个: 通信模式(是否满足业务场景): ActiveMQ: queue(producer/consumer), topic(publisher/subsriber ...

  5. MQ选型对比RabbitMQ RocketMQ ActiveMQ Kafka

    几种MQ产品说明: ZeroMQ :  扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库的重新封装,如果我们做为消息队列使用,需要开发大量的代码 RabbitMQ :结合erla ...

  6. MQ选型对比RabbitMQ RocketMQ ActiveMQ

    原文:MQ选型对比RabbitMQ RocketMQ ActiveMQ 几种MQ产品说明:     ZeroMQ :  扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库的重新封装 ...

  7. ActiveMQ与RocketMQ对比

      ActiveMQ RabbitMQ RocketMq ZeroMQ 关注度   高 高 中 中 成熟度   成熟 成熟 比较成熟 不成熟 所属社区/公司 Apache  MozillaPublic ...

  8. ActiveMQ、RabbitMQ、RocketMQ、Kafka四种消息中间件分析介绍

    ActiveMQ.RabbitMQ.RocketMQ.Kafka四种消息中间件分析介绍 我们从四种消息中间件的介绍到基本使用,以及高可用,消息重复性,消息丢失,消息顺序性能方面进行分析介绍! 一.消息 ...

  9. 关于ActiveMQ、RocketMQ、RabbitMQ、Kafka一些总结和区别

    这是一篇分享文 转自:http://www.cnblogs.com/williamjie/p/9481780.html  尊重原作,谢谢 消息队列 为什么写这篇文章? 博主有两位朋友分别是小A和小B: ...

  10. 8.关于ActiveMQ、RocketMQ、RabbitMQ、Kafka一些总结和区别

    这是一篇分享文 转自:http://www.cnblogs.com/williamjie/p/9481780.html  尊重原作,谢谢 消息队列 为什么写这篇文章? 博主有两位朋友分别是小A和小B: ...

随机推荐

  1. jquery-uploadify传参方法

    jquery-uploadify传参方法$(document).ready(function () { $("#uploadify").uploadify({ 'uploader' ...

  2. VxWorks多任务功能

    http://blog.chinaunix.net/uid-23741326-id-84935.html VxWorks的任务有优先级的概念,其任务调度也是基于优先级考虑的,是抢占式的,VxWorks ...

  3. 【原】Coursera—Andrew Ng机器学习—Week 3 习题—Logistic Regression 逻辑回归

    课上习题 [1]线性回归 Answer: D A 特征缩放不起作用,B for all 不对,C zero error不对 [2]概率 Answer:A [3]预测图形 Answer:A 5 - x1 ...

  4. eclipse egit(分支管理 下)

    在Git的分支merge中,不可能没有代码的冲突问题,特别在跟别人分工合作时.那该怎么解决? 1.新建一个conflict分支,在dev方法下添加一句 System.out.println(“Crea ...

  5. Django中间件CsrfViewMiddleware源码分析

    Django Documentation csrf保护基于以下: 1, 一个CSRF cookie基于一个随机生成的值,其他网站无法得到,次cookie有CsrfViewMiddleware产生.它与 ...

  6. Professional C# 6 and .NET Core 1.0 - Chapter 37 ADO.NET

    本文内容为转载,供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处:Professional C# 6 and .NET Core 1.0 - 37 ADO.NET 译文:C# 6 与 .NE ...

  7. web Servise(服务)

    服务层:对项目的业务层(业务层调用数据层)的一个包装成对外的服务,是的UI展示可以从单一的WEB扩展为移动端可WINDFROM端等,这叫做面向服务的编程思想. 发布:和网站发布也是一样的. //web ...

  8. 微信小程序怎么获取用户输入

    能够获取用户输入的组件,需要使用组件的属性bindchange将用户的输入内容同步到 AppService. <input id="myInput" bindchange=& ...

  9. sed陷阱

    sed陷阱:   sed -i 后不要紧跟字母, 否则会产生一个新的备份文件(在原文件后多出来一个字母) // 正确写法 /usr/bin/sed -i "/PREFIX=/d" ...

  10. [GO]append的扩容

    package main import "fmt" func main() { s := make([], ) oldcap := cap(s) ; i < ; i++{ s ...