我使用distributedlog AsyncLogReader从distributedlog流中读取记录。对于流中的每个日志记录,我发现有两个与之关联的序列号,一个是事务id,一个是序列id。我应该使用哪一个来跟踪阅读位置?
答案 0 :(得分:0)
基于邮件列表中的一个distributedlog作者的答案:
简而言之,事务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
中还有一个解释