设计 MQ 的思路

简介: 设计 MQ 的思路

设计一个消息队列应该从以下 4 个角度考虑:

1. 可伸缩性:首先这个 MQ 得支持可伸缩性吧,就是需要的时候快速扩容,增加吞吐量和容量。

那怎么搞呢?设计一个分布式的系统呗,参照 kafka 的设计理念,broker-->topic-->partition,每个 partition 放一个机器,存一部分数据。如果现在资源不够了,就给 topic 增加 partition,然后做数据迁移,增加机器,这样就提供了更高的吞吐量。

2. 数据落盘:其次得考虑这个 MQ 的数据要不要落盘?那肯定要了,落盘才能保证进程挂了数据不会丢失。

那落盘的时候怎么落啊?顺序写,这样就没有落盘随机读写的寻址开销,磁盘顺序读写的性能是很高的,这就是 kafka 的思路。

3. 可用性:再者得考虑 MQ 的可用性,像 kafka 的高可用保障机制,可以设置多副本方式,当 leader 挂了可以重新选举 leader。

4. 可靠性:设计 MQ 要想能不能支持数据 0 丢失?我们可以设置 MQ 的可靠性,保障数据不会丢失。如何保证消息的可靠性,避免消息丢失

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
消息中间件 NoSQL 关系型数据库
6年高级开发就因这道题少了5K,Kafka如何避免消息重复消费?
一个6年工作经验的小伙伴,被问到这样一个问题,说Kafka是如何避免消息重复消费的?面试完之后,这位小伙伴来找到我,希望我能给一个思路。今天,我给大家分享一下我的思路。
158 1
|
6月前
|
消息中间件 存储 安全
【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的消息顺序消费和并发消费机制体系的原理分析
【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的消息顺序消费和并发消费机制体系的原理分析
89 0
|
4月前
|
消息中间件 Kafka 程序员
彻底搞懂Kafka生产消费流程,这篇文章就够了!
```markdown 🚀 Kafka 生产消费流程揭秘:Producer 创建守护线程Sender,消息经拦截器→序列化器→分区器→缓冲区。批量发送基于batch.size或linger.ms条件。acks参数控制可靠性,从0(最快但不可靠)到all(最可靠)。消息重试和元数据返回确保不丢失。关注“软件求生”公众号,探索更多技术! ```
146 1
|
消息中间件 存储 安全
01为什么需要MQ及其好处
01为什么需要MQ及其好处
72 0
|
存储 设计模式 消息中间件
消费架构实战-原理
消费架构实战-原理
90 0
|
6月前
|
消息中间件 存储 Apache
消息队列进阶-2.分布式事务解决思路汇总
消息队列进阶-2.分布式事务解决思路汇总
164 0
|
消息中间件 存储 Cloud Native
耗时3天整理!谈谈你对MQ(消息中间件)的理解
MQ全称是Message Queue,直译过来叫做消息队列,主要是作为分布式应用之间实现异步通信的方式。
111 0
耗时3天整理!谈谈你对MQ(消息中间件)的理解
|
消息中间件 存储 中间件
MQ 学习日志(九) MQ 中间件的设计思路
如果让你开发一个消息队列中间件,你会怎么设计架构
114 0
|
消息中间件 存储 网络协议
MQ中间件概念一览
MQ中间件概念一览
|
消息中间件 算法 Dubbo
并发编程-25 高并发处理手段之消息队列思路 + 应用拆分思路 + 应用限流思路
并发编程-25 高并发处理手段之消息队列思路 + 应用拆分思路 + 应用限流思路
113 0