powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
228 сообщений из 228, показаны все 10 страниц
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101102
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет коллеги.

Почему соврменные JMS/MQ системы незаменимы?
Является ли это хайпом или технолгическим витком?
Почему мы не можем вместо них брать Dbms?
Файловую систему? (я видел такие юзкейсы)
Можно-ли вообще их исключить из стека технологий? И если исключить то как?
Поделитесь вашим опытом.


Особенно меня интересуют кейсы когда вы просто выбросили из задачи JMS/MQ и ничего не потеряли.

Я долго думал над формулировкой темы топика но так и не придумал. Сначала хотел сравнивать Kafka-RabbitMQ
в раздличных конфигурациях устойчивости к сбоям и к пропускной способности. Но задача сравнения в моем плане
начала расти до таких космических масштабов что я понял что более-менее объективный сравнительный тест
я написать не в состоянии. Тоесть я конечно могу взять любой синтетический бенчмарк. Но он ничего не будет
стоить в реальном сетевом окружении. С нагрузкой. С шквальным (периодическим) характером движения
сообщений. Со специфичными продуктовыми кейсами (например каждая веб-сессия создаёт подписки
только в момент сеанса).

Вобщем в конце концов я плюнул и решил что пускай будет обобщенная тема. И если разговор повернется
в плоскость сравнения брокеров например HornetQ и ApacheMQ то мы конечно что-то придумаем как сравнить.


Если вы в ПРОДЕ конфигурировали особые настройки сети и протоколов для брокера - то поделитесь
этими настройками.

Если вы знаете какой-то JMS-ный антипаттерн - то тоже прошу поделится.


Спасибо всем.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101141
Я для обмена событиями между приложениями теперь использую REST и фиды вместо MQ. Ну, когда есть возможность. Мне очень понравилось.

Работает так:
1. Система А хочет получать сообщения от Б
2. Б публикует фид событий которые у него происходят. Ну и ссылки на сущности которые поменялись этим событием.
3. А поллит фид раз в сколько-то секунд и если видит там неизвестные ранее события, то может пойти по ссылкам и скачать все нужные данные.
4. Для этого А должен хранить инфу о последнем считанном событии. Это может быть timestamp если не боимся двух одновременных событий, или ID события.

Это очень удобно:
а. Если что-то пошло не так, то фид и детали можно смотреть прям из браузера
б. Если что-то пошло не так и система А не смогла сохранить/распарсить данные из Б, то эта же система А их потом и перезапросит после того как мы починили все. Т.е. не надо трогать команду Б чтоб те запустили заново событие.
в. Не надо изучать/устанавливать доп компоненты (MQ brokers)

Но конечно если нужно чтоб А мгновенно узнала о событии в Б, то прийдется все-таки чтоб Б как-то нотифицировала нуждающихся. Либо по тому же HTTP, либо по MQ.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101146
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
А поллит фид раз в сколько-то секунд

Костыли. Можно было и вебсокет сколхозить раз уж на то пошло.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101147
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Почему соврменные JMS/MQ системы незаменимы?

С MQ удобно горизонтально масштабироваться. Выросла нагрузка? Добавил n инстансов (и не обязательно на один сервак). Надо под это затачивать систему, конечно. Можно делать и serverless, вкорячить какой-нибудь zeromq или сделать велик.
mayton
Является ли это хайпом или технолгическим витком?

Это очередной технологический виток хайпа.
mayton
Почему мы не можем вместо них брать Dbms?

Потому что у этих систем нет ничего общего.
mayton
Файловую систему? (я видел такие юзкейсы)

Нужно сделать броадкаст на n сервесов, которые находятся на m серверах. Как это сделать через фс? Монтировать её на этих m серверах? Уровень костылизма зашкалил.
mayton
Можно-ли вообще их исключить из стека технологий?

Не хочешь/нечего разделять на куски - не разделяешь, пилишь дальше свой монолит.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101148
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
Работает так:
1. Система А хочет получать сообщения от Б
2. Б публикует фид событий которые у него происходят. Ну и ссылки на сущности которые поменялись этим событием.
3. А поллит фид раз в сколько-то секунд и если видит там неизвестные ранее события, то может пойти по ссылкам и скачать все нужные данные.
4. Для этого А должен хранить инфу о последнем считанном событии. Это может быть timestamp если не боимся двух одновременных событий, или ID события.

Это все делается штатными средствами rabbit'а, без изобретения великов.

Stanislav Bashkyrtsev
Это очень удобно:
а. Если что-то пошло не так, то фид и детали можно смотреть прям из браузера

Делаешь гейт, который тащит данные из рабита в браузер - profit.

Stanislav Bashkyrtsev
Если что-то пошло не так и система А не смогла сохранить/распарсить данные из Б, то эта же система А их потом и перезапросит после того как мы починили все.

Если система что-то там не смогла, не делаешь подтверждение (ack) запроса, останавливаешь, чинишь, запускаешь заново.

Stanislav Bashkyrtsev
в. Не надо изучать/устанавливать доп компоненты (MQ brokers)

Эпохальная проблема. Зто надо писать свой велик, как-то хранить и выбирать события на Б (т.е. нужна как минимум какая-то субд), которую все будут постоянно запрашивать.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101153
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Привет коллеги.
Является ли это хайпом или технолгическим витком?



Чта?! Хайп MQ?
Мне казалось, что хайп на MQ прошел лет 10 назад.
Щас хайп это GraphQL и gRPC.
Щас у нас на проекте активно избавляются от REST и переходят на GraphQL для фронта.
А микросервисы между собой общаются по gRPC.
Только где-то в уголке притаилась Kafka.

<:o)
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101155
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,
Ты прокололся.
Ты сравнил асинхронные технологии и синхронные.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101157
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev,
Велосипед. REST антипод Message Oriented Middleware
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101160
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Почему соврменные JMS/MQ системы незаменимы?
Является ли это хайпом или технолгическим витком?

Потому что ТЕОРЕМА
https://en.m.wikipedia.org/wiki/CAP_theorem
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101163
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Щас у нас на проекте активно избавляются от REST и переходят на GraphQL для фронта.
деньги в ФОТ наверняка ничьи. То есть бюджетные))
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101168
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mad_nazgul,
Ты прокололся.
Ты сравнил асинхронные технологии и синхронные.


Чта?!
У нас gRPC в основном асинхронно работает.
И graphQL тоже может асинхронно работать.
Мы пока пишем синхронные запросы. Т.к. только тренируемся.
Но в перспективе будем асинхронные делать.

<:o)
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101169
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mad_nazgul
Щас у нас на проекте активно избавляются от REST и переходят на GraphQL для фронта.
деньги в ФОТ наверняка ничьи. То есть бюджетные))


Нет.
Всё для удобства фронта.
Чтобы они не делали 100500 запросов рест.
Всё свести к нескольким запросам GraphQL.
Т.к. он позволяет одним запросом обратиться к нескольким ендпоинтам.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101174
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
gRPC в основном асинхронно работает.
докажи
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101232
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
Я для обмена событиями между приложениями теперь использую REST и фиды вместо MQ. Ну, когда есть возможность. Мне очень понравилось.

Тут есть нюанс. Как мне кажется это удобно для взаимодействия двух систем. А если их более чем две.
Тогда у нас может получится квадратичный рост ресурсов.

И кроме того мне непонятно как с фидами поддержать FIFO? Будет ли отслеживаться хронология событий?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101235
crutchmasterКостыли.Нет, это не костыли, это вполне известное решение. Не я придумал. Есть спец форматы для фидов: RSS, Atom. Я с такими системами еще в 2009ом работал.
crutchmasterМожно было и вебсокет сколхозить раз уж на то пошло.Ну смотря что ты тут имеешь в виду. Если то что система Б в вебсокет просто пишет события, то нет - нельзя было. Если система А может запрашивать по веб сокету фид и события, то да - можно было бы и с ним.
crutchmasterЕсли система что-то там не смогла, не делаешь подтверждение (ack) запроса, останавливаешь, чинишь, запускаешь заново.Нет, Ack здесь не поможет. Потому как ты мог послать подтверждение (твоя система посчитала что все хорошо), сохранил данные, но неверно. С поллом все просто: починил, перезапросил данные, они перезаписались в БД. Главное чтоб это идемпотентная операция была.
crutchmasterТут есть нюанс. Как мне кажется это удобно для взаимодействия двух систем. А если их более чем две.
Тогда у нас может получится квадратичный рост ресурсов.Чем больше систем, тем меньше ресурсов в среднем мы тратим. Эти проблемы все решаются простым кешированием. В открытом вебе еще добавляют тротлинг. В вебе в принципе мы не работаем с MQ (во всяком случае я никогда не видел таких решений), я не уверен что MQ в принципе масштабируется до таких размеров и нагрузок.

crutchmasterИ кроме того мне непонятно как с фидами поддержать FIFO? Будет ли отслеживаться хронология событий?Ну тут два варианта:
1. Наши события - эт не события, а просто сущности в БД отсортированные по дате модификации. Но тогда сущность может "прыгать" по фиду. Сначала она была в мартовском фиде, теперь в августовском. Это не требует доп таблиц.
2. Ну или заводим доп таблицу с событиями и записываем их в БД. Это в любом случае нередко удобно для аудитов и дебагинга.

В общем как я уже и говорил - я с этим удачно работаю. Это оочень удобно.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101241
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton
Почему соврменные JMS/MQ системы незаменимы?
Является ли это хайпом или технолгическим витком?

Потому что ТЕОРЕМА
https://en.m.wikipedia.org/wiki/CAP_theorem

Начало - хорошее. Но неполное. CAP применим в отношении одноранговых систем. Типа узлы кластера dbms.
JMS/MQ системы - содержат узлы разного ранга. Потребители. Поставщики событий и брокеры. И как здесь
уложить CAP - не совсем понятно.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101243
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster

mayton
Почему мы не можем вместо них брать Dbms?

Потому что у этих систем нет ничего общего.

Это может быть хорошим вопросом на собеседовании.

Но нам нужен развернутый ответ. Если JMS/MQ брокер хранит события и предоставляет
интерфейс для пуша и полла. И dbms также может хранить таблицу событий и также
предоставлять аналогичные возможности - то нам надо подчеркнуть разницу.

Так в чем-же разница?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101245
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
PetroNotC Sharp
mad_nazgul,
Ты прокололся.
Ты сравнил асинхронные технологии и синхронные.


Чта?!
У нас gRPC в основном асинхронно работает.
И graphQL тоже может асинхронно работать.
Мы пока пишем синхронные запросы. Т.к. только тренируемся.
Но в перспективе будем асинхронные делать.

<:o)

Асинхронность - это хорошо. Но безотносительно синхроннсти или асинхронности
поставщик событий и потребитель встречаются в сети и присутсвуют единовременно.

Без этого у вас не состоится коннект. В противоположность message broker позволяет
событию (бизнес-событию!) существовать отдельно от обоих участников. Тоесть lifecycle
такого бизнес-события более сложен чем просто асинхронизм.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101247
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
mad_nazgul
пропущено...


Чта?!
У нас gRPC в основном асинхронно работает.
И graphQL тоже может асинхронно работать.
Мы пока пишем синхронные запросы. Т.к. только тренируемся.
Но в перспективе будем асинхронные делать.

<:o)

Асинхронность - это хорошо. Но безотносительно синхроннсти или асинхронности
поставщик событий и потребитель встречаются в сети и присутсвуют единовременно.

Без этого у вас не состоится коннект. В противоположность message broker позволяет
событию (бизнес-событию!) существовать отдельно от обоих участников. Тоесть lifecycle
такого бизнес-события более сложен чем просто асинхронизм.
именно!
Так что альтернатива только почта и ямщики на лошадях
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101248
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Но нам нужен развернутый ответ.
проект пишу. Некогда лекции писать.
Ты и сам знаешь что субд централизована. А сабж распределенные информ системы и бд
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101251
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton
Но нам нужен развернутый ответ.
проект пишу. Некогда лекции писать.
Ты и сам знаешь что субд централизована. А сабж распределенные информ системы и бд

Нет. СУБД тоже могут лежать на других уровнях CAP. Посмотри как работает Apache Cassandra.
Это СУБД но она не связана обязательством C<->A.

Посмотри как работает DynamoDb, Apache Ignite.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101252
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
Нет, это не костыли, это вполне известное решение.

Костыльное решение. Для rss это как-то и оправдано, для сообщений - ну так себе. Вот мы тут на форуме сидим и тычим F5. Удобно?

Stanislav Bashkyrtsev
Ну смотря что ты тут имеешь в виду.

Что бы А не дрочило Б запросами раз в n секунд, а событие передавалось тогда, когда оно произошло.

Stanislav Bashkyrtsev
Нет, Ack здесь не поможет.

Ну да, так надо перезапрашивать. Но так не понятно причём тут вообще какое-то mq, если всё завязано на логи запросов и они там кому-то нужны потом целый год. Это всё равно, что финансовые транзакции пытаться с mq хранить.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101253
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
Нет, это не костыли, это вполне известное решение. Не я придумал. Есть спец форматы для фидов: RSS, Atom. Я с такими системами еще в 2009ом работал.

Я признаться... про RSS мало знаю. Я считал что это просто статичный файл который сам браузер
периодически poll-ает и таким образом узнает о линках на новые события.

Я не прав?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101255
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я признаться... про RSS мало знаю.

Например rss новых тем на форуме (которое работает через одно место). Браузер тыркает форумом запросами, форум иногда его обновляет.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101259
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
PetroNotC Sharp
пропущено...
проект пишу. Некогда лекции писать.
Ты и сам знаешь что субд централизована. А сабж распределенные информ системы и бд

Нет. СУБД тоже могут лежать на других уровнях CAP. Посмотри как работает Apache Cassandra.
Это СУБД но она не связана обязательством C<->A.

