【无标题】

1.点对点和发布订阅是两种消息传递的模型,它们的主要区别在于消息的接收方式。

点对点模型(Point-to-Point Model):这种模型中,消息的发送者发送消息到一个特定的目标队列中,然后由消息的接收者从该队列中获取消息并将其删除。这意味着每个消息只能被一个接收者消费,消息的消费者可以使用轮询或阻塞来等待新的消息。

发布订阅模型(Publish-Subscribe Model):这种模型中,消息的发送者发布消息到一个主题(Topic)中,所有订阅了该主题的接收者都会收到该消息。这意味着每个消息可以被多个接收者消费,消息的消费者通常通过订阅主题来获取消息。

2.RocketMQ的架构是什么样子的?
RocketMQ的架构包括了Producer、Topic、Broker、Consumer、NameServer五个部分,其中Producer生产消息,Broker存储和传递消息,Consumer消费消息,NameServer管理所有的Broker。

3.*重点 broker刷盘机制
1生产者发送消息:生产者使用特定的producer向RocketMQ发送消息,消息首先被存储在内存中。

2存储消息:消息服务器(Broker)接收到生产者所发送的消息后,将消息存储在内存缓冲区中,并在内存缓冲区达到阈值后将消息写入到磁盘中。在写入磁盘之前,Broker会将消息进行序列化和压缩。

3持久化存储:消息存储到磁盘之后,RocketMQ将会对消息进行持久化存储。消息存储的格式与存储介质无关,可以基于文件、数据库或其他存储介质进行实现。

4消费者消费消息:消费者从Broker拉取消息进行消费。消费者设置消费组(consumer group)并注册到Broker中,当消息被存储到指定的queue中时,消费者将会从该queue中拉取消息进行消费。

5 消费者消息确认:在消息被消费后,消费者需要向Broker发送消息确认命令,告知Broker该消息已被成功消费。否则,Broker会将该消息重新发送到其他消费者中。
同步刷盘
同步刷盘是指在消息发送之前,必须先将消息写入到磁盘中(Flush到磁盘),然后才算是成功发送。使用同步刷盘可以保证数据的可靠性,但机器的I/O瓶颈会导致性能瓶颈,从而影响系统的吞吐量。

异步刷盘
异步刷盘是指在消息发送时,数据可以保存在内存中,然后定期或达到一定数量后再将数据批量刷盘到磁盘中进行持久化。异步刷盘可以减少系统I/O瓶颈,提高系统的吞吐量,但也可能会带来数据丢失的风险。

在RocketMQ中,默认使用的是异步刷盘机制,通过一些配置可以对该机制进行调整和优化,从而在可靠性和性能之间进行平衡,满足不同场景的需求。其中,可以通过设置刷盘方式、使用内存映射文件、启用transientStorePool等参数来影响异步刷盘的工作方式和性能。

你可能感兴趣的:(java,kafka,分布式)