常见5种消息队列介绍及入门教程!ActiveMQ、kafka、RabbitMQ等

程序员面试吧

共 3653字,需浏览 8分钟

 ·

2021-09-01 21:56

消息队列是分布式应用间交换信息的重要组件,消息队列可驻留在内存或磁盘上, 队列可以存储消息直到它们被应用程序读走。
通过消息队列,应用程序可以在不知道彼此位置的情况下独立处理消息,或者在处理消息前不需要等待接收此消息。
所以消息队列可以解决应用解耦、异步消息、流量削锋等问题,是实现高性能、高可用、可伸缩和最终一致性架构中不可以或缺的一环。
现在比较常见的消息队列产品主要有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、RocketMQ等。今天为大家介绍一下每个消息队列及各自特点,并为大家准备了一套学习资料,感兴趣的就读下去吧~
ps:学习资料已打包,文末领取!


1、ActiveMQ



ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
pdf来源网络,侵删
最新使用文档请移步至官网:
https://activemq.apache.org/

教程分享:ActiveMQ使用手册

本文档第二部分介绍了 ActiveMQ 的原理和重要配置介绍,第三部门介绍群集搭建方式 , 分析各种集群方式的优缺点 ,第四部分实战搭建Master-Slave+Broker-Custer 的群集,第五部分是对 ActiveMQ 的监控,可以通过JMX 接口直接获取当前的消息情况,第六部分是对 ActiveMQ 使用要注意的情况。对于清楚 JMS 和 ActiveMQ 熟悉的,需要对 ActiveMQ 做集群处理,可以跳过第二、三章直接看第四章实践。

2、RabbitMQ


RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX,持久化。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
教程分享:RabbitMQ中文文档
pdf来源网络,侵删
最新使用文档请移步至官网:https://www.rabbitmq.com
入门教程分为6大部分,对纯小白来说有一定参考意义


3、ZeroMQ


号称史上最快的消息队列,它实际类似于Socket的一系列接口,他跟Socket的区别是:普通的socket是端到端的(1:1的关系),而ZMQ却是可以N:M 的关系,人们对BSD套接字的了解较多的是点对点的连接,点对点连接需要显式地建立连接、销毁连接、选择协议(TCP/UDP)和处理错误等,而ZMQ屏蔽了这些细节,让你的网络编程更为简单。ZMQ用于node与node间的通信,node可以是主机或者是进程。
引用官方的说法:“ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD套接字之上的一 层封装。ZMQ让编写高性能网络应用程序极为简单和有趣。”
教程分享:ZeroMQ官方文档中文版
pdf来源网络,侵删
最新使用文档请移步至官网:https://zeromq.org/

本篇文档共300+页,五大章内容:
第一章 ZeroMQ 基础
第二章 ZeroMQ 进阶
第三章 高级请求-应答模式
第四章 可靠的请求-应答模式
第五章 高级发布-订阅模式

4、Kafka


Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群机来提供实时的消费。
教程分享:Kafka官方中文文档
pdf来源网络,侵删
最新使用文档请移步至官网:http://kafka.apache.org/
Kafka官方中文文档既适合小白入门也适合有一定基础的同学进阶提升。这份文档共分为9大部分:Kafka基础入门,APIS,Kafka配置,Kafka设计思想及实现,操作,安全,Kafka 连接器及Kafka streams。几乎涵盖了Kafka所有的知识点。
第一部分:Kafka基础入门
这一部分是学习Kafka的准备阶段,Kafka的发展,使用案例,下载及历史版本,都在这一部分进行了详细的描述。


第二部分:APIS
kafka包括五个核心APIS,在这一部分中分别对其进行了详解。
1. Producer API允许应用程序将数据流发送到Kafka集群中的主题。
2. Consumer API允许应用程序从Kafka集群中的主题读取数据流。
3. Streams API允许将输入主题中的数据流转换为输出主题。
4. Connect API允许实现将数据不断从某些源系统或应用程序中输入Kafka的连接器,或从Kafka输入某些接收器系统或应用程序。
5. AdminClient API允许管理和检查主题,代理和其他Kafka对象。


第三部分:配置


第四部分:设计思想
这一部分介绍了Kafka的设计思想以及一些重要概念解析:生产者,备份,消息分发策略,日志压缩······


第五部分:实现思路
第五部分承接第四部分的内容,对Kafka的实现思路进行了详尽介绍。


第六部分:Kafka操作
接下来就进入了实操阶段,基本原理,基础概念了解清楚之后正式开始上手,这一部分的内容会比较多,是基于LinkedIn使用Kafka作为生产系统的一些使用经验。基础配置,硬件操作系统及监控,zookeeper等内容都需要在本章掌握。


第七部分:Kafka安全
Kafka具有特性,通过单独使用或者⼀起使用这些特性,提高了Kafka集群的安全性。


第八部分:Kafka连接器
这一部分主要介绍了:Kafka Connect ——⼀款可扩展并且可靠地在 Apache Kafka 和其他系统之间进行数据传输的工具。
Kafka Connect 可以摄取数据库数据或者收集应用程序的 metrics 存储到 Kafka topics,使得数据可以用于低延迟的流处理。一个导出的 job 可以将来自 Kafkatopic 的数据传输到二级存储,用于系统查询或者批量进行离线分析。


第九部分:Kafka Streams
Kafka Streams 是一个用于处理和分析存储在 Kafka 系统中的数据的客户端库。它建立在重要的流处理概念上,如恰当地区分事件时间(event time)和处理时间(processing time),支持窗口操作(window),exactly-once 处理语义以及简单高效的应用程序状态管理。Kafka Streams 的入门门槛很低。我们可以在单节点环境上快速实现一个小规模的验证性的程序,只要程序能在多节点的集群环境成功运行即可部署到高负载的生产环境。Kafka Streams 通过利用Kafka 的并行模型实现对相同应用程序的多个实例的负载平衡,这对于用户来说是透明的。

5、 RocketMQ


RocketMQ是阿里开源的消息中间件,纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。RocketMQ思路起源于Kafka,但并不是简单的复制,它对消息的可靠传输及事务性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binglog分发等场景,支撑了阿里多次双十一活动。
因为是阿里内部从实践到产品的产物,因此里面很多接口、api并不是很普遍适用。可靠性毋庸置疑,而且与Kafka一脉相承(甚至更优),性能强劲,支持海量堆积。

教程分享:Apache RocketMQ v4.7.1 开发者指南
pdf来源网络,侵删
最新使用文档请移步至官网:
http://rocketmq.apache.org/




所有教程获取方式

微信扫描下方二维码

备注:消息队列合集

浏览 24
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报