Есть вопрос, на котором на собеседованиях плывёт удивительно
много системных аналитиков: чем шина отличается от брокера сообщений.
Kafka и RabbitMQ называют почти все. Про ESB тоже слышали. Разницу внятно объясняют единицы.
Короткий ответ такой. Брокер доставляет сообщение в том виде, в каком его положили. Принял, сохранил, отдал получателю, и на этом его работа заканчивается.
Шина умеет больше. В ней живёт логика: она переводит сообщение из одного формата в другой, решает, кому его отправить, и может вести целую цепочку вызовов между системами.
Ради следствия из этой разницы я и задаю вопрос. Если маппинг лежит в шине, его описывают в требованиях к шине. Если между сервисами стоит брокер, каждый потребитель разбирает сообщение сам, и формат сообщения становится общим контрактом для всех команд.
Аналитик, который путает эти две вещи, пишет требования не туда. Всплывает это на интеграционном тестировании, когда переделка стоит дороже всего.
Сильный кандидат добавит и обратную сторону. Шина с бизнес-логикой со временем становится узким местом, через которое идут все изменения, поэтому в микросервисах её стараются держать тонкой.
А вы как бы ответили на этот вопрос на собесе?
· 6 ч
А в каком месте у вас кафка затесалась? В брокерах или в шинах?
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён
· 5 ч
По разделению из поста Kafka ближе к брокерам: она доставляет сообщение в том виде, в каком его положили, и логики перевода форматов или маршрутизации по бизнес-правилам у неё внутри нет. Прощн говоря, Kafka - платформа потоковой передачи событий, распределённый журнал. Сообщения лежат в топике, каждый потребитель читает их и может перечитать историю. Классический брокер вроде RabbitMQ так не умеет: сообщение забрали, и из очереди он удаляется. Так что если на собесе кандидат скажет, что Kafka - брокер, а точнее журнал событий, то засчитаю.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 5 ч
Ну что значит ближе. Либо брокер, либо нет.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 5 ч
Если брокер - это классическая модель, где брокер сам раскладывает сообщения и удаляет их после доставки, то Kafka под неё не подходит. Её чаще называют распределённым журналом. При этом серверы кластера в самой Kafka называются брокерами. Для аналитика важнее не теоминология, а другое: от выбора зависит, что попадёт в требования. В Kafka сообщения хранятся и их можно перечитать, значит нужно описать срок хранения, оффсеты и поведение при повторном чтении. В посте речь идёт про описание артефактов, где и как описывать, а не о различиях RabbitMQ и Kafka. Для этого отдельный пост нужен)
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 5 ч
Вот следующий вопрос аналитику будет почему кафка является распределенным логом, а серверы у нее называются брокерами. Для аналитиков важен порядок в голове, а если он ленится 2 строчки прочитать для этого - нафига он такой. Следующий вопрос ему какой join более правильный - left или right, ну и можно прощаться с ним.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён