【消息队列】如何做技术选型?

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【消息队列】如何做技术选型?

什么是消息队列

消息队列是分布式系统中重要的组件

  • 主要拥有解决应用耦合、异步消息、流量削峰、日志处理、消息通讯
  • 可实现高性能、高可用、可伸缩、最终一致性架构

目前主流的消息队列

Kafka

RabbitMQ

RocketMQ ,老版本是 MetaQ 。

ActiveMQ ,目前用的人越来越少了。

优缺点对比

特性 ActiveMQ RabbitMQ RocketMQ Kafka
单击吞吐量 万级 万级 十万级 10 万级
消息可靠性 有较低的概率丢失数据 经过参数优化配置,可以做到 0 丢失 经过参数优化配置,可以做到 0 丢失 经过参数优化配置,可以做到 0 丢失
可用性 高可用,主从 高可用,镜像同步 非常高,分布式架构 非常高,分布式架构
延迟 ms 级 微秒级 ms 级 ms 级
功能支持 完备 基于 erlang 开发,并发能力很强,性能极好,延时很低 MQ 功能较为完善,还是分布式的,扩展性好 功能较为简单,主要支持简单的 MQ 功能,在大数据领域的实时计算以及日志采集被大规模使用

ActiveMQ

早起覆盖率较高,目前社区已经不活跃了,而且性能比较差。不推荐使用

RabbitMQ

优点

开源免费,比较稳定的支持,社区活跃度也高

缺点

RabbitMQ可以实现延迟队列,但是对RabbitMQ的依赖比较高,一旦切换技术栈无法使用

RocketMQ

优点

Java 语言进行实现,更容易去深入研究和掌控它,中文社区活跃

性能稳定

缺点

国产消息队列,与国外的生态圈对接较差

Kafka

优点

使用Scala和Java开发,与周围生态圈兼容性最好,大数据和流计算领域应用广泛

缺点

异步批量操作设计,同步收发消息方面响应延迟高

拓展—Redis

redis也可以做消息队列,使用list,rpush入队,lpop出队,在业务比较小的时候选择redis做消息队列也是不错的选择

总结

中小型公司,技术实力较为一般,技术挑战不是特别高,用 RabbitMQ 是不错的选择,业务比较简单的也可以使用redis

大型公司,基础架构研发实力较强,用 RocketMQ 是很好的选择

大数据领域的实时计算、日志采集等场景,用 Kafka 是业内标准的

目录
相关文章
|
消息中间件 存储 cobar
用了8年MQ!聊聊消息队列的技术选型,哪个最香! 下
用了8年MQ!聊聊消息队列的技术选型,哪个最香! 下
|
消息中间件 存储 运维
消息队列与消息中间件概述:消息中间件核心概念与技术选型
消息队列是一个存放消息的容器,消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能、削峰、降低系统耦合性。
614 15
|
消息中间件 存储 缓存
用了8年MQ!聊聊消息队列的技术选型,哪个最香! 上
用了8年MQ!聊聊消息队列的技术选型,哪个最香! 上
|
消息中间件 大数据 Kafka
|
消息中间件 NoSQL Redis
消息队列技术选型
消息队列技术选型
141 0
消息队列技术选型
|
5月前
|
消息中间件 C语言 RocketMQ
消息队列 MQ操作报错合集之出现"Connection reset by peer"的错误,该如何处理
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5月前
|
消息中间件 Java C语言
消息队列 MQ使用问题之在使用C++客户端和GBase的ESQL进行编译时出现core dump,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
1月前
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
3月前
|
消息中间件
手撸MQ消息队列——循环数组
队列是一种常用的数据结构,类似于栈,但采用先进先出(FIFO)的原则。生活中常见的排队场景就是队列的应用实例。在数据结构中,队列通常用数组实现,包括入队(队尾插入元素)和出队(队头移除元素)两种基本操作。本文介绍了如何用数组实现队列,包括定义数组长度、维护队头和队尾下标(front 和 tail),并通过取模运算解决下标越界问题。此外,还讨论了队列的空与满状态判断,以及并发和等待机制的实现。通过示例代码展示了队列的基本操作及优化方法,确保多线程环境下的正确性和高效性。
56 0
手撸MQ消息队列——循环数组
|
4月前
|
消息中间件 存储 缓存
一个用过消息队列的人,竟不知为何要用 MQ?
一个用过消息队列的人,竟不知为何要用 MQ?
193 1