Посмотри как работает DynamoDb, Apache Ignite.
я не понял твоего вопроса и посыла.
- у решения Клиен-сервер двухзвенка есть СУБД
- у решения Message-oriented middleware тоже есть для сообщений своя бд внутри.
Ты не понял разницы?
Она в каждом из трех слов архитектуры
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101261
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev,

Ну, короче mq - это не про то. Это чтобы тебе доставить твой фид из точек [a,b,c,...] в точки [x,y,z,...]
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101262
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

- у решения Message-oriented middleware тоже есть для сообщений своя бд внутри.

Так все таки? БД или JMS/MQ ?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101264
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
PetroNotC Sharp

- у решения Message-oriented middleware тоже есть для сообщений своя бд внутри.

Так все таки? БД или JMS/MQ ?

Бд своя внутренняя для решения своих задач
- у ослика есть бд
- у винды в операционке есть бд
- у кафки есть бд
- у git есть бд
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101315
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton
пропущено...

Так все таки? БД или JMS/MQ ?

Бд своя внутренняя для решения своих задач
- у ослика есть бд
- у винды в операционке есть бд
- у кафки есть бд
- у git есть бд

Ну это не тот ответ который я хотел услышать. Впрочем это даже вопрос не к тебе а ко всем участникам.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101317
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mayton
Я признаться... про RSS мало знаю.

Например rss новых тем на форуме (которое работает через одно место). Браузер тыркает форумом запросами, форум иногда его обновляет.

Насколько я понимаю эта линка - конфигурация всех подписок на sql.ru?

https://www.sql.ru/forum/actualrss.aspx?id=11

Верно?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101319
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster

С MQ удобно горизонтально масштабироваться. Выросла нагрузка? Добавил n инстансов (и не обязательно на один сервак). Надо под это затачивать систему, конечно. Можно делать и serverless, вкорячить какой-нибудь zeromq или сделать велик.

Полностью согласен насчет масштабирования. Эта точка приложения сил - самая легкая и алгоритмически
простая. Если масштабирование Real-Application-Cluster например для Оракла имеет объективные ограничения
(там выше 100 узлов уже может начинаться шторм служебного трафика) то для таких слабо-связных
систем или eventually связных - это число отодвинуто очень далеко.

Кроме того брокеры и продюсеры и консюмеры мы можем разделять спокойно до тех пор пока бизнес-логика
позволяет. Разделить DBMS на части - это тот еще челледж. Особенно чтобы ПОСЛЕ разделения БД сохраняла
те-же свойства что и до разделения.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101320
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster

Нужно сделать броадкаст на n сервесов, которые находятся на m серверах. Как это сделать через фс? Монтировать её на этих m серверах? Уровень костылизма зашкалил.

Для соединения точка-точка это вполне себе работает. 1 месседж == 1 файл.
Только нужно гарантировать чтобы только 1 процесс брокера
считывал файлы. Иначе есть риск прочитать файл дважды.

Ордеринг (FIFO) мы гарантировали через хронологические названия файлов. Например шаблон
yyyy-mm-dd-hh-mm-ss-ms.xml в файловой системе NTFS5 всегда сохранялся в директории
с сортированном порядке (это свойство NTFS) и извлекая файлы листингом директории
мы получали коробочную сортировку без усилий.

Мы строили такую систему в 2003 году. На базе Microsoft.Net.

Бродкаста (подписок на топики) у нас не было. Просто было специфичное ТЗ.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101322
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Не хочешь/нечего разделять на куски - не разделяешь, пилишь дальше свой монолит.


Да не в монолите дело. И хотя я чаще голосую за монолит. Просто сама жизнь и сами
условия ведения бизнеса диктуют если не разделение задачи на части - то просто
интеграцию. Ты делаешь спокойно монолит. Потом к тебе приходит бизнес и говорит
- вот нам тут надо черпать тикеры и прайсы из такой-то и такой-то системы.
И ничего тут не поделаешь.

И что твоё приложение после этого? Монолит? Не?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101325
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev

crutchmasterИ кроме того мне непонятно как с фидами поддержать FIFO? Будет ли отслеживаться хронология событий?
Ну тут два варианта:
1. Наши события - эт не события, а просто сущности в БД отсортированные по дате модификации. Но тогда сущность может "прыгать" по фиду. Сначала она была в мартовском фиде, теперь в августовском. Это не требует доп таблиц.
2. Ну или заводим доп таблицу с событиями и записываем их в БД. Это в любом случае нередко удобно для аудитов и дебагинга.

В общем как я уже и говорил - я с этим удачно работаю. Это оочень удобно.
Тут было неверно квотировано. Вопрос по хронолгии - это мой вопрос.

По поводу прыгающих сущностей и доп таблиц. Я голосую против. Потому-что Consumer должен быть простым.
Тоесть если я и Петро к примеру подписались на новости изменения цен на акции Luxoft или Yandex, то
мы не хотим парсить никаких фидов и вообще мы ничего не хотим делать на клиене.

Мы просто делаем цикл или хендлер наподобие того что я приводил из учебных примеров и имеем
новости по ценам на акции.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@Component
public class Receiver {

  @JmsListener(....)
  public void receiveMessage(EquityNews equity) {
     .....
  }

}



Кстати подписка - важный момент. Если я уже прочитал новость а Петро еще не прочитал - то брокер
будет хранить ее хоть 1000 лет (на самом деле согласно политике retention которая описана в брокере)
и Петро получит свои новости по акциям когда поднимет свой упавший Consumer.

И те господа которые в качестве аналогии MQ систем приводят толи сокеты... толи еще какие-то упрощения
- почему-то игнорируют такой юзкейс. Или я не знаю сколько я еще должен поднять технологий и структур
данных чтобы превратить пускай самый быстрый сокет в аналог полноценного брокера с подпиской.

Кстати Kafka в организации хранения сообщений очень экономна. Ей достаточно хранить только offset прочитанного
для каждого потребителя. Группа соотв - должна хранить группу оффсетов.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101326
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

Щас у нас на проекте активно избавляются от REST и переходят на GraphQL для фронта.

И как впечатления от GraphQL?

Мне показалось что слишком сложно для большинства простых потребителей контента.

GraphQL в смысле КОНТЕНТА предлагает офигенскую фичу. Вы получаете на response
трафик который содержит только те поля и суб-документы которые зареквестили.

Но чтобы эту фичу полноценно реализовать - нужна либо какая-то очень гибка DBMS
наподобие графовой. Либо нужен чудовищно-сложный SQL-билдер запросов
который может вытянуть вообще всю твою базу в зависимости от того что
юзер запросил в реквесте.

Если вы искусственно ограничите этот билдер и скажете что - нахрена дескыть
тянуть дочерние суб-таблицы. Пускай сделают 2-мя GrapQL реквестами.

То возникает вопрос. А нахрена вы вообще брали GraphQL?

У вас - REST-style сборки модели ответа!

Вернитесь обратно в REST!
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101327
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

авторКстати подписка - важный момент. Если я уже прочитал новость а Петро еще не прочитал - то брокер
будет хранить ее хоть 1000 лет (на самом деле согласно политике retention которая описана в брокере)
и Петро получит свои новости по акциям когда поднимет свой упавший Consumer.
вообще, это основной момент для использования MQ
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101329
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
Чем больше систем, тем меньше ресурсов в среднем мы тратим. Эти проблемы все решаются простым кешированием. В открытом вебе еще добавляют тротлинг. В вебе в принципе мы не работаем с MQ (во всяком случае я никогда не видел таких решений), я не уверен что MQ в принципе масштабируется до таких размеров и нагрузок.

По теме топика, Станислав, ваше предложение - самое интересное.

Но я честно говоря не совсем понимаю какого рода сервис вы предоставляете?
Возможно сервис фидов это не совсем MQ. Это скорее ... SNAPSHOT сервис
где нам предлагается самим собрать последние новости.

Верно ли я понял? И можете привести пример такого ответа от вашего фид-сервиса.
Ну например я захотел фид по ценам на акции it-компаний.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101333
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

У нас gRPC в основном асинхронно работает.

Я не знаком с gRPC и не использовал его. Но фичей преподносится некий гугловый вариант
компактной сериализации данных. Эту сериализацию вообще интересно рассматривать
только в сравнении со смежными технологиями такими как

- Apache AVRO
- Apache Thrift

В моём понимании они делают тоже самое. Это как ... сравнивать 5 видов json форматов.
Вроде они разные. Но внутри всё тоже самое.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101378
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
gRPC это упрощенная версия SOAP.
Удаленный вызов процедур на java клиенте, или дельфи клиенте.
Понятно что это (RPC) к сабжу не относится.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101383
mayton
По поводу прыгающих сущностей и доп таблиц. Я голосую против. Потому-что Consumer должен быть простым.
Тоесть если я и Петро к примеру подписались на новости изменения цен на акции Luxoft или Yandex, то
мы не хотим парсить никаких фидов и вообще мы ничего не хотим делать на клиене.
Ну чем жесче требования, тем больше прийдется делать. В моем случае прыгающие сущности были норм потому как клиент идемпотентент и ему норм забрать одни и те же изменения два раза. Если это не устраивает, то прийдется создавать таблицу событий.
maytonНо я честно говоря не совсем понимаю какого рода сервис вы предоставляете?
Возможно сервис фидов это не совсем MQ. Это скорее ... SNAPSHOT сервис
где нам предлагается самим собрать последние новости.

Верно ли я понял? И можете привести пример такого ответа от вашего фид-сервиса.
Ну например я захотел фид по ценам на акции it-компаний.В моем случае Системой А пользуется один отдел, он сабмитит данные в Систему Б которой пользуется другой отдел. После того как Отдел Б закончил с заявкой, мы хотим результаты увидеть в Системе А. И вот Система А поллит события и забирает данные. И пользователь из Отдела А видит результаты на UI.

Если быть более конкретными: Отдел А - это химики которые синтезировали вещества, а Отдел Б - это химики которые очищают результат и получают чистый продукт. Система А соответственно сабмитить какие молекулы мы ожидаем, плюс предпочтения по очистке, а Система Б - регистрирует результат очистки (это картинки плюс данные), мол, сколько там получилось, какая чистота, регистрационный номер.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101386
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev,
Ну, жуткий велосипед. Чего уж тут стеснятся.
Разработчики уже немолодые люди.
Вероятно логирование тоже рукописное.
Бывает.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101387
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JMS/MQ система не обязательно должна поставлять полный документ. Если отдел А уведомляет отдел Б
о том что результат уже готов - он может прислать мессендж с линком на хранилище где уже лежит
отчот. Это решает многие вопросы нагрузок.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101390
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как то странно. если в работе есть одно вещество, по которому идет работа и один отдел его делает, а второй отдел его чистит, то завести информационный объект "тетрадимитилгидрохлорид", а в системе каждого отдела, осуществляющего операцию по веществу, по завершении каждой операции выслать сообщение по итогам каждой операции. кто на событие очистка подписался, тот уведомление и получает.
а так выглядит велосипедом
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101396
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrU,
У него событие это Push сообщение. То есть от сервера клиенту.
HTTP1 это не умеет. HTTP2 уже умеет.
Но они циклом опрашивают сервер на предмет новостей.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101397
Мне кажется здесь люди не очень понимают программерскую терминологию.. Или просто хочется кинуть камнем, но не умеючи - не выходит :) Велосипед - это создание чего-то, что уже существует. Как в случае собсно велосипеда, который изобретали два раза.

Оповещения о событиях решаться может двумя способами:
- Асинхронно (MQ) - низкий latency, но хуже с масштабируемостью и сложней дебаг
- Синхронно (polling) - высокий latency (хотя это можно обойти добавив таки немного асинхронности), лучше с масштабируемостью (если допустимы кэши), проще дебаг
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101401
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev

- Асинхронно (MQ) - низкий latency

Нет такого требования. Низкий latency как раз важен для классических REST/SOAP систем.
Для JMS/MQ это требование как раз может быть смягчено за счет других бизнес требований
и конфигурации. Те-же гарантии доставки например и транзакции.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101406
mayton
Stanislav Bashkyrtsev

- Асинхронно (MQ) - низкий latency

Нет такого требования. Низкий latency как раз важен для классических REST/SOAP систем.
Для JMS/MQ это требование как раз может быть смягчено за счет других бизнес требований
и конфигурации. Те-же гарантии доставки например и транзакции.
Это не требование - это результат асинхронной архитектуры.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101426
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
Асинхронно (MQ) - низкий latency, но хуже с масштабируемостью и сложней дебаг
- Синхронно (polling) - высокий latency (хотя это можно обойти добавив таки немного асинхронности), лучше с масштабируемостью (если допустимы кэши), проще дебаг

Ну и еще есть куча методов. Чё только один привел?
Вот бегать в магазин каждые 5 сек спрашивая завезли ли хлеб, и есть ВЕЛОСИПЕД.)))))
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101471
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev

- Синхронно (polling) - высокий latency (хотя это можно обойти добавив таки немного асинхронности), лучше с масштабируемостью (если допустимы кэши), проще дебаг
что? что вы называете Polling?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101480
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
Вместо коллбэка клиент ставит таймер и каждые 5сек спрашивает новости у старшего брата сервера
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101484
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
Я для обмена событиями между приложениями теперь использую REST и фиды вместо MQ. Ну, когда есть возможность. Мне очень понравилось.

Работает так:
1. Система А хочет получать сообщения от Б
2. Б публикует фид событий которые у него происходят. Ну и ссылки на сущности которые поменялись этим событием.
3. А поллит фид раз в сколько-то секунд и если видит там неизвестные ранее события, то может пойти по ссылкам и скачать все нужные данные.
4. Для этого А должен хранить инфу о последнем считанном событии. Это может быть timestamp если не боимся двух одновременных событий, или ID события.

