Rocketmq消息可靠性之同步、异步刷盘以及同步异步复制

      消息的可靠性主要取决于刷盘以及复制的策略。只要数据写到磁盘就安全了,只要磁盘不损坏,不管服务器宕机或者重启,消息会一直存在

1.什么是同步刷盘和异步刷盘

 刷盘就是内存跟磁盘的交互,应用程序例如mysql,插入一条数据的时候不是实时的写到磁盘里去,他会根据你配置的不同策略,会2s或者1s或者实时的将内存中的数据刷到磁盘里去。

     1.1.什么是异步刷盘:

异步刷盘就是数据不是实时写到磁盘中,他会根据刷盘策略进行写入磁盘(数据可能丢失,性能高)

     1.2.什么是同步刷盘:

同步刷盘就是消息一进来就马上将消息写入到磁盘里面,写完之后告诉消息发送者消息发送成功。好处就是数据安全性高

      1.3.选择:

各有优缺点,异步刷盘因为发送者一发到内存就直接收到成功的消息,效率比较高,如果发送者发送了消息到内存,然后直接收到发送成功的消息,那么这时候服务器宕机数据就会丢失了。而同步刷盘数据安全性就比较高,发送者会在消息写入磁盘内才会收到成功的消息,保证消息不丢失,那么相应的效率就会降低

 

Rocketmq消息可靠性之同步、异步刷盘以及同步异步复制_第1张图片

2.消息的同步和异步复制

针对rocketmq的Master - Slave节点

与同步刷盘,异步刷盘是没关联的,主节点可以配置同步刷盘或者异步刷盘,从节点也可以配置同步刷盘或者异步刷盘

Rocketmq消息可靠性之同步、异步刷盘以及同步异步复制_第2张图片

        2.1.异步复制:

主节点收到消息之后立马就返回给用户,然后再开一个线程与从节点进行复制,效率特别高,数据可能丢失

        2.2.同步复制:

主节点收到消息之后不立马返回给用户,会等从节点复制成功之后再返回发送成功的消息给用户。数据安全性高,性能低一点

      最终推荐这种方式:同步双写(即M-S同步复制),异步刷盘,在可靠性跟性能方面进行折中。

Rocketmq消息可靠性之同步、异步刷盘以及同步异步复制_第3张图片

你可能感兴趣的:(rocketmq,RocketMQ,刷盘策略)