美文网首页jraft
jraft源码阅读5一写log

jraft源码阅读5一写log

作者: 黄云斌huangyunbin | 来源:发表于2019-04-11 10:13 被阅读0次

    raft收到请求,首先做的事情其实就写log了。
    jraft中是通过LogManagerImpl来实现的

    日志入口
    LogEntryAndClosureHandler


    image.png

    executeApplyingTasks:构建日志对象LogEntry,准备写入


    image.png

    appendEntries:转成事件,异步处理


    image.png

    StableClosureEventHandler#onEvent :异步处理事件


    image.png
    image.png

    flush:交给Storage来处理,


    image.png

    appendToStorage:调appendEntries继续处理
    final int nAppent = this.logStorage.appendEntries(toAppend);

    appendEntries:再调addDataBatch


    image.png

    addDataBatch:把数据放到WriteBatch


    image.png

    最后用RocksDB的write方法,处理WriteBatch


    image.png
    这里只是看到write,按道理raft的每条日志都应该是立即flush到磁盘的,这里的write就有个writeOptions,来控制是否同步flush了。
    image.png

    RaftOptions:可以看到默认的配置是同步flush的


    image.png

    相关文章

      网友评论

        本文标题:jraft源码阅读5一写log

        本文链接:https://www.haomeiwen.com/subject/gkyziqtx.html