作者回复: 是的。PrepRequestProcessor和SyncRequestProcessor都只有一个线程。 您可以参考一下“Quorum模式下ZooKeeper节点的Request Processor Pipeline”PPT的第二页。
作者回复: 不会丢失。写请求要经过3个request processor的处理:PrepRequestProcessor,SyncRequestProcessor和FinalRequestProcessor。SyncRequestProcessor的以下逻辑会做落盘: SyncRequestProcessor.run() flush(toFlush) zks.getZKDatabase().commit(); 这个我应该在PPT里面写一下。 谢谢您的反馈。
作者回复: 这个没有错,原因是在序列化g之间做了<setDataTXN, /g, g1, 1>这个操作。