2016-09-09 2 views
0

Я использовал распределенный журнал AsyncLogReader для чтения записей из потока распределенного журнала. для каждой записи журнала в потоке я обнаружил, что с ним связаны два порядковых номера, один - идентификатор транзакции, а один - идентификатор последовательности. Какой из них следует использовать для отслеживания позиции чтения?В чем разница между идентификатором транзакции и идентификатором последовательности в записи распределенного журнала?

ответ

0

На основании ответа от одного автора distributedlog в списке почты:

Короче говоря, идентификатор транзакции представляет собой приложение поставляется порядковый номер. Он должен быть неубывающим. Обычно пользователи используют либо временную метку, либо смещение (байты, написанные до сих пор), как идентификатор транзакции, так что они могут использовать идентификатор транзакции для перемотки по времени или смещению.

Идентификатор последовательности - это порядковый номер, сгенерированный системой. Он указывает, что глобальная последовательность записи журнала в потоке. если вы знакомы с Raft https://raft.github.io/raft.pdf, это то же самое, что и в журнале * index * в Raft. Существует два типичных случая использования идентификатора последовательности. Вы можете использовать идентификатор последовательности, чтобы идентифицировать количество записей между любыми двумя записями. Вы можете использовать идентификатор последовательности для выполнения любой проверки работоспособности в последовательности доставки.

Существует также объяснение на странице API http://distributedlog.io/api/core.html#sequence-numbers

+0

теперь очень ясно для меня. –

Смежные вопросы