设计 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
相关文章
|
7月前
|
消息中间件 负载均衡 Java
【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的消息消费长轮训机制体系的原理分析
【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的消息消费长轮训机制体系的原理分析
105 0
|
7月前
|
消息中间件 存储 安全
【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的消息顺序消费和并发消费机制体系的原理分析
【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的消息顺序消费和并发消费机制体系的原理分析
104 0
|
消息中间件 存储 安全
01为什么需要MQ及其好处
01为什么需要MQ及其好处
88 0
|
7月前
|
消息中间件 存储 Apache
精华推荐 | 【深入浅出RocketMQ原理及实战】「性能原理挖掘系列」透彻剖析贯穿RocketMQ的事务性消息的底层原理并在分析其实际开发场景
事务消息(Transactional Message)是指应用本地事务和发送消息操作可以被定义到全局事务中,要么同时成功,要么同时失败。RocketMQ的事务消息提供类似 X/Open XA 的分布事务功能,通过事务消息能达到分布式事务的最终一致。
647 2
精华推荐 | 【深入浅出RocketMQ原理及实战】「性能原理挖掘系列」透彻剖析贯穿RocketMQ的事务性消息的底层原理并在分析其实际开发场景
|
7月前
|
消息中间件 存储 Kafka
【深入浅出 RocketMQ原理及实战】「底层源码挖掘系列」透彻剖析贯穿一下RocketMQ和Kafka索引设计原理和方案
【深入浅出 RocketMQ原理及实战】「底层源码挖掘系列」透彻剖析贯穿一下RocketMQ和Kafka索引设计原理和方案
132 1
|
7月前
|
消息中间件 存储 负载均衡
精华推荐 | 【深入浅出 RocketMQ原理及实战】「底层源码挖掘系列」透彻剖析贯穿RocketMQ的消费者端的运行核心的流程(上篇)
精华推荐 | 【深入浅出 RocketMQ原理及实战】「底层源码挖掘系列」透彻剖析贯穿RocketMQ的消费者端的运行核心的流程(上篇)
75 1
|
存储 设计模式 消息中间件
消费架构实战-原理
消费架构实战-原理
97 0
|
7月前
|
消息中间件 存储 Apache
消息队列进阶-2.分布式事务解决思路汇总
消息队列进阶-2.分布式事务解决思路汇总
172 0
|
消息中间件 存储 Cloud Native
耗时3天整理!谈谈你对MQ(消息中间件)的理解
MQ全称是Message Queue,直译过来叫做消息队列,主要是作为分布式应用之间实现异步通信的方式。
120 0
耗时3天整理!谈谈你对MQ(消息中间件)的理解
|
消息中间件 存储 中间件
MQ 学习日志(九) MQ 中间件的设计思路
如果让你开发一个消息队列中间件,你会怎么设计架构
121 0