store模块阅读4:FlushDiskType
2017-09-27 本文已影响96人
赤子心_d709
说明
枚举类说明刷盘策略,代码很简单
public enum FlushDiskType {
SYNC_FLUSH,//同步刷盘
ASYNC_FLUSH//异步刷盘
}
定义如下
Disk Flush(磁盘刷新/同步操作):就是将内存的数据落地,存储在磁盘中。RocketMQ提供了以下两种模式:
SYNC_FLUSH(同步刷盘):生产者发送的每一条消息都在保存到磁盘成功后才返回告诉生产者成功。这种方式不会存在消息丢失的问题,但是有很大的磁盘IO开销,性能有一定影响。
ASYNC_FLUSH(异步刷盘):生产者发送的每一条消息并不是立即保存到磁盘,而是暂时缓存起来,然后就返回生产者成功。随后再异步的将缓存数据保存到磁盘,有两种情况:1是定期将缓存中更新的数据进行刷盘,2是当缓存中更新的数据条数达到某一设定值后进行刷盘。这种方式会存在消息丢失(在还未来得及同步到磁盘的时候宕机),但是性能很好。默认是这种模式。
图示如下
异步刷盘同步刷盘
同步刷盘
问题
同步刷盘是有一条消息就刷一次么?
异步刷盘,两种策略(定期以及定量)操作代码在哪?
refer
http://blog.csdn.net/jayjjb/article/details/70140667
《开发手册3.2.4》 7.2 刷盘策略