Проблема латентности Kafka GlobalKTable - PullRequest
0 голосов
/ 09 января 2019

У меня есть тема, которая читается как GlobalKTable и материализована в магазине. Проблема в том, что если я обновлю ключ по теме, а затем прочту из магазина, какое-то время (~ 0,5 с) я получу старое значение.

В чем может быть причина этой проблемы?

Является ли globalktable хранит данные в roadsDB для каждого экземпляра приложения, поэтому, если ключ в другом разделе обновляется, требуется некоторое время для извлечения данных из всех разделов и обновления его локальной rockDD. Если нет, пожалуйста, объясните, как globalktable store поддерживает свое внутреннее состояние?

Как решить вышеуказанную проблему? Разве мы не должны использовать globalktable в таких сценариях, где ожидается, что согласованность будет соответствовать согласованности, скажем, с базой данных mysql?

1 Ответ

0 голосов
/ 09 января 2019

Является ли globalktable хранит данные в roadsDB для каждого экземпляра приложения, поэтому, если ключ в другом разделе обновляется, требуется некоторое время для извлечения данных из всех разделов и обновления его локальной roadsDB. Если нет, пожалуйста, объясните, как globalktable store поддерживает свое внутреннее состояние?

Абсолютно да. Всегда есть некоторая задержка до опроса Kafka Streams () тема снова и обновления локального RocksDB.

Разве мы не должны использовать globalktable в таких сценариях, где ожидается, что согласованность будет соответствовать согласованности, скажем, с базой данных mysql?

Это зависит от того, какие гарантии вам нужны - если производитель пишет в тему GlobalKTable и запись прошла успешно, это не гарантирует, что приложение Kafka Streams использовало эту запись и обновило GlobalKTable. Производители и потребители отделены в Кафке по замыслу.

...