摘要:如今,互联网已进入日常生活的各个方面,大数据影响到了生活的各个领域,如何找到一个性能好,延迟低,可靠性强的数据传输方式就显得至关重要。消息队列能够高效解决大规模系统中的信息传递问题,被很多的企业采用。
消息队列(Message Queue,简称MQ),是指在消息的传递过程中作为储存消息的容器。“消息”就是计算机进程间传输的信息。“队列”的作用在于提供路由以及确保消息的传输。若接收方未及时接收到新的消息,消息队列能够储存消息到成功传输为止。
本文将以ActiveMQ、Kafka、ZeroMQ这三种消息队列为例,介绍各自的功能及特点,并分别设计一段程序,测试128B、512B、1KB和10KB四个数据,发送接收50万次,每5万次记录一次执行时间,在多次条件相同的数据中取得均值。从吞吐量和消息延迟这两个指标入手,使用图表直观展示三种消息队列在传输数据时的优缺点。
综合对比发现,ZeroMQ适用于海量高实时性场景,在传输较小的数据时优势明显,在证券金融业及社交网络中应用广泛。ActiveMQ的传输受数据的影响较小,相比其他消息队列更为稳定,更适合传输较大的数据。ActiveMQ在跨平台跨语言的情况下优势明显,在电子商务中被较多使用。Kafka接收数据时吞吐量较大,更适合接收、收集数据,在日志收集、用户活动跟踪,以及消息推送等场景中有广泛应用。
关键词 消息队列;Kafka;ActiveMQ;ZeroMQ
目录
摘要
Abstract
1绪论-1
1.1 课题研究背景和意义-1
1.2 消息队列国外研究现状-1
1.3 消息队列国内研究现状-2
1.4 论文主要工作-2
1.5 论文结构与安排-2
2相关消息队列介绍-3
2.1 ZeroMQ-3
2.1.1 概述-3
2.1.2 特点-3
2.2 ActiveMQ-4
2.2.1 概述-4
2.2.2 特点-5
2.3 Kafka-5
2.3.1 概述-5
2.3.2 特点-6
3 测试设计与程序实现-7
3.1 测试设计-7
3.1.1 测试流程-7
3.1.2 测试数据-7
3.2 ZeroMQ-7
3.2.1 Pub发送端-7
3.2.2 Sub接收端-8
3.3 ActiveMQ-8
3.3.1 Sender发送端-8
3.3.2 Receiver接收端-8
3.4 Kafka-9
3.4.1 producer发送端-9
3.4.2 consumer接收端-9
4 数据分析-10
4.1 ZeroMQ数据分析-10
4.2 ActiveMQ数据分析-13
4.3 Kafka数据分析-15
4.4 性能对比-18
4.5 应用实例-19
5 应用场景-20
5.1 消息队列应用场景-20
5.1.1 异步处理-20
5.1.2 应用解耦-20
5.1.3 流量削峰-20
5.1.4 日志处理-20
5.2 ZeroMQ应用场景-21
5.2.1 数据流传输-21
5.2.2 服务器负载均衡-21
5.2.3 股票证券业-21
5.3 ActiveMQ应用场景-21
5.3.1 多客户端应用集成-21
5.3.2 替代RPC-21
5.3.3 异步流程-21
5.4 Kafka应用场景-22
5.4.1 日志收集-22
5.4.2 用户活动跟踪-22
5.5 企业实例-22
5.5.1 京东-22
5.5.2 阿里巴巴-22
5.6 综合对比-23
结论-25
致谢-26
参考文献-27
附录-28
附录1 完整程序-28
附录2 数据-35