Используйте смещения Кафки для расчета статистики написанных сообщений - PullRequest
0 голосов
/ 18 января 2019

Я хочу получить статистику из темы Кафки:

  • всего написано сообщений
  • всего письменных сообщений за последние 12 часов, в последний час, ...

Могу ли я с уверенностью предположить, что чтение смещений для каждого раздела в теме для данной временной отметки (с использованием getOffsetsByTimes) должно дать мне количество сообщений, написанных за это конкретное время?

Я могу суммировать все смещения для каждого раздела, а затем рассчитать разницу между отметкой времени 1 и отметкой времени 2. С этими данными я смогу рассчитать много статистики.

Есть ситуации, когда эти данные могут дать мне неверные результаты? Мне не нужна 100% точность, но я надеюсь найти надежное решение. Конечно, при условии, что тема не удалена / не сброшена.

Есть другие альтернативы без использования сторонних инструментов? (Я не могу легко установить другие инструменты и мне нужны данные внутри моего приложения)

1 Ответ

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

(используя getOffsetsByTimes) должно дать мне количество сообщений, написанных за это конкретное время?

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

Если вам не нужна точность, это должно быть хорошо. Обратите внимание, что сжатые темы не имеют последовательно упорядоченных смещений друг за другом, поэтому простой abs(offset@time2 - offset@time1) не будет работать для «общего количества существующих сообщений в теме».

В противном случае брокеры предоставляют множество метрик JMX, таких как количество входных байтов и скорость передачи сообщений, которые можно, например, объединять и отображать с течением времени, используя Grafana.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...