Это очень удобно:
а. Если что-то пошло не так, то фид и детали можно смотреть прям из браузера
б. Если что-то пошло не так и система А не смогла сохранить/распарсить данные из Б, то эта же система А их потом и перезапросит после того как мы починили все. Т.е. не надо трогать команду Б чтоб те запустили заново событие.
в. Не надо изучать/устанавливать доп компоненты (MQ brokers)

Но конечно если нужно чтоб А мгновенно узнала о событии в Б, то прийдется все-таки чтоб Б как-то нотифицировала нуждающихся. Либо по тому же HTTP, либо по MQ.

еще немного наворотов и ты получишь кафку. вопрос. зачем придумывать лисапед и решать проблемы которые уже давно за тебя решили?

ксттаи я как то собесился в заландо финский, (я живу в финляндии), и там схлестнулся на эту тему с их заландским "архитектором", кстати питерским (о да какой сюрприз, пол питера живет через забор), в общем я ему примерно то что ты описал предложил как альтернативное решение чтоб не зацикливаться на брокерах и использовать их тогда когда надо а не чтоб было. он сказал что я некопенгаген и дал по мне негативный фидбек. что он мне постоянно намекал использвоать брокер а я "вероятно ничего кроме реста не знаю".
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101485
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
kealon(Ruslan),
Вместо коллбэка клиент ставит таймер и каждые 5сек спрашивает новости у старшего брата сервера

а ему прилетает порток на 25 тысяч записей.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101500
andreykaT
Stanislav Bashkyrtsev
Я для обмена событиями между приложениями теперь использую REST и фиды вместо MQ. Ну, когда есть возможность. Мне очень понравилось.

Работает так:
1. Система А хочет получать сообщения от Б
2. Б публикует фид событий которые у него происходят. Ну и ссылки на сущности которые поменялись этим событием.
3. А поллит фид раз в сколько-то секунд и если видит там неизвестные ранее события, то может пойти по ссылкам и скачать все нужные данные.
4. Для этого А должен хранить инфу о последнем считанном событии. Это может быть timestamp если не боимся двух одновременных событий, или ID события.

Это очень удобно:
а. Если что-то пошло не так, то фид и детали можно смотреть прям из браузера
б. Если что-то пошло не так и система А не смогла сохранить/распарсить данные из Б, то эта же система А их потом и перезапросит после того как мы починили все. Т.е. не надо трогать команду Б чтоб те запустили заново событие.
в. Не надо изучать/устанавливать доп компоненты (MQ brokers)

Но конечно если нужно чтоб А мгновенно узнала о событии в Б, то прийдется все-таки чтоб Б как-то нотифицировала нуждающихся. Либо по тому же HTTP, либо по MQ.

еще немного наворотов и ты получишь кафку. вопрос. зачем придумывать лисапед и решать проблемы которые уже давно за тебя решили?
Сам я с Kafka не работал, но в моем понимании это MQ. Хотя судя по всему она позволяет подписчикам откатывать свой оффсет как в случае фидов. Ну и весь топик можно хранить бесконечно, т.е. это аналог таблицы событий в БД. Веб UI к ней тоже можно подключить.

В общем может быть и можно подобное с помощью Kafka сделать без потери в функциональности. Останутся скорей всего такие проблемы:
- Масштабируемость - потому как она вряд ли будет кэшировать ответ подписчику? Но мне не приходится обычно писать что-то высоконагруженное с большим кол-вом подписчиков, поэтому это я переживу :)
- Лишний компонент который нужно хорошо изучить
- Ну и это доп компонент который прийдется деплоить, поддерживать, бэкапить и пр.
- И я еще не понял что делать если сама кафка лежит и наше приложение не может запаблишить событие. А из БД не обязательно это событие можно будет восстановить. Да и давать возможность кафке читать базу и писать код для вычленения всех типов событий, хм..

Пока я не убежден на 100% что она правда не привнесет больше хлопот чем решит проблем. Но как минимум надо будет дать шанс.

andreykaT
PetroNotC Sharp
kealon(Ruslan),
Вместо коллбэка клиент ставит таймер и каждые 5сек спрашивает новости у старшего брата сервера

а ему прилетает порток на 25 тысяч записей.
Не, тут все легко решается постраничным выводом. Это не проблема.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101506
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev

- Масштабируемость - потому как она вряд ли будет кэшировать ответ подписчику?

Их никто не кеширует by design. Месседжи - одноразовые. Хотя consumer может кешировать их в своём
собственном процессе - но зачем? Для кого?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101531
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
PetroNotC Sharp
kealon(Ruslan),
Вместо коллбэка клиент ставит таймер и каждые 5сек спрашивает новости у старшего брата сервера

а ему прилетает порток на 25 тысяч записей.
странный ты.
Нужен сам факт - что в магазин завезли хлеб.
Boolean
А как ты потом выгребать будешь, пофиг.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101532
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас - изначально какая-то неверная установка. JMS/MQ системы - основное приминение back-to-back.
Их мало используют на фронтовой стороне. И когда мы рассуждаем как слать месседжи в браузер
- мы неизбежно заходим в тупик.

Давайте разделим эти юзкейсы. Пускай будут websockets и их протоколы. Это одно.

И будут back-системы которые связывают только серверные процессы. Это - другое.

Про "порток на 25 тыщ" записей я уже выше писал.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101535
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Ну тогда вброс станислава тут лишний.
СистемаБ может получить Push из системыА без Pool.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101539
guest2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаю зачем вы их до сих пор используете, если есть Kafka.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101570
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Kafka и Jms для разных целей разрабатывались. Kafka это стриминговая логирующая система, ориентирована на пакетную обработку данных, что накладывает ограничения на гарантированную доставку и дедубликацию. Jms же ориентирован на гарантированную доставку отдельных сообщений. Да, можно реализовать для Kafka на стороне клиента функционал подобный jms, но тогда и производительность Kafka будет как у обычного брокера JMS. Jms позволяет писать более простой код и, например, не всякий разработчик сейчас сможет правильно написать код обработки ребалансировки консьюмеров Kafka так, чтобы сообщения не терялись и не было дублей. Ещё надо понимать, что под реализацией Jms тоже лежит БД, например, для ActiveMQ это обычно Kahadb, специально оптимизированная под обработку очередей и вряд ли БД общего назначения сможет конкурировать со специализированной БД по быстродействию.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101590
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JMS, что вы понимаете под термином.
Имхо он устарел, умер, и сейчас не актуален.
Мне больше нравится, Message-oriented middleware
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101596
Roman Osipov
Kafka это стриминговая логирующая система, ориентирована на пакетную обработку данных, что накладывает ограничения на гарантированную доставку и дедубликацию.
А какие ограничения и почему они накладываются? И в целом интересно узнать почему такие проблемы возникают и как решаются в JMS.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101597
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov, верно подмечено. "Пакетность" заложена даже в интерфейсной части.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101599
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вчера посмотрел вот это видео. Чувак из Badoo героически боролся с сменой мастера и балансировкой. Любопытно.

[spoiler]
YouTube Video
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101602
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Roman Osipov, верно подмечено. "Пакетность" заложена даже в интерфейсной части.
по сравнению с чем?
JMS это спецификация. Тогда с чем сравниваем пакетность кафки?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101609
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton
Roman Osipov, верно подмечено. "Пакетность" заложена даже в интерфейсной части.
по сравнению с чем?
JMS это спецификация. Тогда с чем сравниваем пакетность кафки?

Знаешь что интересно. Что в документации на Кафку в оглавлении
https://kafka.apache.org/documentation/#api
JMS даже нигде не упоминается.

Разумеется у нее будут коннекторы которые будут адаптировать события
в JMS протоколы такие как AMQP, STOMP e.t.c.

Но самое главное я-бы отсюда вывел следующее. Кафка не заявляет себя как
JMS система. Вот мои рассуждения.

Я неправ?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101614
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

JMS это не протокол.
Это API и спецификация именно для java приложений.

>Разумеется у нее будут коннекторы которые будут адаптировать события
в JMS протоколы такие как AMQP, STOMP e.t.c.

Невозможно из kafka сделать AMQP.
Потому что AMQP это не про сообщение, а про про exchanges, queues и bindings сежду ними.
А kafka это стримминг, и таких понятий там просто нет.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101616
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен. JMS - это спецификация для Java. Не буду спорить.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101617
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Согласен. JMS - это спецификация для Java. Не буду спорить.
поэтому тему лучше изменить на "пошире"
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101618
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как "пошире"? Можно создать отдельный топик по streaming-platform... но учитывая вялую посещаемость sql.ru
я-бы оставил как есть.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101619
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Я для обмена событиями между приложениями теперь использую REST и фиды вместо MQ

ИМХО этот паттерн далеко не для всех случаев подходит.

Кейс 1.
Например, приложение 1 это кластер, в котором несколько нод N, и по разным событиям от приложения 2 нужно обновлять M кешей.
Если N и M велики, например, несколько десятков нод и сотни кешей, то пулинг создаст заметную дополнительную нагрузку.
А если, не дай бог, это хозяйство расположено в AWS, то счет в конце месяца тебя неприятно удивит.

Кейс 2.
Необходимо уведомлять несколько приложений о событии, причем логика того, какие приложения нужно уведомлять, а какие нет (раутинг), может менятся.
Если делать через пулинг, то при изменении логики раутинга необходимо перконфигурировать или передеплоивать все приложения.
А это bad practice.
А если через AMQP, то достаточно поменять привила байндинга exchange на очереди.

Думаю, что таких кейсов достаточно много.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101623
kolchanov
>Я для обмена событиями между приложениями теперь использую REST и фиды вместо MQ

ИМХО этот паттерн далеко не для всех случаев подходит.

Кейс 1.
Например, приложение 1 это кластер, в котором несколько нод N, и по разным событиям от приложения 2 нужно обновлять M кешей.
Если N и M велики, например, несколько десятков нод и сотни кешей, то пулинг создаст заметную дополнительную нагрузку.
А если, не дай бог, это хозяйство расположено в AWS, то счет в конце месяца тебя неприятно удивит.
Добавляем кэширование на сервере в nginx'e эдак в одну минуту и вся нагрузка с сервера резко уйдет. Т.е. надо чтоб все долбящиеся клиенты кроме 1ого получали ответ из кеша.
А вот если задержка в минуту (ну или сколько там надо) недопустима и сервисы сразу должны узнавать про событие - тогда да, такое на одних фидах не сделать.
kolchanovКейс 2.
Необходимо уведомлять несколько приложений о событии, причем логика того, какие приложения нужно уведомлять, а какие нет (раутинг), может менятся.А для чего это делается?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101627
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Как "пошире"? Можно создать отдельный топик по streaming-platform... но учитывая вялую посещаемость sql.ru
я-бы оставил как есть.
пошире это
- JMS устарело. Не стоит сравнивать.
- обсуждать или MQ или Message oriented middleware.
Это имхо.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101628
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton
Как "пошире"? Можно создать отдельный топик по streaming-platform... но учитывая вялую посещаемость sql.ru
я-бы оставил как есть.
пошире это
- JMS устарело. Не стоит сравнивать.

В чем устарело? То что спецификация была от 2013 года? Так это не так старо. Бывалыча некоторые стандарты
и постарше лежат и ничего.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101629
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

или Message oriented middleware.

Расскажи как ты себе понимаешь MOM. Без определений из вики. Вот лично как ТЫ понимаешь.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101630
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kafka даёт максимальную производительность (из-за которой её и используют ) в режиме автокоммитов оффсетов или редких ручных коммитов. Автокоммит, кстати, сконфигуирован в Kafka по дефолту в true. Видел проекты, где разработчики вешают аннотацию коньсьмера кафка на метод и вроде как получают сообщения и все у них работает, но упускают из виду дефолтный автокоммит, что может привести к ситуации, когда коммит оффсетов произошёл, а данные не загрузились в целевую систему, вот и потеря сообщений, причём даже в логах не найдёте информацию о потерях. При редких ручных коммитах чтобы не было потерь у нас должны быть огромные пачки сообщений обрабатываться за раз, что чревато ошибками и необходимостью переотправки. Про дубли - например после ребалансировки консьюмеров не удастся закоммитить оффсеты в той же сессии, при попытке коммита будет exception. Поэтому надо хранить оффсеты обработанных сообщений где-то ещё, во внешнем хранилище, обычно я в zookeer храню. Это только малая часть проблем. Вывод такой - Kafka имеет очень много особенностей эксплуатации, и если у вас в команде нет эксперта по ней, то легко нарветесь на какой нибудь мало понятный баг. Под Jms я имел ввиду именно спецификацию. Здесь все гораздо проще - есть спецификация, есть транзакции в Jms, и даже новичек сможет писать гарантированно работающий код. Конечно, в каждом конкретном случае, в зависимости от требований отказоустойчивости, нагрузки обдуманно выбирается то или иное решение jms, kafka, кэш или что то ещё. Зависит от кругозора архитектора. Про rabbitmq - мы принципиально не пользуемся им, т.к. он плохо горизонтально масштабируется и высока вероятность split brain кластера под нагрузкой, после которого кластер разваливается и лечится только полной очисткой данных.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101636
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev,

>>Необходимо уведомлять несколько приложений о событии, причем логика того, какие приложения нужно уведомлять, а какие нет (раутинг), может менятся.

>А для чего это делается?

Например, b2c и b2b ордера обрабатываются в разных приложениях, хотя и те и те обрабатываются одним customer information management приложением.
Потребовалось по дргугому обрабатывать ордера b2g клиентов.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101637
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev,

>Добавляем кэширование на сервере в nginx'e эдак в одну минуту и вся нагрузка с сервера резко уйдет. Т.е. надо чтоб все долбящиеся клиенты кроме 1ого получали ответ из кеша.

