освоить её +\-
Подскажите, плз, что это может быть?
Эмулятор какого-нибудь сервиса обращений граждан, записи к врачу, экстренной службы?
—
как я понимаю, суть Кафки - собрать вал шквал входящих сообщений, чтобы потом передать Обработчику без потерь?
Что-то, что производит сообщения в кафку и что-то, что из неё читает.
сделай стриминг из бд ондой системы в бд другой системы kafka connect, kafka streams, avro, consumers
ну кафка ж "Тупой брокер, умный потребитель", сама по себе очень проста, а всякие фичи по типу идемпотентной отправки, семантика на отправку, семантику на обработку, как офсеты можно комитить, там извратные темы с прибитием кулаком консюмеров к партициями для избежания ребаланса, метрики каки, все на стороне клиента на каком нить ЯП, можно попробовать всякие штуки которые над кафкой - кафка стримс, ксклдб
Смотрите. Я надумал сэмулировать вал сообщений от камер дорожных штрафов. Камеры расположены в 4-х районах города: Центр, Промзона, Спальный, Элитный. Видимо, надо делать 4 топика (соответственно районам). Далее, из этих топиков сообщения о штрафах должны будут читать консюмеры (офисы Гибдд данных районов). Когда консюмер считал сообщение, он его обрабатывает и пишет в базу (что штраф выписан). Такая логика.. может, в жизни иначе устроено со штрафами, но ладно. Также я хотел бы отобразить движение сообщений на какой-нибудь доске (франтенд), чтобы был эффект присутствия. Типа 2х подвижных столбцов: столбец А - это поступившие на обработку сигналы с камер, столбец Б - выписанные штрафы
проводя аналогию с картинкой-образцом https://i122.fastpic.org/big/2023/0712/5a/05376df8028bd8b73d5903855b4e565a.png, в моём примере получается: - Районов у нас 4, в каждом пускай по 10 камер. - Камера - это Producer, соответственно продюсеров 40 штук. - Топик 1; - Партиций (базовых, "лидеров"), судя по логике, должно быть 4 (по кол-ву районов); - Когда камера (producer) пишет в топик, она знает, в какую партицию писать. Для этого использовать "ключ партиционирования"; Таким образом, в партицию района "Элитный" попадают только сообщения с камер в Элитном районе. - а вот консюмеров сколько делать, я хз. Читал, что их должно быть по количеству партиций. Но 4 консюмера это скушно, не? Я имею в виду, если делать консюмер группы (для реалистичности), скажем, в одном районе 3 офиса Гибдд, в другом 1, в остальных по 2, и каждая группа потребляет
Все смешалось в доме Облонских... (с) вам вообще не нужно думать о кол-ве партиций до тех пор, пока вы не упрётесь в ограничения производительности. Пишите всё в один топик, добавляйте в состав сообщения ID вашей камеры/района/улицы/чегоугодно. Консьюмер читая сообщения парсит мета-данные и уже от этого строит логику своей работы. консьюмер-группы - это возможность логичеки разделить консьюмеров, чтобы они двигались(читали) топик вне зависимости от состояния соседних коньсюмеров - например одна КГ, это читающая топик и выписывающая штрафы, вторая КГ - это аудит, чтобы потом сверять кол-во выписанных штрафов с кол-вом попавших событий. Разные КГ будут работать с разной логикой и возможно разной скоростью
то есть партиции будут содержать все подряд сообщения, вперемешку с разных камер разных районов? Но если 1 партиция = 1 консюмер, то тогда консюмер "Гибдд района Центр" не получит данных с остальных партиций? Я что-то запутался Консюмеров задумано 4, чтобы каждый только свои камеры обслуживал
Нет, речь о консьюмер группах, у них свои оффсеты для одного и того же топика, в этом прелесть кафки
давайте пока исключим слово "партиция" из обсуждения) Пусть будет топик и консьюмеры. Каждый консьюмер получит все сообщения из топика на который он подписан
Консюмер группу "Выписыватели" таки создаём? Сразу
выписыватели - это аппка которая на основании сообщения(события) в топике генерирует штраф? Да, норм - пусть будет такой консьюмер (и можно сделать под него отдельную CG, consumer-group)
"выписыватели" (как я это сфантазировал) - это офисы Гибдд, поделённые по районам. Чтобы не замучать чат вопросами, пока думаю моделировать 1 офис на 1 район. Каждый "выписыватель" (офис гибдд в районе) интересуется только штрафами с камер, расположенных в его районе. Раз решили пока исключить углубление в партиции (для простоты), то офисы читают все сообщения, и когда попадается "своё", то офис его обрабатывает (считал, преобразовал в что-то другое, записал это "другое" в БД).
Биллинг
о, а напишите развёрнутей, плз ?
ну один эвент эмитер о потреблении, кафка, какой-нибудь apache flink для агрегации, kafka connect для выгрузки и какая-нибудь конечная база (postgres) чтобы хранить выставленные счета.
40 камер, каждая камера шлёт инфу о всех проезжающих машинах в общий топик (топику можно сделать много партиций, пусть будет 50). Данные: ид камеры, место, номер машины, скорость, фото опционально. Из топика читают сервисы: - проверка скорости (консьюмер группа speedchecker). Берет место, сверяет со скоростью, если нарушение, пересылает дальше в топик нарушителей скоростного режима (можно пару партиций сделать, например, 4) - проверка тех осмотра (консьюмер группа checktehosmotr 😂 - с телефона, не хочу лезть переводить) - сервис будет сверять с инфой в какой-нибудь БД. Нарушителей - пеенаправлять сообщения в топик нарушителей техлсмотра (3 партиции) - сервис проверки страховки ОСТА(консьюмер группа checkinsurance) - по аналогии с предыдущим пунктом, но в третий топик. Сервис выписки штрафов - может читать из всех топиков с нарушениями, выписывать штрафы, отправляя сообщения в топик на отправку смс владельцам машин. Ещё сервис, который предложил хороший друг начальника ГИБДД: читает только топик нарушителей ОСТА и с помощью миррормейкера (или обезлиивающей аппы, оставляя только номер машины) перенаправляет сообщения в топик страховой компании. Из этого топика читает сервис страховой компании (консьюмер группа insurancecompany) и шлёт смс всем нарушителям с акционным предложение страховки на год :-)
Обсуждают сегодня