设计 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是如何避免消息重复消费的?面试完之后,这位小伙伴来找到我,希望我能给一个思路。今天,我给大家分享一下我的思路。
143 1
|
消息中间件 监控 Java
图解Kafka线程模型及其设计缺陷
图解Kafka线程模型及其设计缺陷
图解Kafka线程模型及其设计缺陷
|
4月前
|
消息中间件 存储 安全
【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的消息顺序消费和并发消费机制体系的原理分析
【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的消息顺序消费和并发消费机制体系的原理分析
74 0
|
4月前
|
消息中间件 存储 Apache
消息队列进阶-2.分布式事务解决思路汇总
消息队列进阶-2.分布式事务解决思路汇总
150 0
|
消息中间件 存储 中间件
MQ 学习日志(九) MQ 中间件的设计思路
如果让你开发一个消息队列中间件,你会怎么设计架构
100 0
|
消息中间件 存储 RocketMQ
自顶向下学习 RocketMQ(四):顺序消息
顺序消息是消息队列 RocketMQ 提供的一种对消息发送和消费顺序有严格要求的消息。对于一个指定的 Topic,消息严格按照先进先出(FIFO)的原则进行消息发布和消费,即先发布的消息先消费,后发布的消息后消费。
自顶向下学习 RocketMQ(四):顺序消息
|
消息中间件 算法 Dubbo
并发编程-25 高并发处理手段之消息队列思路 + 应用拆分思路 + 应用限流思路
并发编程-25 高并发处理手段之消息队列思路 + 应用拆分思路 + 应用限流思路
101 0
|
消息中间件 网络协议 Java
到底什么才是面向消息的分布式架构呢?看完之后我终于明白了
在SOA或者微服务架构中,普遍会采用HTTP作为通信协议。HTTP具有平台无关性、语言中立性等特点,在分布式系统中被广泛应用。特别是微服务架构的流行,遵循一致的REST风格的HTTP,更能在各个微服务之间实现低沟通成本的通信。
|
消息中间件 运维 负载均衡
|
消息中间件 大数据 Kafka