Это помогает только в самых тривиальных случаях, когда всем нужен один и тот же объект.
А если это web портал, которому нужно получать нотификацию об обновлении для конкретного кастомера, у которого открыта сессия.
Еще один nginx посередине сделает ттолько хуже.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101644
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
PetroNotC Sharp
пропущено...
пошире это
- JMS устарело. Не стоит сравнивать.

В чем устарело? То что спецификация была от 2013 года? Так это не так старо. Бывалыча некоторые стандарты
и постарше лежат и ничего.

Ну вот смотри.
За 5 лет в ветке нет обсуждений JMS. А кафки есть.
Для тебя не имеет значение?
Почему для тебя это ничего не значит?
Почему для тебя это не критерий?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101646
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton
пропущено...

В чем устарело? То что спецификация была от 2013 года? Так это не так старо. Бывалыча некоторые стандарты
и постарше лежат и ничего.

Ну вот смотри.
За 5 лет в ветке нет обсуждений JMS. А кафки есть.
Для тебя не имеет значение?
Почему для тебя это ничего не значит?
Почему для тебя это не критерий?

Я думаю что для Java технологий 5 лет - не показатель. О каком старении вообще идет речь?
Протоколы почтовой связи SMTP/POP которые мы используем каждый день имеют возраст порядка 40 лет. И что?

Банки используют внутри AMQP. В основном. Говорю потому что работал минимум с 3 европейскими
банками. Они сидят на этом протоколе плотно. Интеграция систем которые занимаются торговлей
ценными бумагами. И я представил себе что должно случится чтобы они вдруг стали что-то считать устаревшим?
Железо? Софт? Да. Может быть. Это можно считать устаревшим. Хотя-бы по лицензиям.

Протокол связи? - хрен там. Он еще 100 лет может сохраняться без особых изменений.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101647
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
PetroNotC Sharp

или Message oriented middleware.

Расскажи как ты себе понимаешь MOM. Без определений из вики. Вот лично как ТЫ понимаешь.

Легко.
Могу сразу и теорию и практику.
Теория - это ИС с высокой доступность, нагрузкой и низкой согласованность данных (жертва).
Практика - реализовано в ГОСУСЛУГИ
...
Если нет входа то рассказываю.
При входе есть поле Задолженность по налогам. Там число и кнопка "Проверить (на тек время)".
Вроде все понятно.
Никакого pooling))))
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101648
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я думаю что для Java технологий 5 лет - не показатель.
-1
Мы о новых проектах или легаси?
Топик то про что?
Если не разбираясь жрать все подряд то это не профессионализм.
Я в балет прихожу и ничего там не понимаю. Нет ньюансов.
Архитектура это тоже балет. Её слышать и слушать надо.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101653
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Банки используют внутри AMQP.
банки используют МОМ))).
МОМ это класс ПО. А выше абревиатура это протокол.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101654
Roman Osipov
Kafka даёт максимальную производительность (из-за которой её и используют ) в режиме автокоммитов оффсетов или редких ручных коммитов. Автокоммит, кстати, сконфигуирован в Kafka по дефолту в true. Видел проекты, где разработчики вешают аннотацию коньсьмера кафка на метод и вроде как получают сообщения и все у них работает, но упускают из виду дефолтный автокоммит, что может привести к ситуации, когда коммит оффсетов произошёл, а данные не загрузились в целевую систему, вот и потеря сообщений, причём даже в логах не найдёте информацию о потерях. При редких ручных коммитах чтобы не было потерь у нас должны быть огромные пачки сообщений обрабатываться за раз, что чревато ошибками и необходимостью переотправки. Про дубли - например после ребалансировки консьюмеров не удастся закоммитить оффсеты в той же сессии, при попытке коммита будет exception. Поэтому надо хранить оффсеты обработанных сообщений где-то ещё, во внешнем хранилище, обычно я в zookeer храню. Это только малая часть проблем. Вывод такой - Kafka имеет очень много особенностей эксплуатации, и если у вас в команде нет эксперта по ней, то легко нарветесь на какой нибудь мало понятный баг. Под Jms я имел ввиду именно спецификацию. Здесь все гораздо проще - есть спецификация, есть транзакции в Jms, и даже новичек сможет писать гарантированно работающий код. Конечно, в каждом конкретном случае, в зависимости от требований отказоустойчивости, нагрузки обдуманно выбирается то или иное решение jms, kafka, кэш или что то ещё. Зависит от кругозора архитектора. Про rabbitmq - мы принципиально не пользуемся им, т.к. он плохо горизонтально масштабируется и высока вероятность split brain кластера под нагрузкой, после которого кластер разваливается и лечится только полной очисткой данных.
Спасибо! А почему проседает производительность при частых ручных коммитах? Просто из-за доп пакетов по сети?
kolchanov
Stanislav Bashkyrtsev,

>>Необходимо уведомлять несколько приложений о событии, причем логика того, какие приложения нужно уведомлять, а какие нет (раутинг), может менятся.

>А для чего это делается?

Например, b2c и b2b ордера обрабатываются в разных приложениях, хотя и те и те обрабатываются одним customer information management приложением.
Потребовалось по дргугому обрабатывать ордера b2g клиентов.
kolchanov
Stanislav Bashkyrtsev,

>Добавляем кэширование на сервере в nginx'e эдак в одну минуту и вся нагрузка с сервера резко уйдет. Т.е. надо чтоб все долбящиеся клиенты кроме 1ого получали ответ из кеша.

Это помогает только в самых тривиальных случаях, когда всем нужен один и тот же объект.
А если это web портал, которому нужно получать нотификацию об обновлении для конкретного кастомера, у которого открыта сессия.
По поводу обоих проблем: фидов обычно мало. Возможно даже один на все типы оповещений. А клиент когда по ним проходит - фильтрует только нужные. Получаем один ендпоинт который хорошо кешируется и при этом он оказывается универсальным для всех клиентов.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101659
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stanislav Bashkyrtsev, При ручных коммитах производительность проседает, потому, что синхронный коммит оффсетов - блокирующая операция (асинхронный коммит не рассматриваем из-за отсутствия гарантий). Там путь такой обычно - оффсеты запросом клиента доставляются на один из узлов Кafka, потом реплицируются на другие узлы Кafka, в соответствии с настройками репликации, а потом уже синхронно ответ возвращается клиенту. И так каждый раз при ручном коммите.
Для продюсера Kafka ситуация другая, в памяти клиента организуется буфер, в который продюсеры с разных программных потоков складывают информацию, а потом отдельный поток отсылает всю накопленную пачку в Kafka.
Поэтому продюсеры работают быстро, а оффсеты коммитятся медленно.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101661
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton
Банки используют внутри AMQP.
банки используют МОМ))).
МОМ это класс ПО. А выше абревиатура это протокол.

Конечно протокол. И когда стоит задача интеграции или развития ПО то смотрят в первую очередь - на стек
протоколов. Ты не можешь прийти работать в банк и просто написать ПО которое не интегрируется ни с чем.

Можешь называть это MOM, можешь шиной сообщений, можешь событийной и слабосвязной архитектурой.
Суть - та-же.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101662
Roman Osipov
Stanislav Bashkyrtsev, При ручных коммитах производительность проседает, потому, что синхронный коммит оффсетов - блокирующая операция (асинхронный коммит не рассматриваем из-за отсутствия гарантий). Там путь такой обычно - оффсеты запросом клиента доставляются на один из узлов Кafka, потом реплицируются на другие узлы Кafka, в соответствии с настройками репликации, а потом уже синхронно ответ возвращается клиенту. И так каждый раз при ручном коммите.
Для продюсера Kafka ситуация другая, в памяти клиента организуется буфер, в который продюсеры с разных программных потоков складывают информацию, а потом отдельный поток отсылает всю накопленную пачку в Kafka.
Поэтому продюсеры работают быстро, а оффсеты коммитятся медленно.
Понял, спасибо!
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101666
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
Про rabbitmq - мы принципиально не пользуемся им, т.к. он плохо горизонтально масштабируется и высока вероятность split brain кластера под нагрузкой, после которого кластер разваливается и лечится только полной очисткой данных.


Прямо срыв покровов можно сказать, меня здесь год назад два пионера пытались всеми силами убедить, что RabbitMQ - это пушка, а то что про него пишут в интернетах - это все недоброжелатели (в т.ч. его же разработчики)
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101669
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Вот бегать в магазин каждые 5 сек спрашивая завезли ли хлеб, и есть ВЕЛОСИПЕД.)))))

Это не велосипед, это КОСТЫЛЬ!
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101670
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Просто было специфичное ТЗ.

Ну, понятно, в частном случае все работало.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101671
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
И ничего тут не поделаешь.

Допиливаешь монолит, деплоишь. Через какое-то время он становится большим и толстым.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101673
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
Прямо срыв покровов можно сказать, меня здесь год назад два пионера пытались всеми силами убедить, что RabbitMQ - это пушка, а то что про него пишут в интернетах - это все недоброжелатели (в т.ч. его же разработчики)

Как идея - нормально. Ну кривоват и что. Попробуй достаточно ерлангшиков найти, чтобы до ума довести все это. А какие еще варианты есть для брокера с подобным функционалом, кроме хттп велика?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101674
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Конечно. Только топик не о протокол и спецификации, а как ты правильно сказал и о шине, и о слабой связанности и о событийной и о...
Короче одним словом - МОМ.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101675
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
PetroNotC Sharp
Вот бегать в магазин каждые 5 сек спрашивая завезли ли хлеб, и есть ВЕЛОСИПЕД.)))))

Это не велосипед, это КОСТЫЛЬ!
да)
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101716
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster, Конечно, у Rabbitmq есть своя ниша, где он хорош. Если не требуется отказоустойчивости и допускается потеря состояния, то он вполне годно работает на одном узле, обеспечивая event driven решение, например, для микросервисов. При этом очереди содержат не данные, которые могут быть больших объёмов, а события. По сравнению с ActiveMQ, Rabbitmq будет быстрее работать в таком случае, может быть в несколько раз.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101718
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Андрей Панфилов
Прямо срыв покровов можно сказать, меня здесь год назад два пионера пытались всеми силами убедить, что RabbitMQ - это пушка, а то что про него пишут в интернетах - это все недоброжелатели (в т.ч. его же разработчики)

Как идея - нормально. Ну кривоват и что. Попробуй достаточно ерлангшиков найти, чтобы до ума довести все это. А какие еще варианты есть для брокера с подобным функционалом, кроме хттп велика?

Подожди-подожди. А если ты пользуешся Ораклом ... то что - попробуй найди С/C++ ников чтоли?

Зачем в эксплуатации коробочной системы тебе знание языка на котором она написана?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101731
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Зачем в эксплуатации коробочной системы тебе знание языка на котором она написана?

Да это не себе, а тем, кто развивает этот самый раббит.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101735
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, Дырявые абстракции. Иногда надо посмотреть, как устроено внутри, чтобы правильно использовать снаружи. И как минимум разработчику понятнее читать java-логи, чем какие нибудь erlang логи. В том числе поэтому мы предпочитаем использовать ActiveMQ, а не Rabbitmq, даже для некритичных систем, хоть он и работает несколько медленнее.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101738
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov,
+1
Вообще, есть куча критериев для выбора Event driven.
Я не помню причину по которой мемберу выше сказали что это пушка по воробьям.
В одном проекте - пушка. В другом золотая пуля и эврика))
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101742
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Вообще, есть куча критериев для выбора Event driven.

Так выбирать в общем-то не из чего. С одной стороны жабака, с другой ерлагн-функциональщики. Есть кафка, amq (openmq, openjms), rabbit, zeromq для ценителей и всё. Никто особо MQ системами, можно сказать, и не занимался.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101747
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov, согласен насчет чтения логов.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101749
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
PetroNotC Sharp
Вообще, есть куча критериев для выбора Event driven.

Так выбирать в общем-то не из чего. С одной стороны жабака, с другой ерлагн-функциональщики. Есть кафка, amq (openmq, openjms), rabbit и всё. Никто особо MQ системами, можно сказать, и не занимался.
ну как не из чего?
1) RPC стиль выбрать или Message? Или гибрид
2) Если Message то потоковый журнал или очереди?
3) Реализацию от аппСервера или MOM?
4) Название и размер отката менеджерам) :)
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101750
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
То что мало занимаются, согласен.
Это сложнее чем писать синхронный код и операции друг за другом.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101760
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Андрей Панфилов
Прямо срыв покровов можно сказать, меня здесь год назад два пионера пытались всеми силами убедить, что RabbitMQ - это пушка, а то что про него пишут в интернетах - это все недоброжелатели (в т.ч. его же разработчики)

Как идея - нормально. Ну кривоват и что. Попробуй достаточно ерлангшиков найти, чтобы до ума довести все это. А какие еще варианты есть для брокера с подобным функционалом, кроме хттп велика?


там же у RabbitMQ наружу выпирает только история про то что в нем кластер настроить проще всего и на этом преимущества заканчиваются, у IBM MQ, например, поддержка XA есть, в отличии от все остальных - это же как раз то что нужно разработчику, разве нет?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101766
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,

За IBM нужно платить, извините, деньги и не понятно, подойдёт тебе оно в итоге или нет.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101802
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
За IBM нужно платить, извините, деньги и не понятно, подойдёт тебе оно в итоге или нет.


Тут определенно великая дилемма: работает, но за деньги, бесплатно, но не работает. Даже непонятно что выбрать
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101815
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ож жеж говорит в другом ключе. Подойдет-не подойдет. У нас в одном проекте на проде стоял IBM/MQ и на девелоперской
среде Apache-MQ. Использовалось для тестов интеграции. Модель publish/subscibe. Всё работало. Конфигурации отличались
там... только IP-шниками и портами.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101897
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Асинхронность - это хорошо. Но безотносительно синхроннсти или асинхронности
поставщик событий и потребитель встречаются в сети и присутсвуют единовременно.

Без этого у вас не состоится коннект. В противоположность message broker позволяет
событию (бизнес-событию!) существовать отдельно от обоих участников. Тоесть lifecycle
такого бизнес-события более сложен чем просто асинхронизм.


Дык, брокер тоже должен присутствовать постоянно.
Иначе "кина не будет".
А так согласен. С брокером сообщений проблем больше и они интереснее. :-)
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101899
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
mad_nazgul

Щас у нас на проекте активно избавляются от REST и переходят на GraphQL для фронта.

И как впечатления от GraphQL?


Норм.
У нас он используется для "проброски" на фронт gRPC сервисов.
С базой мало имеет общего.
Это просто ещё один способ создания API удобный для фронта.

Т.к. gRPC для фронта не очень подходит.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101900
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
mad_nazgul

У нас gRPC в основном асинхронно работает.

Я не знаком с gRPC и не использовал его. Но фичей преподносится некий гугловый вариант
компактной сериализации данных. Эту сериализацию вообще интересно рассматривать
только в сравнении со смежными технологиями такими как

- Apache AVRO
- Apache Thrift

В моём понимании они делают тоже самое. Это как ... сравнивать 5 видов json форматов.
Вроде они разные. Но внутри всё тоже самое.


Не совсем. Если AVRO и Thrift всё таки отделены от транспортного уровня.
То для gRPC этого сказать нельзя.
Он прибит к HTTP/2.
Это преимущество и недостаток.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101913
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev

Добавляем кэширование на сервере в nginx'e эдак в одну минуту и вся нагрузка с сервера резко уйдет. Т.е. надо чтоб все долбящиеся клиенты кроме 1ого получали ответ из кеша.
А вот если задержка в минуту (ну или сколько там надо) недопустима и сервисы сразу должны узнавать про событие - тогда да, такое на одних фидах не сделать.

А пробовали протокол поллинга реализовать на If-Modified-Since?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101934
mayton
А пробовали протокол поллинга реализовать на If-Modified-Since?
Не, вообще ни разу в жизни не использовал If-Modified-Since:
- Во-первых, чтоб узнать модифицировано ли что-то - нужно полезть в БД. А значит от части кеш перестает выполнять свои обязанности.
- Во-вторых, для сложного объекта нужно обновлять его дату модификации если менялись его вложенные объекты. А это сложно и тоже может быть не очень производительно.

В общем пока не приходилось настолько замарачиваться.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101937
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да. Я и хотел предложить отказаться от nginx но сделать проверку обновления документа
более дешевой.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101938
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev

- Во-вторых, для сложного объекта нужно обновлять его дату модификации если менялись его вложенные объекты. А это сложно и тоже может быть не очень производительно.

Хм... да согласен. Но с другой стороны если для всех вложенных объектов например
трекается контрольная сумма (что-то вроде MD5) тогда проверка будет сводится к проверке
дерева.

Что-то крутится в голове... Дерево Меркла... Хотя оно - больше годится для цепочки блоков.
Но всё равно идея манит. Я-бы подумал в этом направлении.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101939
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
персистентное дерево
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101941
mayton
Stanislav Bashkyrtsev

- Во-вторых, для сложного объекта нужно обновлять его дату модификации если менялись его вложенные объекты. А это сложно и тоже может быть не очень производительно.

Хм... да согласен. Но с другой стороны если для всех вложенных объектов например
трекается контрольная сумма (что-то вроде MD5) тогда проверка будет сводится к проверке
дерева.

Что-то крутится в голове... Дерево Меркла... Хотя оно - больше годится для цепочки блоков.
Но всё равно идея манит. Я-бы подумал в этом направлении.
Проблема же не в том чтоб определить поменялись ли объекты - а в том что для этого надо:
1. Либо вытаскивать все объекты из БД
2. Либо на этапе сохранения данных обновлять корневой объект если меняется любой из из вложенных. А это чревато и плохой производительностью, и багами, и в целом сложной реализацией.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101945
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev

Проблема же не в том чтоб определить поменялись ли объекты - а в том что для этого надо:
1. Либо вытаскивать все объекты из БД
2. Либо на этапе сохранения данных обновлять корневой объект если меняется любой из из вложенных. А это чревато и плохой производительностью, и багами, и в целом сложной реализацией.

Да. Успех этой миссии будет зависеть от подсистемы хранения документов или БД. И от того как организован
процесс внесения изменений. Например если вы - обладатель файлового хранилища AWS/S3 то ваши документы
уже имеют атрибутом MD5 и дату и технически эта файловая система позволяет навешивать на себя отслеживание
изменений. MongoDb тоже умеют навешивать watcher на изменения в документах и писать в свой некий pipeline.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101952
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Какие деревья в ОРМ и нормализованной бд?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101965
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
Тут определенно великая дилемма: работает, но за деньги, бесплатно, но не работает.

Может и работать так себе, но еще и доплатишь.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101966
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ож жеж говорит в другом ключе

Да какая ему разница, кто там что говорит. Слушать еще кого-то.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101982
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
Какие деревья в ОРМ и нормализованной бд?

Смотри шире. Цена вопроса. Можно ли быстро проверить изменения в композитном документе
который состоит из множества частей.

Я думаю что можно. Только надо обогатить алгоритм трекингом каких-то признаков. Или timestamps, или CRC.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101985
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Это совсем мимо темы. Просто в противоположную сторону.
Решений как всегда миллион.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101990
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
В МОМ ты изменил документ и "испустил))) событие" о том что документ изменился.
Нет проблем.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101992
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
В МОМ ты изменил документ и "испустил))) событие" о том что документ изменился.
Нет проблем.

Я щас не про МОМ. Я просто обсуждаю как Станислав мог реализовать свою публикацию
фидов альтернативным способом.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40101999
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Угу. Давай на вадины сокеты перейдем.
Вроде мемберы заключили что у него костыль и велосипед)
Давай второй дадим. Для симметричности.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102010
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пускай вадя поднимет отдельную тему про "свои сокеты". Я думаю это будет справедливо.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102210
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот "клетчатый" что-то вещает по теме. Интересно. Добавил в заметку Tarantool, NATS.

[spoiler]
YouTube Video
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102217
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Пускай вадя поднимет отдельную тему про "свои сокеты". Я думаю это будет справедливо.
ну в этом ракурсе "мои сокеты" ничем не отличаются от обыкновенных сокетов.
т.е. это простой канал связи, а что по нему передается и как используется переданное - это уже дело фантазии и опыта прогера.
единственное отличие - трафик. Но это не главное в данном случае.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102302
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все эти доклады в основном преследуют одну цель - улучшить имидж компании или конкретного человека. Никто не будет делиться с вами реально ценными решениями, ибо незачем плодить конкурентов. На примере тех брокеров - решение из коробки во многих случаях плохо работает, если его не допилить и не обвешать своими костылями. А.вот как это сделать, вам как раз не расскажут в деталях - а это самая ценная информация.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102305
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Osipov, В данном случае целью докладчика явно была реклама Tarantul от mail. Не упоминалось те же Hazelcast и Ignite, которые явно не хуже, а может и получше Tarantul в качестве брокеров будут работать.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102320
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
Roman Osipov, В данном случае целью докладчика явно была реклама Tarantul от mail. Не упоминалось те же Hazelcast и Ignite, которые явно не хуже, а может и получше Tarantul в качестве брокеров будут работать.

Дружище. Ты с Ignite совсем промахнулся. Я работал с Ignite. Это key-value распределенное
хранилище с богатыми возможностями распределенных вычислений.

Оно не позиционируется как брокер очередей.

Насчет Hazelcast - не знаю. Но тоже сомнительно.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102324
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

хороший такой подход к сравнению: "возьмём что-то изкаробки, потом возьмём тарантул, кастомизируем его под задачу и вуаля, будет быстрее и надёжнее" :-)
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102333
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот смотрю щас на сайт тарантула. Его юз-кейсы. Или паттерны, как там пишут. Надо в самый низ проскроллить.

https://www.tarantool.io/en/patterns/
Persistent Queues

Вот. Значит этот инструмент - не только key-value система но и также является брокером. Это заявлено.
Что он где хранит. Какой API предоставляет. Можно ли интегрироваться с ним "извне" - это отдельные вопросы.
Но главное что фича заявлена.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102334
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, https://ignite.apache.org/docs/latest/data-structures/queue-and-set

Изучай на здоровье.

А Hazelcast у нас очень много где и очень долго стабильно как брокер в продакшене работает. Распределенный, отказоустойчивый, горизонтально масштабируемый и очень быстрый.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102338
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Osipov, https://ignite.apache.org/features/messaging.html
В догонку.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102340
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
mayton, https://ignite.apache.org/docs/latest/data-structures/queue-and-set

Изучай на здоровье.

А Hazelcast у нас очень много где и очень долго стабильно как брокер в продакшене работает. Распределенный, отказоустойчивый, горизонтально масштабируемый и очень быстрый.

Хм... ну. Может быть.

Как-жеж они ее персистят? Только на memory надеются? На избыточность?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102341
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, Да, надежность обеспечивается репликацией очередей по нодам. В случае полного отказа есть заперсистенные статусы доставки сообщений, по которым выполняется восстановление состояния брокера. Потерь не будет, максимум получим дубли.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102344
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да как-то дороговато выходит. Я понимаю роль Ignite в кешировании например базы крупного банка.

А ты смотрел лекцию "клетчатого" выше по ссылке? По его мнению идеальная метрика
любой очереди в кластере - это пустая очередь. Я с ним согласен. Это - цель к которой нужно двигаться.
Но Ignite в этом use-case выглядит фурой в которую положили 1 мешочек картошки. Или очередь в данном
сценарии является просто не главной ролью Ignite Cluster а просто чем-то вспомогательным. Тоесть
мы долгжны перевести все вычисления в Ignite Cluster и только после этого эта фича (бантик сбоку)
как говорил мой коллега вдруг станет рациональным.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102347
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, Это только по его субъективному мнению.
Но жизнь такая, что иногда не все консьюмеры всегда онлайн и в состоянии выгрести очередь.
Выходит очень даже дешево - аналогичные по скорости и надежности решения обычно требуют гораздо большего железа, я знаю о чем говорю, видел разные варианты. Фишка Ignite и Hazelcast в том, то на паре нод можно отказоустойчиво обрабатывать сотни тысяч очередей. Тот же RabbitMQ сдохнет примерно на 5000 очередей.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102349
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
Фишка Ignite и Hazelcast в том, то на паре нод можно отказоустойчиво обрабатывать сотни тысяч очередей. Тот же RabbitMQ сдохнет примерно на 5000 очередей.

А мы рассматриваем одинаковые конфигурации железа? Мне просто сомнительно такое сравнение.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102351
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, Да, именно одинаковые конфигурации. Дело в том, что у RabbitMQ на каждую очередь работает отдельный программный тред. И когда их становится много, то переключения контекстов начинают жутко тормозить.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102355
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
mayton, Да, именно одинаковые конфигурации. Дело в том, что у RabbitMQ на каждую очередь работает отдельный программный тред. И когда их становится много, то переключения контекстов начинают жутко тормозить.

Хорошо. Давайте отложим этот разговор. Я просто принимаю как должное от вас тот факт что RabbitMQ
может лопнуть от 5000 очередей. Хотя мне это кажется странным ибо Erlang... ну ладно.

Когда доберусь до кролика я проверю этот забавный факт.

Кроме того любая программная конфигурация при 5000 * 2 открытых сокетов уже ведет себя плохо.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102469
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul
mayton
Привет коллеги.
Является ли это хайпом или технолгическим витком?



Чта?! Хайп MQ?
Мне казалось, что хайп на MQ прошел лет 10 назад.
Щас хайп это GraphQL и gRPC.
Щас у нас на проекте активно избавляются от REST и переходят на GraphQL для фронта.
А микросервисы между собой общаются по gRPC.
Только где-то в уголке притаилась Kafka.

<:o)
тоже самое ВНУТРЯНКА ВСЯ НА gRPC внешка рест
кафка осталась в паре моментов - например что то выгрузить нам в систему,в остальном есть варианты лучше
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102488
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov,

> Дело в том, что у RabbitMQ на каждую очередь работает отдельный программный тред
Можешь ткунуть в доку?
Всегда считал что thread per client channel.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102490
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolchanov, Вот https://github.com/rabbitmq/internals/blob/master/queues_and_message_store.md

Each queue is a gen_server2 Erlang process. The usual pattern of the API and implementation being in one file is not applied; rabbit_amqqueue is the API (a module) and rabbit_amqqueue_process is the implementation (a gen_server2).

И вот https://www.cloudamqp.com/blog/part1-rabbitmq-best-practice.html

Number of queues
Queues are single-threaded in RabbitMQ, and one queue can handle up to about 50 thousand messages. You will achieve better throughput on a multi-core system if you have multiple queues and consumers and if you have as many queues as cores on the underlying node(s).
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102511
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov,
>Each queue is a gen_server2 Erlang process.
Мне всегда казалось, что erlang процесс это не thread.
В све время, когда писал на erlang, запусал на моей рабочей машине несколько десятков тысяч процессов, без каких то проблем с производительностью.

В интернетах тоже пишут:

Erlang processes are not OS processes. They are implemented by the Erlang VM using a lightweight cooperative threading model (preemptive at the Erlang level, but under the control of a cooperatively scheduled runtime). This means that it is much cheaper to switch context, because they only switch at known, controlled points and therefore don't have to save the entire CPU state (normal, SSE and FPU registers, address space mapping, etc.).

>Queues are single-threaded in RabbitMQ, and one queue can handle up to about 50 thousand messages. You will achieve better throughput on a multi-core system if you have multiple queues and consumers and if you have as many queues as cores on the underlying node(s).

