如何从零到一设计一个MQ消息队列
消息队列整体设计思路 主要是设计一个整体的消息被消费的数据流。 这里会涉及到:消息生产Producer、Broker(消息服务端)、消息消费者Consumer。 1.Producer(消息生产者):发送消息到Broker。 2.Broker(服务端):Broker这个概念主要来自于Apache的ActiveMQ,特指消息队列的服务端。 主要功能就是:把消息从发送端传送到接收端,这里会涉及到消息的存储、消息通讯机制等。 3.Consumer(消息消费者):从消息队列接收消息,consumer回复消费确认。 Broker(消息队列服务端)设计重点 1)消息的转储:在更合适的时间点投递,或者通过一系列手段辅助消息最终能送达消费机。 2)规范一种范式和通用的模式,以满足解耦、最终一致性、错峰等需求。 3)其实简单理解就是一个消息转发器,把一次RPC做成两次RPC,发送者把消息投递到broker,broker再将消息转发一手到接收端。 总结起来就是两次RPC加一次转储,如果要做消费确认,则是三次RPC。 为了实现上述消息队列的基础功能: 消息的传输 存储 消费 就需要涉及到如下三个方面的设计: 通信协议 存储选择 消费关系维护 通讯协议 消息Message:既是信息的载体,消息发送者需要知道如何构造消息,消息接收者需要知道如何解析消息,它们需要按照一种统一的格式描述消息