分布式消息队列选型分析
Posted JAVA技术zhai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式消息队列选型分析相关的知识,希望对你有一定的参考价值。
高并发架构是成为架构师的必修课,而消息队列,则是王冠上最闪亮的那颗明珠!能否驾驭消息队列这款高并发神器,亦成为架构师的试金石。本文将从队列本质、技术选型两个方面,给大家整理下个人心得,希望能对大家有所帮助。
基于消息队列的异步架构图
官网:kafka.apache.org/
-
快速持久化:通过磁盘顺序读写与零拷贝机制,可以在0(1)的系统开销下进行消息持久化 -
高吞吐:在一台普通的服务器上即可以达到10W/s的吞吐速率。 -
高堆积:支持topoc下消费者较长时间离线,消息堆积量大 -
完全的分布式系统:Brocker、Producer、Consumer都原生自动支持分布式,依赖zookeeper自动实现复杂均衡 -
支持Hadoop数据并行加载:对于像Hadoop的一样的日志数据和离线分系统,但又要求实时处理的限制,这是一个可行的解决方案。
官网:rocketmq.apache.org/
-
能够保证严格的消息顺序 -
提供丰富的消息拉取模式 -
高效的订阅水平扩展能力 -
实时的消息订阅机制 -
支持事务消息 -
亿级消息堆积能力
官网:activemq.apache.org/
-
支持来自Java,C,C ++,C#,Ruby,Perl,Python,php的各种跨语言客户端和协议 -
完全支持JMS客户端和Message Broker中的企业集成模式 -
支持许多高级功能,如消息组,虚拟目标,通配符和复合目标 -
完全支持JMS 1.1和J2EE 1.4,支持瞬态,持久,事务和XA消息 -
Spring支持,以便ActiveMQ可以轻松嵌入到Spring应用程序中,并使用Spring的XML配置机制进行配置 -
专为高性能集群,客户端 - 服务器,基于对等的通信而设计 -
CXF和Axis支持,以便ActiveMQ可以轻松地放入这些Web服务堆栈中以提供可靠的消息传递 -
可以用作内存JMS提供程序,非常适合单元测试JMS -
支持可插拔传输协议,例如in-VM,TCP,SSL,NIO,UDP,多播,JGroups和JXTA传输 -
使用JDBC和高性能日志支持非常快速的持久性
4、RabbitMQ
官网:www.rabbitmq.com/
-
异步消息传递:支持多种消息协议,消息队列,传送确认,灵活的路由到队列,多种交换类型; -
支持几乎所有最受欢迎的编程语言:Java,C,C ++,C#,Ruby,Perl,Python,PHP等等; -
可以部署为高可用性和吞吐量的集群; 跨多个可用区域和区域进行联合; -
可插入的身份验证,授权,支持TLS和LDAP。; -
提供了一个易用的用户界面,使得用户可以监控和管理消息 Broker 的许多方面; -
提供了许多插件,来从多方面进行扩展,也可以编写自己的插件。
-
简单模式 -
work工作模式 -
publish/Subscribe发布与订阅模式 -
Routing路由模式 -
Topics主题模式 -
RPC远调用模式(远程调用,不太算MQ)
今天就写到这,我打算把MQ中的各个技术选型从入门到项目中的实战用法全部一级一级分享给大家,一是防止自己以后忘记可以回来翻翻看,二是分享给大家有兴趣的朋友可以一起学习。
熟悉MQ的朋友,可能看下来解决写的东西很简单,但是毕竟也有很多人实际工作中并没有用过MQ,自己可能也没有了解过,对于没有了解过的朋友来说,我觉得入个门还是挺不错的。
以上是关于分布式消息队列选型分析的主要内容,如果未能解决你的问题,请参考以下文章
消息中间件选型分析——从Kafka与RabbitMQ的对比来看全局