Тут написано, что одна очередь обрабатывается одним потоком, но не то что на каждую очередь создается отдельный поток.
Т.е. ИМХО фраза "Дело в том, что у RabbitMQ на каждую очередь работает отдельный программный тред" некорректна
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102580
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolchanov, В общем согласен, что выразился неточно. Но сути особо это не меняет. Да, программные процессы erlang более легковесны чем программные потоки ОС, но когда их становится много, то переключения контекстов начинает сильно сказывается на производительность. Чем больше очередей, тем медленнее работает. И зависимость производительности от количества очередей не линейная. Я ставил опыты на машине с 4 процессорами и 16ГБ RAM. Примерно на 5000 очередей и наступал этот самый момент сильной деградации. Ну и поток потоку рознь, может быть в RabbitMQ в реализации есть узкие места и что-то тормозит из-за этого.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102581
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Osipov, И если сравнивать Rabbitmq с тем же Hazelcast, то грубо говоря у последнего нет такого неприятного свойства, как зависимость производительности от количества очередей. Понятно что для Hazelcast если исчерпается память то будет краш, но это надо предусмотреть.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102585
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
то переключения контекстов начинает сильно сказывается на производительность.

Тоже по идее такого не должно быть. Эрланг проектировался в далекие 80-е когда мультизадачность была
основана не на потоках а на более примитивных сущностях. Прерывания ввода-вывода. Корутины.
В идеале если на вход сетевого интерфейса ничего не поступает то и Erlang-потоки должны
потреблять абсолютный ноль мегафлопов. Вобщем надо смотреть условия эксперимента.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102590
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov,
Ну дак минус в тормозах покрывается другими 30 - тью характеристиками.
Надо же комплексно.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102593
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, Всё очереди не простаивали, в них постоянно писалось/читалось. Поэтому не занимать ресурсов они не могли.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102599
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
Number of queues
Queues are single-threaded in RabbitMQ, and one queue can handle up to about 50 thousand messages. You will achieve better throughput on a multi-core system if you have multiple queues and consumers and if you have as many queues as cores on the underlying node(s).


а что это за история по 50 тыс. сообщений в очереди? Я консьюмера на пару часов выключил и все по бороде пошло?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102600
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp, Ну да. Как писал ранее - если вам не нужна отказоустойчивость, скорость и горизонтальное масштабирование, то Rabbitmq вполне оправданный выбор.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102612
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов
Roman Osipov
Number of queues
Queues are single-threaded in RabbitMQ, and one queue can handle up to about 50 thousand messages. You will achieve better throughput on a multi-core system if you have multiple queues and consumers and if you have as many queues as cores on the underlying node(s).


а что это за история по 50 тыс. сообщений в очереди? Я консьюмера на пару часов выключил и все по бороде пошло?


Здесь не подскажу. Не ставил таких экспериментов. Можно только догадываться - в туториале написано что максимальная производительность будет при пустых очередях, может размер очереди тоже как-то сказывается на производительности.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102613
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот на 7-й странице топика начинает наклевываться некий бенчмарк.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102616
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Эрланг проектировался в далекие 80-е когда мультизадачность была основана не на потоках а на более примитивных сущностях.
Это как это так???Прерывания ввода-вывода. Корутины.Это вы так кооперативную многозадачность обозвали? Да, была популярна, но имеются серьёзные проблемы с диспетчеризацией.В идеале если на вход сетевого интерфейса ничего не поступает то и Erlang-потоки должны потреблять абсолютный ноль мегафлопов."Импоссибиль" - select() BSD Socket API (а в те самые восьмидесятые лучше ещё не было) далеко не бесплатен. И чем больше опрашиваемых сокетов - тем хуже.
А кооперативная многозадачность может подарить массу неприятных сюрпризов при сетевых проблемах (packet loss и вот это вот всё).
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102622
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov

"Импоссибиль" - select() BSD Socket API (а в те самые восьмидесятые лучше ещё не было) далеко не бесплатен. И чем больше опрашиваемых сокетов - тем хуже.

Да но эксперимент Осипова проводится не в восьмидесятых.

А что под капотом select() может влиять на оплату? Я имею в виду при условии 5000 октрытых сокетов.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102646
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
PetroNotC Sharp, Ну да. Как писал ранее - если вам не нужна отказоустойчивость, скорость и горизонтальное масштабирование, то Rabbitmq вполне оправданный выбор.
можно ничего не знать про сабж, но по вашему посту видно что вы предвзяты.
Написали только отрицательное.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102658
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А что под капотом select() может влиять на оплату?
O(n) проверок состояния каждого из n сокетов.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102659
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
mayton
А что под капотом select() может влиять на оплату?
O(n) проверок состояния каждого из n сокетов.

Этож печаль печальная. На вход сетевой карты заходит Ethernet frame. Мы могли-бы уже его сразу
взять в работу. Но вместо этого мы проставляем какие-то статусы. И инициируем работу объемом в o(n),
хотя по смыслу нам-бы хватило o(1).
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102670
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Почему соврменные JMS/MQ системы незаменимы?


MQ скрывают сетевой слой.
Вот ты отправил запрос.
А он дошёл?
А ответ?
А если ошибка в сетевом слое?
А если ошибка в сервере- что делать? Отправлять заново?
А если нам только сказать - то почему мы должны ждать когда сервер очухается и тыкаться в труп?
А если сервер после падения поменяет свой IP-адрес - как мы сможем корретно повторить отправку недоставленного сообщения?
Там ещё есть сообщения - типа прокси разных и т.п.

Вот на все эти вопросы MQ ответила за нас (хорошо или нет- другой вопрос).

PS: О чём вы тут 7 страниц пишете- я не понимаю.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102680
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin

PS: О чём вы тут 7 страниц пишете- я не понимаю.

Шатаешь основы?

Ну ты мог сразу сказать. Поскольку задача двух генералов не имеет решения то и все ваши очереди это фигня
полная и они работать не могут. И TCP тоже работать не может.

А ааботают не благодаря - а вопреки.

Не?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102681
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tomin
mayton

Почему соврменные JMS/MQ системы незаменимы?


MQ скрывают сетевой слой.
Вот ты отправил запрос.
А он дошёл?
А ответ?
А если ошибка в сетевом слое?
А если ошибка в сервере- что делать? Отправлять заново?
А если нам только сказать - то почему мы должны ждать когда сервер очухается и тыкаться в труп?
А если сервер после падения поменяет свой IP-адрес - как мы сможем корретно повторить отправку недоставленного сообщения?
Там ещё есть сообщения - типа прокси разных и т.п.

Вот на все эти вопросы MQ ответила за нас (хорошо или нет- другой вопрос).

PS: О чём вы тут 7 страниц пишете- я не понимаю.
]

Вы живете в каком-то идеальном мире. Ну никак MQ не отвечает на эти вопросы. Т.к. брокер тоже может упасть, поменять адрес и т.д.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102686
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
Т.к. брокер тоже может упасть,
какой брокер?
Топик про МОМ. Это промежуточный слой между ПРИЛОЖЕНИЯМИ.
Если приложение проспало завтрак, то его подадут ему позже.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102687
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Osipov, Я вам такую вещь скажу - там где можно обходиться без МОМ, надо обходиться без МОМ, не надо вводить лишнюю точку отказа и мониторинга.

А приходится вводить в следующих случаях:
- системы не могут интегрироваться с собой напрямую - либо протоколы не позволяют, либо формат не подогнать;
- из-за ограничений производительности систем. Например тысячи клиентов одновременно шлют сообщения, которые надо записать в БД. Если каждое в отдельной транзакции писать, то БД умрет - поэтому надо батчами работать, буферизировать в очередях;
- если надо делать какую-то массовую рассылку. Реализовывать логику рассылки на источнике не очень идея, т.к. при добавлении потребителей на других протоколах надо будет источник дорабатывать.

Можете дополнять список.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102689
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Roman Osipov
Т.к. брокер тоже может упасть,
какой брокер?
Топик про МОМ. Это промежуточный слой между ПРИЛОЖЕНИЯМИ.
Если приложение проспало завтрак, то его подадут ему позже.


Ну не нравится термин брокер, то перефразирую - MOM может отказать.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102692
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Друзья. Мы еще даже не добрались до кластеров и кворумов. А вы уже подрались.

Подождите. Вот там где точно драка будет.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102698
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
там где можно обходиться без МОМ, надо обходиться без МОМ
конечно. Только критерии отказа от него плиз.
Можно и от автомобилей отказаться.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102699
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
Можете дополнять список.
можем.
Без МОМ ты всегда должен быть он лайн.
Тебе это и сказали выше.
А ты в бутылку полез.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102702
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Roman Osipov
Можете дополнять список.
можем.
Без МОМ ты всегда должен быть он лайн.
Тебе это и сказали выше.
А ты в бутылку полез.


Не должен. И без МОМ системы приемники могут быть оффлайн. Надо понимать, что наличие МОМ не избавляет от необходимости реализовывать очереди отправки сообщений на источнике с возможностью переотправки при отказах приемника (отказавшим приемником может быть как МОМ, так и целевая система).
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102704
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov,
Ну дак ты докажи.
Я пишу приложение Заказать пиццу на предприятии с 1500 человек. Есть шина ака МОМ.
Очередь вне моего приложения. И маршрутизация.
5 строчек и готово.
Разве не избавило меня от необходимости?......
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102705
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov,
Отказ МОМ это как лечение головной боли гильотиной.
Это оффтоп.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102709
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp, Легко:

- МОМ(очередь) падает/отказывает;
- при отправке в МОМ сообщения получаешь какой-нибудь Connection Timeout;
- при отсутствии на источнике очереди и переотправки переходишь к отправке следующего сообщения.

Твое сообщение потеряно, даже при наличии в архитектуре MOM.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102712
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
Вы живете в каком-то идеальном мире. Ну никак MQ не отвечает на эти вопросы. Т.к. брокер тоже может упасть, поменять адрес и т.д.


Да. MQ должен быть ОЧЕНЬ устойчивым.
В т.ч. мы делегируем вопросы надёжности брокеру.

В этом есть логика - вместо 10 своих микросервисов, мы зависим только от одной кафки. И это повышает надёжность, если только ваша команда не круче авторов этой самой кафки :)
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102714
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
PetroNotC Sharp, Легко:

- МОМ(очередь) падает/отказывает;
- при отправке в МОМ сообщения получаешь какой-нибудь Connection Timeout;
- при отсутствии на источнике очереди и переотправки переходишь к отправке следующего сообщения.

Твое сообщение потеряно, даже при наличии в архитектуре MOM.
много слов об одном.
Если МОМ требуется по архитектуре, то он либо рукописный либо ИЗ КАРОПКИ.
Ответ очевиден.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102716
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tomin, Должен и будет ли - это две абсолютно разные вещи.
В идеальном мире может быть. Но у нас все может случиться и гарантий доступности МОМ/брокера на 100% никто не даст.
А если он откажет, то будут потеряны сообщения. Т.е. либо мы принимаем факт возможности потери сообщений, либо реализуем таки очередь на источнике с переотправкой.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102718
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
можно ничего не знать про сабж, но по вашему посту видно что вы предвзяты.
Написали только отрицательное.


Я когда в прошлый раз спрашивал про спеки OpenAPI, что со стороны жавы непонятно как разные статусы реализовывать, ибо получаются разные модели, мне начали втирать, что для общения p2p нужно не REST использовать а JMS (конкретно RabbitMQ), и типа пофиг что там накладные расходы выше чем в HTTP, и что оно от таймаутов никак не избавляет и никак не масштабируется. Тут нашелся человек который на грабли налетел, а оказывается что он все врет
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102720
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
либо реализуем
приколист или провокатор.
Предлагаю реализовать СУБД. Тоже может отказать.
И самолеты падают
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102812
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
Т.е. либо мы принимаем факт возможности потери сообщений, либо реализуем таки очередь на источнике с переотправкой.


100% гарантий никто не даст.

Тут ещё вот что. Если упала Кафка, то любой девопс сможет найти, как её починить в любой момент дня и ночи.
А вот если проблема будет в каком-то из микросервисов - то скорее всего бы пришлось будить автора и он судорожно бы фиксил это. Если ещё не уволился
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102813
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Alexey Tomin#22380833]
Roman Osipov

Если упала Кафка, то любой девопс сможет найти, как её починить в любой момент дня и ночи.
Если ещё не уволился


Спасибо, посмеялся! Распечатаю и повешу на стенам нашим девопсам:)
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102817
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TCP тоже построен поверх технологии которая может терять пакеты.

Это - почти философская дилемма. Что-бы мы не строили - месседжи теряются.
Мне кажется что наиболее вероятная точка потерь месседжей - это сам consumer.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
while(true) {
            ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(pollTimeMs));
            for(ConsumerRecord<String, String> record : records) {
                logger.info("Received message topic = {}, partition = {}, offset = {}",
                        record.topic(),
                        record.partition(),
                        record.offset());

                // ... processing records
            }
        }



В не-транзакционном режиме, после которого мы прочитали пачку может случится
(хопа!) что-то нежданное .. например OOM exception и мы падаем.

С точки зрения например Kafka брокера мы уже пачку прочитали. И информацию
о том что мы падали и что-то теряли знает только consumer. Или его логи. Или его
некое персистентное состояние (если таковое вообще проектировалось). Если он - просто
некая функция типа CloudFunc или Lambda то ничего он не знает и не помнит.
Он может даже поднимется не в том докере или не втом хосте или не втом дата-центре.

Это КМК тот кейс когда КОНКРЕТНО разработчик несет отвественность за целосность месседжей.

Другие кейсы с падением брокеров или ребалансировкой мы еще можем например свалить
на технолгию или девопсов или просто сырость системного ПО.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102818
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
На вход сетевой карты заходит Ethernet frame. Мы могли-бы уже его сразу взять в работу.
"Сысти-то он сысти, тильки ж хто ж ему даст?!"
IP-стек не может взять пакет в работу. Всё, что он может - поместить данные из пакета в структуры какого-то из сотен-тысяч сокетов.
"Вопрос на миллион!": кого "будить" после заполнения этих самых структур?

