смогут мне немножко помочь
В новом проекте появилась необходимость построения event-driven архитектуры со следующими условиями:
- 10-20 сервисов продюсят данные в message broker
- 2 сервиса (каждый от 4 до 10 подов) параллельно консьюмят данные и совершают некоторую обработку ивентов (достаточно быструю)
Так как для сервисов мы используем aws k8s cluster и нам нужен near-realtime (end-to-end latency ниже 500ms допустим), выбор message broker'а пал на aws kinesis ввиду его дешевизны по сравнению с msk (kafka).
Еще немножно о наших сервисах - написаны на го, динамически масштабируются внутри кубера.
Kinesis имеет on-demand режим с автоматическим скейлингом шардов. В доке сказано, что один стрим может иметь до 20 консьюмеров, однако они рекоммендуют иметь не больше одного консьюмера на шард - чем это обусловленно и будет ли все работать если на шарде будет 2-3 консьюмера? Так как скейлинг кинесиса и подов сервиса будет происходить по разному, в какой-то момент может возникнуть следующая ситуация - 2 пода одного приложения читают один и тот же шард. Правильно ли я понимаю, что кинесис имеет аналог кафковый consumer groups и следовательно с этим не должно возникнуть проблем?
Вам конечно может показаться что кинезис вам тут порешает все, но я не знаю ни одного случая переезда с кафки на кинезис. Начинайте считать сколько вы потратите денег на инвестигейты и воркэраунды, чтобы решать проблемы, которые с кафкой уже давно решены
Обсуждают сегодня