【退役之重学Java】如何开发一个消息队列中间件

一、考虑可扩展性

分析

  1. 消息队列中的消息数量是不确定的,有时一两万个,出现流量高峰甚至消息积压的时候,就会有上百万、千万的消息在队列中。
  2. 所以,为了增加系统的稳定性,消息队列需要具备快速扩容的能力

实现

  1. 采用分布式系统设计,将消息队列的每一个topic 进行分区,每一个分区放一个机器
  2. 需要扩容,就增加分区的数量,进行数据迁移,这样就可以进行快速扩容了

二、考虑持久化

分析

  1. 要保证机器重启或宕机时,消息队列的数据不丢失,就需要实现持久化

实现

  1. 消息队列的持久化可以通过两个组件实现:队列索引(queue index)和消息存储(message store)。队列索引负责维护消息在队列中的位置以及消息是否已被传递和确认。每个队列都有一个队列索引。消息存储是用于存储消息的键值存储,在每个虚拟主机(vhost)中的所有队列之间共享。消息可以直接存储在队列索引中,也可以写入消息存储。
相关推荐
q***979111 分钟前
Spring Cloud GateWay搭建
java
明洞日记26 分钟前
【设计模式手册007】原型模式 - 通过复制创建对象的艺术
java·设计模式·原型模式
Jonathan Star29 分钟前
JavaScript 中,原型链的**最顶端(终极原型)只有一个——`Object.prototype`
开发语言·javascript·原型模式
普通网友35 分钟前
C++中的组合模式
开发语言·c++·算法
q***615035 分钟前
PHP进阶-在Ubuntu上搭建LAMP环境教程
开发语言·ubuntu·php
Dneccc38 分钟前
Qt5配置MSVC2017
开发语言·qt
江公望39 分钟前
Qt QByteArray类型,10分钟讲清楚
开发语言·c++·qt
小灰灰搞电子40 分钟前
Qt Sensors 传感器框架详解
开发语言·qt
LNN202244 分钟前
Qt 5.8 中的 Qt Test:轻松实现自动化测试
开发语言·qt
2501_9411114644 分钟前
C++中的组合模式变体
开发语言·c++·算法