P.S.
Вы правда думаете, что только из-за своей тупости разработчики не смогли сделать "это" сразу?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102822
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton


Что-бы мы не строили - месседжи теряются.
[/src]
.


Доставка без потерь вообще не проблема. По тому же http отправил, а клиент возвращает ответ только тогда, когда точно принял и обработал сообщение - источник знает доставлено ли сообщение и может принять решение на передоставку или переход к следующему сообщению. В случае с Kafka коммитим оффсеты только когда, когда сообщения гарантированно обработались.


Фундаментальные трудные проблемы - это устранение дублей и упорядоченная доставка в условиях конкуррентной отказоустойчивости.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102832
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov

Доставка без потерь вообще не проблема. По тому же http отправил, а клиент возвращает ответ только тогда, когда точно принял и обработал сообщение - источник знает доставлено ли сообщение и может принять решение на передоставку или переход к следующему сообщению.

Обсуждать http здесь - это маветон. Помнишь анекдот про Вовочку который всю религию к *** свёл?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102840
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
mayton
На вход сетевой карты заходит Ethernet frame. Мы могли-бы уже его сразу взять в работу.
"Сысти-то он сысти, тильки ж хто ж ему даст?!"
IP-стек не может взять пакет в работу. Всё, что он может - поместить данные из пакета в структуры какого-то из сотен-тысяч сокетов.
"Вопрос на миллион!": кого "будить" после заполнения этих самых структур?

P.S.
Вы правда думаете, что только из-за своей тупости разработчики не смогли сделать "это" сразу?


Я не говорил что они тупые. Можно в качестве примера взять ОС Cisco. Я думаю что там есть программно
аппаратные решения которые ставили своей задачей синхронизм в обработке Ethernet frames.

Нет я не говорю что это надо срочно переносить в general purpose ОС. Но уж коли долго говорим
о накладных расходах на мессенжинг с 5000 каналами или подписками то мы могли-бы обсудить
и альтернативы.

Все составляющие протокола TCP нигде в своей сетевой части не требуют ни процессов ни потоков,
ни зеленых потоков ни корутин.

В моём понимании это просто команда к переводу некого конечного автомата в новое состояние. Сможем
реализовать это в event-drivern - поддержим и 64к сокетов.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102844
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov

Фундаментальные трудные проблемы - это устранение дублей и упорядоченная доставка в условиях конкуррентной отказоустойчивости.

В моём понимании идеальные продюсер и консюмер - это например модель Primary-Standby(Physical) для Oracle.
Правда эта модель требует физического хранилища и на продюсерах и на консюмерах. И это - точка-точка.

Но если договорится о retention периоде например 24 часа - то получается надёжный спосособ передачи информации.
И здесь будет гарантирован exactly once. И ни одно сообщение не потеряется.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102847
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quote Roman Osipov#22380838]
Alexey Tomin
Roman Osipov

Если упала Кафка, то любой девопс сможет найти, как её починить в любой момент дня и ночи.
Если ещё не уволился


Спасибо, посмеялся! Распечатаю и повешу на стенам нашим девопсам:)

Мы уже смеемся.
Ты Message ориентированное ПО предложил заменить на Pooling)))
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102849
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot PetroNotC Sharp#22380897]
Roman Osipov
пропущено...

Мы уже смеемся.
Ты Message ориентированное ПО предложил заменить на Pooling)))


Понятно. Вам стоит освежить информацию, в чем разница между pool и push моделями.
Pool мной не упоминался.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102850
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Можно в качестве примера взять ОС Cisco. Я думаю что там есть программно аппаратные решения которые ставили своей задачей синхронизм в обработке Ethernet frames.
"А что тут думать? Тут знать надо!". Я вот не знаю.
Но зато вполне известны чуть меньше чем стопиццот вариантов быстрого сетевого ввода-вывода в операционных системах общего назначения.
Вы не поверите, но они все разные!Все составляющие протокола TCP нигде в своей сетевой части не требуют ни процессов ни потоков, ни зеленых потоков ни корутин.
В моём понимании это просто команда к переводу некого конечного автомата в новое состояние. Сможем реализовать это в event-drivern - поддержим и 64к сокетов.У вас "конечный автомат" IP-стека и "конечный автомат" планировщика потоков. Проигнорируем, для упрощения, "конечный автомат" управления памятью.
Каким образом один конечный автомат может перевести другой конечный автомат в совершенно определённое состояние, если они - два чёрных ящика?
А ведь это не роутер, который только сетью и занимается, а общецелевая система и для неё всегда найдётся работа.
И самая разная. И приоритетная - в том числе.
P.S.Читаю вас и вспоминаю себя, наивного, примерно четверть века назад:
(восторженный я): ... и вот это и вот это!
(слегка усталый инженер вендора): IBM - большая контора. У неё есть много решений и далеко не все они удачные.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102851
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov,
Ну да освежи. Расскажи.
Ты же отстаиваешь точку зрения.
Я свою высказал - если требования к ИС подходят для МОМ то надо использовать))))
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102854
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.P.S.А ещё плохо путать poLL и poOL.
Но полезно пользоваться предпросмотром для перечитывания сообщения перед отправкой.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102856
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Ну может там новая технология. Мы не знаем что он предложил вместо MQ
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102859
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov, Да, бывает, пишу невнимательно параллельно с кодингом. Кодирование конечно в приоритете.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102860
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov

У вас "конечный автомат" IP-стека и "конечный автомат" планировщика потоков. Проигнорируем, для упрощения, "конечный автомат" управления памятью.
Каким образом один конечный автомат может перевести другой конечный автомат в совершенно определённое состояние, если они - два чёрных ящика?
А ведь это не роутер, который только сетью и занимается, а общецелевая система и для неё всегда найдётся работа.
И самая разная. И приоритетная - в том числе.

Я вобщем беру за образец аппаратуру 20-го века, в которой не было мультипоточки и сеть (модемная и коаксиальная
и прочая проводная) как-то работала. И менеджер памяти как-то успевал.

P.S. Спасибо что "омолодил" меня.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102937
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я вобщем беру за образец аппаратуру 20-го века, в которой не было мультипоточки
Кто вам это сказал? "Плюньте ему в лицо, назовите лжецом и прогоните прочь из дома".
Даже в древнем DOS-е был print, умевший фоновую печать на принтер. Появился, как максимум в DOS 3.0.
При наличии прерывания таймера делается "вытесняющая многозадачность", при отсутствии - кооперативная (что-нибудь вроде сопрограмм Modula-2).
От аппаратуры это всё зависит крайне слабо.и сеть (модемная и коаксиальная и прочая проводная) как-то работала.Все устройства, которые вы перечислили, умели генерировать прерывания. Была даже проблема разделения прерываний.
И были решения в виде многопортовых карт для RS-232. Широко известная в узких кругах Moxa, если правильно помню название.
Иногда можно было и без прерываний. Коммуникационная программа для модема могла считать, что система принадлежит ей монопольно.И менеджер памяти как-то успевал."Вы будете смеяться", но LIM EMS 4.0 предусматривала целую пачку вызовов для поддержки многозадачности (переключение карт памяти и вызов "стороннего" кода). Как следствие, можно было делать многозадачные системы на PC-XT с Intel 8086, который умел "только реальное".
Появление защищённого режима в Intel 80286 просто убрало привязку к внешней аппаратуре.
Конкретно у 80286 была неудачная модель защищённого режима, но и это исправили в Intel 80386 (режим V86).
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102943
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quote Roman Osipov#22380838]
Alexey Tomin
Roman Osipov

Если упала Кафка, то любой девопс сможет найти, как её починить в любой момент дня и ночи.
Если ещё не уволился


Спасибо, посмеялся! Распечатаю и повешу на стенам нашим девопсам:)


На прошлой работе перешли на кафку именно с такими аргументами от девопсов.
Типа "ваше ПО фиг знает как чинить, а кафку мы прям не приходя в сознание поднимем".
В целом они не обманули.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102953
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Все устройства, которые вы перечислили, умели генерировать прерывания. Была даже проблема разделения прерываний.
И были решения в виде многопортовых карт для RS-232. Широко известная в узких кругах Moxa, если правильно помню название.
Иногда можно было и без прерываний. Коммуникационная программа для модема могла считать, что система принадлежит ей монопольно.

Ну я-ж к этому и клоню. Функция-обработчик прерывания играет роль некого хендлера сетевых событий (на низком уровне).
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102979
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Функция-обработчик прерывания играет роль некого хендлера сетевых событий (на низком уровне).
Я вас всё равно не понимаю ...
На многогигабитных картах, в некоторых ситуациях, режим опроса "выгоднее" режима прерываний.
Т.е. проблема не в механизме получения информации "приняты данные", а в сложной и нетривиальной задаче планирования потоков исполнения.
Erlang со товарищи исходят из того, что "мы сами, на коленке, сделаем лучше". Возможно. Возможно даже, что лет двадцать-тридцать назад это было правдой. Сейчас - вообще не факт.
Поэтому ваши рассуждения о приехавших пакетах, лично меня - вообще не разу не убеждают. Наоборот - вгоняют в недоумение и в краску: "Ну приехал. Дальше-то - что? Как пробиться в соседнюю камеру?"
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40102995
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Alexey Tomin#22381037]
Roman Osipov
пропущено...


На прошлой работе перешли на кафку именно с такими аргументами от девопсов.
Типа "ваше ПО фиг знает как чинить, а кафку мы прям не приходя в сознание поднимем".
В целом они не обманули.


2 Roman если вашим девопасам очень смешно, в следующий раз дай им ссылку на репозиторий и переведи таску на на них упало приложение от самописной очереди.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103001
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lleming, Попробую последний раз объяснить. Если непонятно, будет, то уже ничего не поможет

Вот ссылка на доки https://www.rabbitmq.com/reliability.html

Читаем


Data Safety on the Publisher Side
When using confirms, producers recovering from a channel or connection failure should retransmit any messages for which an acknowledgement has not been received from the broker. There is a possibility of message duplication here, because the broker might have sent a confirmation that never reached the producer (due to network failures, etc). Therefore consumer applications will need to perform deduplication or handle incoming messages in an idempotent manner.

Ключевая фраза - producers recovering from a channel or connection failure should retransmit any messages

Т.е. на стороне источника/продюсера просто обязана быть очередь переотправки сообщений, пусть в крайнем случае состоящая из одного последнего сообщения.

И хоть с брокером, хоть без брокера вам надо будет в любом случае реализовать функционал переотправки на источнике, если в требованиях есть обязательность доставки сообщений.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103009
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov,
Ты нас не пугай.
Работа ровно так как мы работаем с бд.
try
Отправка
...
Если у меня не было райзе, значит на моей стороне все нормально и зона ответственности на субд.
При MQ или МОМ архитектуре ответственность тоже не на мне.
Сообщение ушло в МОМ.
...
Получается ты любитель велосипеда и очередей за счет заказчика.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103010
Roman Osipov
Попробую последний раз объяснить. Если непонятно, будет, то уже ничего не поможет
Чаще всего тут на этом и заканчивается :)
Roman Osipov
И хоть с брокером, хоть без брокера вам надо будет в любом случае реализовать функционал переотправки на источнике, если в требованиях есть обязательность доставки сообщений.
Оч хорошее замечение. Я думал что когда делаю REST Polling, то получается больше работы, но работает надежней. А оказывается что работы и не больше вовсе. Может даже меньше.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103012
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev,
По вашим словам сложно написать
Код: java
1.
amq.sendMessage(myDestination, myMessage) 
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103016
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov,
Мы можем по простому и на пальцах)
Чем отличается 3х звенка на 3х хостах
Клиент1 - - АппСервер - - СУБД
ОТ
Клиент1 - - МОМ - - Client2
?
Зачем надежностью ддосить даную тему?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103020
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
mayton
Функция-обработчик прерывания играет роль некого хендлера сетевых событий (на низком уровне).
Я вас всё равно не понимаю ...
На многогигабитных картах, в некоторых ситуациях, режим опроса "выгоднее" режима прерываний.
Т.е. проблема не в механизме получения информации "приняты данные", а в сложной и нетривиальной задаче планирования потоков исполнения.
Erlang со товарищи исходят из того, что "мы сами, на коленке, сделаем лучше". Возможно. Возможно даже, что лет двадцать-тридцать назад это было правдой. Сейчас - вообще не факт.
Поэтому ваши рассуждения о приехавших пакетах, лично меня - вообще не разу не убеждают. Наоборот - вгоняют в недоумение и в краску: "Ну приехал. Дальше-то - что? Как пробиться в соседнюю камеру?"

Ладно. Забудь. Это - мои мечты об event-driven на всех уровнях системы.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103042
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Это - мои мечты об event-driven на всех уровнях системы.
Ваши "мечты" уже явь.
Самые быстрые "прерывания" это M(essage)S(ending)I(nterrupt). Выделяется крохотная область и процессор реагирует на запись в неё специальным образом (тоже оптимизировано для работы в защищённом режиме).
Быстрее, вроде, уже некуда. И уж событийно по самые помидоры.
Аппаратно всё необходимое появилось, если правильно помню, в i486.

Вот только проблему планирования потоков это никак не отменяет.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103385
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
По вашим словам сложно написать
Код: java
1.
amq.sendMessage(myDestination, myMessage) 



Чет не пойму, стеб ли это или банальное невежество...

