Size: a a a

2020 December 16

S

Slava in pro.kafka
В этом и сила так сказать.
источник

S

Slava in pro.kafka
Gregory Koshelev
p2p — это про то, что участники знают друг друга.
Интересное определение.
источник

S

Slava in pro.kafka
Я думал жто про то, что они равны, как и писал выше.
источник

AB

Andrey Belyakov in pro.kafka
Но если сделать множество сервисов которые обмениваются через кафку друг с другом сообщениями, являясь и продюсерами, и коньюмерами, то, наверное, концептуально, это будет p2p, использующий кафку как транспорт
источник

S

Slava in pro.kafka
Пойду учиться дальше.
источник

GK

Gregory Koshelev in pro.kafka
Slava
Я думал жто про то, что они равны, как и писал выше.
Да, равны. И могут взаимодействовать «напрямую».
источник

GK

Gregory Koshelev in pro.kafka
Но, очевидно, это не подразумевает, что между узлами брошен отдельный провод на каждую пару узлов 🙂
источник

GK

Gregory Koshelev in pro.kafka
Соответственно, есть некоторое количество уровней (мы, я надеюсь, говорим про прикладное взаимодействие сервисов, а не сетевое взаимодействие). Поэтому ничему не противоречит поставить Кафку в качестве одного из уровней.
источник

GK

Gregory Koshelev in pro.kafka
А продьюсер и консьюмер - интерфейс для обмена сообщениями между пирами.
источник

AB

Andrey Belyakov in pro.kafka
Gregory Koshelev
А продьюсер и консьюмер - интерфейс для обмена сообщениями между пирами.
В такой модели ещё надо будет подумать как синхронизировать два разнонаправленных топика, если какие то ответы нужно получать на сообщения.
источник

GK

Gregory Koshelev in pro.kafka
Наверное, синхронизировать не требуется, но вот выждать какой-то таймаут и сказать, что сообщение потерялось — да.
источник

GK

Gregory Koshelev in pro.kafka
На самом деле, такая архитектура будет похоже на service mesh, но не по http, а через Kafka (т.е. асинхронно и персистентно).
источник

AB

Andrey Belyakov in pro.kafka
Проблемы аналогичные head of line blocking тоже появятся из-за ордеринга
источник

GK

Gregory Koshelev in pro.kafka
Ну, как и в (практически) любой распределённой системе вводим понятие версии (или эпохи) и решаем так все проблемы ордеринга 🙂
источник

AB

Andrey Belyakov in pro.kafka
Я не спорю с ничем вышеописанным :) сначала было высказывание что Кафка поддерживает p2p. Сама Кафка подразумевает pubsub в разных вариациях, а то что мы можем сделать p2p на уровне приложения - это да.
источник

AB

Andrey Belyakov in pro.kafka
Или я что-то не знаю
источник

GK

Gregory Koshelev in pro.kafka
Всё так. 🙂
источник

GK

Gregory Koshelev in pro.kafka
Andrey Belyakov
Но если сделать множество сервисов которые обмениваются через кафку друг с другом сообщениями, являясь и продюсерами, и коньюмерами, то, наверное, концептуально, это будет p2p, использующий кафку как транспорт
Собственно, вот тут ☝️и зафиксирована основная мысль. Разве что на уровне Кафки это может быть организовано по-разному. Тут выше предлагали сделать по топику на каждое ребро, но обычно так не делают, из-за квадратичного роста. На мой взляд оптимальным (при условии, что нам по какой-то причине нужна архитектура a la p2p) было бы делать по одному топику на каждый сервис для приёма, а отправлять события в топик сервиса, с которым хотим взаимодействовать.
источник

A

Andrey in pro.kafka
kvadratura
насколько я помню, к-во тасков по всем узлам (в общем случае) равно количеству partitions. таски исполняются пулом тредов, размер которого можно изменять. вместо одного треда на N тасков будет больше тредов. в предельном случае получится по треду на 1 таск
Я совершенно по другому понял доку кафка стримс. Там написано что как раз каждый таск может читать несколько топиков, но вот это разбиение кому какие топики достанутся неизменно, в том смысле что было например два таска как два отдельных инстанса приложения, один инстанс помер, второй откроет еще один тред и начнет работать над партициями помершего таска. Из этого выходит что их количество поменять нельзя
источник

A

Andrey in pro.kafka
Там еще local store тоже к таске привязан
источник