我是靠谱客的博主 闪闪黑米,这篇文章主要介绍设计一个消息队列的思考点,现在分享给大家,希望可以做个参考。

导图

所以主要考虑的点是:

P1.1. MQ 要有基础的消息管理能力(CRUD)

P1.2. MQ 要有产消日志

P2. MQ将消息存储成功才能响应成功

P3.1 MQ将消息存储 = 分片存储

P3.2 扩容的实现思路(如何在扩容的时候更方便高效)

P4.1 数据要有副本(分片副本)

P4.2 数据副本的传输问题(socket or 其它,同步 or 异步?)

P4.3 数据节点的主从切换,且要对消费者无感

P5.1 主从节点的选举协议

P5.2 分片数据的重加载

P5.3 分片数据与增量数据的混合问题

P5.4 内存数据的排序

R1. ack 机制

R2. 消息丢弃(其实就是 ack,更本质就是消息状态更新处理)

T1. 发布订阅模式(也就是常说的 broker )

优化

有了主要思路后,就要考虑更多的优化细节。

  1. 正确的利用COW 机制避免入坑

  1. 网络传输的零拷贝能力的应用

  1. 正确利用磁盘的数据页,提升刷数据的效率

  1. 数据结构 (分片算法)

小结

以上是从不同的角色需求出发,结合任务标的本身的特性思考如何设计一个MQ,新年开篇

最后

以上就是闪闪黑米最近收集整理的关于设计一个消息队列的思考点的全部内容,更多相关设计一个消息队列内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(102)

评论列表共有 0 条评论

立即
投稿
返回
顶部