Трудности написать г.код нет никакой, однако есть определенный набор "проблем", которые нужно решить прежде чем этот г.код писать, проблемы примерно такие:
- определиться что же именно отправлять:
-- можно же слать просто ключи, чтобы потом те кто нужно за данными ходил
-- можно ввести понятие "события" (тут уже непонятно почему потребитель должен знать о событиях в моей системе и я буду должен поддерживать обратную совместимость)
-- можно отправлять raw-данные (или как-то преобразованные): тут опять получается что или я свои структуры наружу выставляю или нужно приседать с обратной совместимостью
-- можно слать вектора изменений: почти те же грабли что с raw-данными
-- можно слать команды: тут я уже от получателя начинаю зависеть
- определиться когда отправлять: здесь основная проблема с тем, что хотелось бы отправлять:
-- более-менее агрегированные изменения (например чтобы на insert+delete ничего в итоге не уходило)
-- зафиксированные изменения

Начиная решать перечисленные выше проблемы сразу сталкиваешься с другими:
- так или иначе какие-то сообщения могут быть или не отправлены вообще или отправлены несколько раз - тут ничего не поделать, жизнь такая
- появляются проблемы с зависимостью (явной или не явной) одного сообщения от другого, поэтому возникают грабли с очередностью отправки или получения

Вот если все эти трудности "героически решить", то выбор транспорта для отправки - это ну совсем несущественная мелочь, о чем, в принципе, тебе здесь два мембера и пытаются донести свою мысль: сам по себе MQ проблемы, перечисленные выше, никак не решает - он просто убирает зависимость успешности доставки сообщения от работоспособности получателя в конкретный момент времени, перенося эти риски на себя. В целом лично у меня складывается впечатление, что более-менее "безпроблемно" (т.е. в лоб) можно делать отправку из CQRS, но и то там так или иначе появляется паразитная связность между отправителем и получателем(ями), да и все равно нужно уметь бороться с недоступностью транспорта. Если же у вас не CQRS, а CRUD, то там все печально с точки зрения быстрого старта, вот если рассматривать ситуацию на примерах, вот что нашлось в гугле про тот же самый хибер:
- https://medium.com/swlh/harnessing-hibernate-events-for-data-change-detection-52981f4badf0 - смуглый парень считает хорошей идеей ловить insert/update и сразу слать это дело в кафку не дожидаясь фиксации транзакции (тут вроде был персонаж, поклонник кафки, который делал то же самое), ну а если код посмотреть на гитхабе, то у него почему-то даже синглетоны мутабельные
- https://vladmihalcea.com/hibernate-event-listeners/ - бледнолицый пишет лог в ту же БД, в которой происходят изменения, тормознуто, но зато надежно, правда потом непонятно каким образом этот лог разбирать
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103445
ra-001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей, что сказать тo желаешь, покороче ?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103467
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,
Я выше отвечал на вариант
Polling #самописканаколенка
То есть что лучше
Код: java
1.
amq.sendMessage(myDestination, myMessage)


Или
Код: java
1.
самописканаколенка.polling()


Вы когда идете в отпуск, вы же решаете, поедете на машине или на самолете.
А трудности есть конечно. Как везде.
Кому счас легко (с)
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103481
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Андрей Панфилов,
Я выше отвечал на вариант
Polling #самописканаколенка
То есть что лучше
Код: java
1.
amq.sendMessage(myDestination, myMessage)


Или
Код: java
1.
самописканаколенка.polling()


Вы когда идете в отпуск, вы же решаете, поедете на машине или на самолете.
А трудности есть конечно. Как везде.
Кому счас легко (с)


Если разговаривать про отпуск и забыть про факт, что сейчас в Австралии локдауны то тут то там, то могу сказать что машина машине рознь, особенно учитывая, что я люблю по всяким ибеням ездить, т.е. для путешествий на вменяемые расстояния я предпочту старенькую тойоту любой другой марке.

Что касается "топика про очереди в целом": учитывая то, как сейчас работает опенсорс, можно с уверенностью сказать, что из коробки вообще ничерта не работает, т.е. если связался с опенсорсом, то будь готов постоянно читать исходники и унижаться при попытке что-то отправить в апстрим, на фоне всего этого IBM MQ выглядит просто космолетом - всего-то нужно XA настроить и забыть навсегда, а опенсорсный пепелац нужно чинить всегда
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103491
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,
Ты наверное имел ввиду не опенсорс, а платное и бесплатное?
Код: plaintext
License cost	16 х 70 х $50 =$56,000
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103495
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,
Когда приходишь в магазин выбирать комп, то первый вопрос - "какой суммой располагаете?".
Думаю это не случайно.
Товар сразу делится на два сегмента - премиум класса и нет.
Значит тут с опенсорсом точно также.
Это входной параметр а не параметер внутри алгоритма выбора.
Есть две линейки продуктов. И товар есть как внутри опенсорс и так и вне его.
Не на один же товар молится.
Имхо
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103497
Roman Osipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов
PetroNotC Sharp
Андрей Панфилов,
Я выше отвечал на вариант
Polling #самописканаколенка
То есть что лучше
Код: java
1.
amq.sendMessage(myDestination, myMessage)


Или
Код: java
1.
самописканаколенка.polling()


Вы когда идете в отпуск, вы же решаете, поедете на машине или на самолете.
А трудности есть конечно. Как везде.
Кому счас легко (с)


Если разговаривать про отпуск и забыть про факт, что сейчас в Австралии локдауны то тут то там, то могу сказать что машина машине рознь, особенно учитывая, что я люблю по всяким ибеням ездить, т.е. для путешествий на вменяемые расстояния я предпочту старенькую тойоту любой другой марке.

Что касается "топика про очереди в целом": учитывая то, как сейчас работает опенсорс, можно с уверенностью сказать, что из коробки вообще ничерта не работает, т.е. если связался с опенсорсом, то будь готов постоянно читать исходники и унижаться при поп ытке что-то отправить в апстрим, на фоне всего этого IBM MQ выглядит просто космолетом - всего-то нужно XA настроить и забыть навсегда, а опенсорсный пепелац нужно чинить всегда


XA-транзакции во первых гораздо медленнее работают, чем обычные, т.к. коммит двухфазный. Во вторых имеет свойство подвисать, например, в Oracle. Рекомендую, там где только возможно обходиться без XA, благо есть приемлемые способы.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103500
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу ошибаться но по моему от XA транзакций все отказываются. На новых проектах я их не встречал нигде.
И где были раньше - их выпиливают.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103502
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Они вообще противоречат MOM на основе подписок/публикаций.
Имхо.
Пишется код совсем другой чем на основе бизнес или физических транзакциях.
Также как код на основе длинных транзакций по 8 часов отличается от кода для веб транзакции коротких по 0,2 сек
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103503
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы в *телекомах делали тразнакции и по 24 часа и более. Там - вообще другие подходы.
База "выкручивается" настройками в другой режим. Подготавливаются различные mviews. И по большей
части мы эти писали на PL/SQL.

Да и это вообще не про МОМ/MQ. Это скорее ближе к SpringBatch и пакетным заданиями.

+
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103507
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два вида МОМ - непосредственная доставка сообщений и метод публикации/подписки.
Если в первом варианте еще можно присобачить транзакции, то во втором как бы теряется их смысл.
Вот пример решения в МОМ транзакции
авторПервый запрос транзакции кошелька получен службой кошелька.
Он проверяет запрос, сверяется с текущим балансом пользователя. Если это действительно так, то транзакция обрабатывается и в Kafka создается новое задание.
При успешном подтверждении от Kafka того, что задание создано, транзакция помечается как успешная, и клиенту возвращается ответ.
В случае сбоя Kafka транзакция откатывается, а сбой возвращается клиенту.
Потребительский сервис будет читать из темы Kafka и совершать фактическую транзакцию со сторонним платежным провайдером.
При успешной транзакции его статус синхронизируется с исходной службой кошелька, что закрывает цикл.
При неудачной транзакции задание транзакции помещается в очередь отказов в Kafka. Вся входящая транзакция для пользователя, чье задание находится в очереди на сбой, не обрабатывается и напрямую отправляется в очередь сбоев, тем самым поддерживая порядок транзакции.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103516
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

Когда приходишь в магазин выбирать комп, то первый вопрос - "какой суммой располагаете?".
Думаю это не случайно.
Товар сразу делится на два сегмента - премиум класса и нет.
Значит тут с опенсорсом точно также.
Это входной параметр а не параметер внутри алгоритма выбора.
Есть две линейки продуктов. И товар есть как внутри опенсорс и так и вне его.
Не на один же товар молится.
Имхо


в моем компьютерном магазине все просто: есть только две модели телефона (прошлогодняя и новая) в разных редакциях и две модели латопов Никакого деления на классы нет. То же самое с MQ: есть ПО которое просто работает ровно так как ожидается (можно хоть из сеттеров сообщения слать), а есть то, с котором должна постоянно пердолиться пачка пионеров.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103520
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,
Магазин только для белых))
Я понял)
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103698
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Osipov
XA-транзакции во первых гораздо медленнее работают, чем обычные, т.к. коммит двухфазный. Во вторых имеет свойство подвисать, например, в Oracle. Рекомендую, там где только возможно обходиться без XA, благо есть приемлемые способы.


Есть мнение, что слухи про тормознутость XA "слегка" преувеличены: ну пишет оно лог на диск (а куда еще писать-то, если кругом враги?), писать оно хочет надежно, поэтому логи нужно размещать в "хорошем" месте, а не где попало (точно не в докере ), но слухи-то ходят уже лет 20, а за столько времени у нас уже везде SSD появились, кроме этого 1PC-оптимизацию никто не отменял...

Вот нашел занимательное чтиво про XA

В целом вся эта история про "тормознутость" XA, редкую применимость и пр. исходит не из того, что XA действительно плохо, а из-за того, что:
- житуи окончательно умерло, а TM-таки был частью житуи
- чтобы сейчас наворотить примерно то же самое нужно довольно старательно поприседать

однако в далеком 2004 году про очереди писали ровно то же самое что и сейчас:
XAIt's fairly well known in the industry that some RDBMS' XA drivers are full of problems (*cough* Oracle *cough). What's worse, many major JMS implementations switch off disk forcing altogether by default. This makes them look really, really good on benchmarks, and makes you look really, really bad if Little Johnny pulls the plug on your JMS server at an inopportune moment
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103699
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

Вот пример решения в МОМ транзакции
авторПервый запрос транзакции кошелька получен службой кошелька.
Он проверяет запрос, сверяется с текущим балансом пользователя. Если это действительно так, то транзакция обрабатывается и в Kafka создается новое задание.
При успешном подтверждении от Kafka того, что задание создано, транзакция помечается как успешная, и клиенту возвращается ответ.
В случае сбоя Kafka транзакция откатывается, а сбой возвращается клиенту.
Потребительский сервис будет читать из темы Kafka и совершать фактическую транзакцию со сторонним платежным провайдером.
При успешной транзакции его статус синхронизируется с исходной службой кошелька, что закрывает цикл.
При неудачной транзакции задание транзакции помещается в очередь отказов в Kafka. Вся входящая транзакция для пользователя, чье задание находится в очереди на сбой, не обрабатывается и напрямую отправляется в очередь сбоев, тем самым поддерживая порядок транзакции.


положительные сценарии совершенно ни о чем не говорят, попробуй, например, расписать "проверяет запрос, сверяется с текущим балансом пользователя" учитывая что пользователь в данный момент времени выполняет еще какие-то транзакции
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103711
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
"проверяет запрос, сверяется с текущим балансом пользователя"

- отправить запрос в шину или МОМ "ДАЙ БАЛАНС ЛИЧНОГО КАБИНЕТА ПЕТРОВА"
- получив число через 10 минут по подписке сверяет его с КРЕДИТНОЙ НАДЕЖНОСТЬЮ ПЕТРОВА.
(Так как MQ системы не консистентны)
- отправляет положительное или отрицательное решение дальше в шину в виде заявки клиента.
....
Так?
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103712
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,
Именно поэтому существует отрицательный баланс в жизни на дебетовке и симках
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103713
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,
Скажу крамольную мысль для обсуждения, но в MOM нет транзакций.
Как в ерланге нет синхронного кода.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103722
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Именно поэтому существует отрицательный баланс в жизни на дебетовке и симках

ты совершенно зря решил подпустить дешевого понта: у банков своя собственная история и аналог "двухфазного коммита" у них во все поля, у опсосов же существуют физические ограничения на доставку CDR и правильность данных в этих CDR оставляет желать лучшего, к тому же существуют определенные ограничения со стороны законодательства (я например по три месяца счета не оплачиваю, просто потому что мне не нравится их сайт, однако телефон мне никто не отваживается отключить)
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103723
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

- отправить запрос в шину или МОМ "ДАЙ БАЛАНС ЛИЧНОГО КАБИНЕТА ПЕТРОВА"
- получив число через 10 минут по подписке сверяет его с КРЕДИТНОЙ НАДЕЖНОСТЬЮ ПЕТРОВА.
(Так как MQ системы не консистентны)
- отправляет положительное или отрицательное решение дальше в шину в виде заявки клиента.
....
Так?

угу, через минуту клиент уже точно решил, что ну его нахер этих дебилов, которые обработать запрос толком не могут.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103728
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,
А причем тут банки? Конечно, банки без транзакций это моветон.
Я выше приводил МОМ в госуслугах.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103729
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
PetroNotC Sharp

- отправить запрос в шину или МОМ "ДАЙ БАЛАНС ЛИЧНОГО КАБИНЕТА ПЕТРОВА"
- получив число через 10 минут по подписке сверяет его с КРЕДИТНОЙ НАДЕЖНОСТЬЮ ПЕТРОВА.
(Так как MQ системы не консистентны)
- отправляет положительное или отрицательное решение дальше в шину в виде заявки клиента.
....
Так?

угу, через минуту клиент уже точно решил, что ну его нахер этих дебилов, которые обработать запрос толком не могут.
Ты забыл что топик про МОМ.
А первая характеристика МОМ - это НЕУСТОЙЧИВАЯ связь.
...
Рейтинг: 0 / 0
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
    #40103730
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,
Два вида МОМ
22382081
...
Рейтинг: 0 / 0
228 сообщений из 228, показаны все 10 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]