我使用distributedlog AsyncLogReader从distributedlog流中读取记录。对于流中的每个日志记录,我发现有两个序列号与之关联,一个是事务id,一个是序列id。我应该用哪一个来跟踪读取位置?
基于邮件列表中分布式日志作者之一的回答:
简而言之,事务id是应用程序提供的序列号。它必须是非递减的。用户通常使用时间戳或偏移量(到目前为止写入的字节数)作为事务id,这样他们就可以使用事务id按时间或偏移量倒带。
序列号为系统生成的序列号。它指示流中日志记录的全局序列。如果您熟悉Raft https://raft.github.io/raft.pdf,它与Raft中的log *index *相同。序列id有两个典型的用例。您可以使用序列id来标识任意两条记录之间的记录数。您可以使用序列id对交付序列进行任何完整性检查。
在API页面中也有解释http://distributedlog.io/api/core.html#sequence-numbers