|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Привет коллеги. Почему соврменные JMS/MQ системы незаменимы? Является ли это хайпом или технолгическим витком? Почему мы не можем вместо них брать Dbms? Файловую систему? (я видел такие юзкейсы) Можно-ли вообще их исключить из стека технологий? И если исключить то как? Поделитесь вашим опытом. Особенно меня интересуют кейсы когда вы просто выбросили из задачи JMS/MQ и ничего не потеряли. Я долго думал над формулировкой темы топика но так и не придумал. Сначала хотел сравнивать Kafka-RabbitMQ в раздличных конфигурациях устойчивости к сбоям и к пропускной способности. Но задача сравнения в моем плане начала расти до таких космических масштабов что я понял что более-менее объективный сравнительный тест я написать не в состоянии. Тоесть я конечно могу взять любой синтетический бенчмарк. Но он ничего не будет стоить в реальном сетевом окружении. С нагрузкой. С шквальным (периодическим) характером движения сообщений. Со специфичными продуктовыми кейсами (например каждая веб-сессия создаёт подписки только в момент сеанса). Вобщем в конце концов я плюнул и решил что пускай будет обобщенная тема. И если разговор повернется в плоскость сравнения брокеров например HornetQ и ApacheMQ то мы конечно что-то придумаем как сравнить. Если вы в ПРОДЕ конфигурировали особые настройки сети и протоколов для брокера - то поделитесь этими настройками. Если вы знаете какой-то JMS-ный антипаттерн - то тоже прошу поделится. Спасибо всем. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 21:20 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Я для обмена событиями между приложениями теперь использую REST и фиды вместо MQ. Ну, когда есть возможность. Мне очень понравилось. Работает так: 1. Система А хочет получать сообщения от Б 2. Б публикует фид событий которые у него происходят. Ну и ссылки на сущности которые поменялись этим событием. 3. А поллит фид раз в сколько-то секунд и если видит там неизвестные ранее события, то может пойти по ссылкам и скачать все нужные данные. 4. Для этого А должен хранить инфу о последнем считанном событии. Это может быть timestamp если не боимся двух одновременных событий, или ID события. Это очень удобно: а. Если что-то пошло не так, то фид и детали можно смотреть прям из браузера б. Если что-то пошло не так и система А не смогла сохранить/распарсить данные из Б, то эта же система А их потом и перезапросит после того как мы починили все. Т.е. не надо трогать команду Б чтоб те запустили заново событие. в. Не надо изучать/устанавливать доп компоненты (MQ brokers) Но конечно если нужно чтоб А мгновенно узнала о событии в Б, то прийдется все-таки чтоб Б как-то нотифицировала нуждающихся. Либо по тому же HTTP, либо по MQ. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 02:36 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev А поллит фид раз в сколько-то секунд Костыли. Можно было и вебсокет сколхозить раз уж на то пошло. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 04:43 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Почему соврменные JMS/MQ системы незаменимы? С MQ удобно горизонтально масштабироваться. Выросла нагрузка? Добавил n инстансов (и не обязательно на один сервак). Надо под это затачивать систему, конечно. Можно делать и serverless, вкорячить какой-нибудь zeromq или сделать велик. mayton Является ли это хайпом или технолгическим витком? Это очередной технологический виток хайпа. mayton Почему мы не можем вместо них брать Dbms? Потому что у этих систем нет ничего общего. mayton Файловую систему? (я видел такие юзкейсы) Нужно сделать броадкаст на n сервесов, которые находятся на m серверах. Как это сделать через фс? Монтировать её на этих m серверах? Уровень костылизма зашкалил. mayton Можно-ли вообще их исключить из стека технологий? Не хочешь/нечего разделять на куски - не разделяешь, пилишь дальше свой монолит. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 04:57 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Работает так: 1. Система А хочет получать сообщения от Б 2. Б публикует фид событий которые у него происходят. Ну и ссылки на сущности которые поменялись этим событием. 3. А поллит фид раз в сколько-то секунд и если видит там неизвестные ранее события, то может пойти по ссылкам и скачать все нужные данные. 4. Для этого А должен хранить инфу о последнем считанном событии. Это может быть timestamp если не боимся двух одновременных событий, или ID события. Это все делается штатными средствами rabbit'а, без изобретения великов. Stanislav Bashkyrtsev Это очень удобно: а. Если что-то пошло не так, то фид и детали можно смотреть прям из браузера Делаешь гейт, который тащит данные из рабита в браузер - profit. Stanislav Bashkyrtsev Если что-то пошло не так и система А не смогла сохранить/распарсить данные из Б, то эта же система А их потом и перезапросит после того как мы починили все. Если система что-то там не смогла, не делаешь подтверждение (ack) запроса, останавливаешь, чинишь, запускаешь заново. Stanislav Bashkyrtsev в. Не надо изучать/устанавливать доп компоненты (MQ brokers) Эпохальная проблема. Зто надо писать свой велик, как-то хранить и выбирать события на Б (т.е. нужна как минимум какая-то субд), которую все будут постоянно запрашивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 05:04 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Привет коллеги. Является ли это хайпом или технолгическим витком? Чта?! Хайп MQ? Мне казалось, что хайп на MQ прошел лет 10 назад. Щас хайп это GraphQL и gRPC. Щас у нас на проекте активно избавляются от REST и переходят на GraphQL для фронта. А микросервисы между собой общаются по gRPC. Только где-то в уголке притаилась Kafka. <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 06:37 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mad_nazgul, Ты прокололся. Ты сравнил асинхронные технологии и синхронные. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 07:06 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, Велосипед. REST антипод Message Oriented Middleware ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 07:12 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Почему соврменные JMS/MQ системы незаменимы? Является ли это хайпом или технолгическим витком? Потому что ТЕОРЕМА https://en.m.wikipedia.org/wiki/CAP_theorem ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 07:26 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mad_nazgul Щас у нас на проекте активно избавляются от REST и переходят на GraphQL для фронта. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 07:28 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mad_nazgul, Ты прокололся. Ты сравнил асинхронные технологии и синхронные. Чта?! У нас gRPC в основном асинхронно работает. И graphQL тоже может асинхронно работать. Мы пока пишем синхронные запросы. Т.к. только тренируемся. Но в перспективе будем асинхронные делать. <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 08:03 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mad_nazgul Щас у нас на проекте активно избавляются от REST и переходят на GraphQL для фронта. Нет. Всё для удобства фронта. Чтобы они не делали 100500 запросов рест. Всё свести к нескольким запросам GraphQL. Т.к. он позволяет одним запросом обратиться к нескольким ендпоинтам. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 08:06 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mad_nazgul gRPC в основном асинхронно работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 08:38 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Я для обмена событиями между приложениями теперь использую REST и фиды вместо MQ. Ну, когда есть возможность. Мне очень понравилось. Тут есть нюанс. Как мне кажется это удобно для взаимодействия двух систем. А если их более чем две. Тогда у нас может получится квадратичный рост ресурсов. И кроме того мне непонятно как с фидами поддержать FIFO? Будет ли отслеживаться хронология событий? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 11:02 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
crutchmasterКостыли.Нет, это не костыли, это вполне известное решение. Не я придумал. Есть спец форматы для фидов: RSS, Atom. Я с такими системами еще в 2009ом работал. crutchmasterМожно было и вебсокет сколхозить раз уж на то пошло.Ну смотря что ты тут имеешь в виду. Если то что система Б в вебсокет просто пишет события, то нет - нельзя было. Если система А может запрашивать по веб сокету фид и события, то да - можно было бы и с ним. crutchmasterЕсли система что-то там не смогла, не делаешь подтверждение (ack) запроса, останавливаешь, чинишь, запускаешь заново.Нет, Ack здесь не поможет. Потому как ты мог послать подтверждение (твоя система посчитала что все хорошо), сохранил данные, но неверно. С поллом все просто: починил, перезапросил данные, они перезаписались в БД. Главное чтоб это идемпотентная операция была. crutchmasterТут есть нюанс. Как мне кажется это удобно для взаимодействия двух систем. А если их более чем две. Тогда у нас может получится квадратичный рост ресурсов.Чем больше систем, тем меньше ресурсов в среднем мы тратим. Эти проблемы все решаются простым кешированием. В открытом вебе еще добавляют тротлинг. В вебе в принципе мы не работаем с MQ (во всяком случае я никогда не видел таких решений), я не уверен что MQ в принципе масштабируется до таких размеров и нагрузок. crutchmasterИ кроме того мне непонятно как с фидами поддержать FIFO? Будет ли отслеживаться хронология событий?Ну тут два варианта: 1. Наши события - эт не события, а просто сущности в БД отсортированные по дате модификации. Но тогда сущность может "прыгать" по фиду. Сначала она была в мартовском фиде, теперь в августовском. Это не требует доп таблиц. 2. Ну или заводим доп таблицу с событиями и записываем их в БД. Это в любом случае нередко удобно для аудитов и дебагинга. В общем как я уже и говорил - я с этим удачно работаю. Это оочень удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 11:17 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton Почему соврменные JMS/MQ системы незаменимы? Является ли это хайпом или технолгическим витком? Потому что ТЕОРЕМА https://en.m.wikipedia.org/wiki/CAP_theorem Начало - хорошее. Но неполное. CAP применим в отношении одноранговых систем. Типа узлы кластера dbms. JMS/MQ системы - содержат узлы разного ранга. Потребители. Поставщики событий и брокеры. И как здесь уложить CAP - не совсем понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 11:21 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
crutchmaster mayton Почему мы не можем вместо них брать Dbms? Потому что у этих систем нет ничего общего. Это может быть хорошим вопросом на собеседовании. Но нам нужен развернутый ответ. Если JMS/MQ брокер хранит события и предоставляет интерфейс для пуша и полла. И dbms также может хранить таблицу событий и также предоставлять аналогичные возможности - то нам надо подчеркнуть разницу. Так в чем-же разница? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 11:25 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mad_nazgul PetroNotC Sharp mad_nazgul, Ты прокололся. Ты сравнил асинхронные технологии и синхронные. Чта?! У нас gRPC в основном асинхронно работает. И graphQL тоже может асинхронно работать. Мы пока пишем синхронные запросы. Т.к. только тренируемся. Но в перспективе будем асинхронные делать. <:o) Асинхронность - это хорошо. Но безотносительно синхроннсти или асинхронности поставщик событий и потребитель встречаются в сети и присутсвуют единовременно. Без этого у вас не состоится коннект. В противоположность message broker позволяет событию (бизнес-событию!) существовать отдельно от обоих участников. Тоесть lifecycle такого бизнес-события более сложен чем просто асинхронизм. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 11:30 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton mad_nazgul пропущено... Чта?! У нас gRPC в основном асинхронно работает. И graphQL тоже может асинхронно работать. Мы пока пишем синхронные запросы. Т.к. только тренируемся. Но в перспективе будем асинхронные делать. <:o) Асинхронность - это хорошо. Но безотносительно синхроннсти или асинхронности поставщик событий и потребитель встречаются в сети и присутсвуют единовременно. Без этого у вас не состоится коннект. В противоположность message broker позволяет событию (бизнес-событию!) существовать отдельно от обоих участников. Тоесть lifecycle такого бизнес-события более сложен чем просто асинхронизм. Так что альтернатива только почта и ямщики на лошадях ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 11:32 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Но нам нужен развернутый ответ. Ты и сам знаешь что субд централизована. А сабж распределенные информ системы и бд ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 11:35 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton Но нам нужен развернутый ответ. Ты и сам знаешь что субд централизована. А сабж распределенные информ системы и бд Нет. СУБД тоже могут лежать на других уровнях CAP. Посмотри как работает Apache Cassandra. Это СУБД но она не связана обязательством C<->A. Посмотри как работает DynamoDb, Apache Ignite. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 11:47 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Нет, это не костыли, это вполне известное решение. Костыльное решение. Для rss это как-то и оправдано, для сообщений - ну так себе. Вот мы тут на форуме сидим и тычим F5. Удобно? Stanislav Bashkyrtsev Ну смотря что ты тут имеешь в виду. Что бы А не дрочило Б запросами раз в n секунд, а событие передавалось тогда, когда оно произошло. Stanislav Bashkyrtsev Нет, Ack здесь не поможет. Ну да, так надо перезапрашивать. Но так не понятно причём тут вообще какое-то mq, если всё завязано на логи запросов и они там кому-то нужны потом целый год. Это всё равно, что финансовые транзакции пытаться с mq хранить. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 11:49 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Нет, это не костыли, это вполне известное решение. Не я придумал. Есть спец форматы для фидов: RSS, Atom. Я с такими системами еще в 2009ом работал. Я признаться... про RSS мало знаю. Я считал что это просто статичный файл который сам браузер периодически poll-ает и таким образом узнает о линках на новые события. Я не прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 11:50 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Я признаться... про RSS мало знаю. Например rss новых тем на форуме (которое работает через одно место). Браузер тыркает форумом запросами, форум иногда его обновляет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 11:52 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton PetroNotC Sharp пропущено... проект пишу. Некогда лекции писать. Ты и сам знаешь что субд централизована. А сабж распределенные информ системы и бд Нет. СУБД тоже могут лежать на других уровнях CAP. Посмотри как работает Apache Cassandra. Это СУБД но она не связана обязательством C<->A. Посмотри как работает DynamoDb, Apache Ignite. - у решения Клиен-сервер двухзвенка есть СУБД - у решения Message-oriented middleware тоже есть для сообщений своя бд внутри. Ты не понял разницы? Она в каждом из трех слов архитектуры ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 11:56 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, Ну, короче mq - это не про то. Это чтобы тебе доставить твой фид из точек [a,b,c,...] в точки [x,y,z,...] ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 11:57 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp - у решения Message-oriented middleware тоже есть для сообщений своя бд внутри. Так все таки? БД или JMS/MQ ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 12:00 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton PetroNotC Sharp - у решения Message-oriented middleware тоже есть для сообщений своя бд внутри. Так все таки? БД или JMS/MQ ? Бд своя внутренняя для решения своих задач - у ослика есть бд - у винды в операционке есть бд - у кафки есть бд - у git есть бд ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 12:03 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton пропущено... Так все таки? БД или JMS/MQ ? Бд своя внутренняя для решения своих задач - у ослика есть бд - у винды в операционке есть бд - у кафки есть бд - у git есть бд Ну это не тот ответ который я хотел услышать. Впрочем это даже вопрос не к тебе а ко всем участникам. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 13:32 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
crutchmaster mayton Я признаться... про RSS мало знаю. Например rss новых тем на форуме (которое работает через одно место). Браузер тыркает форумом запросами, форум иногда его обновляет. Насколько я понимаю эта линка - конфигурация всех подписок на sql.ru? https://www.sql.ru/forum/actualrss.aspx?id=11 Верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 13:35 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
crutchmaster С MQ удобно горизонтально масштабироваться. Выросла нагрузка? Добавил n инстансов (и не обязательно на один сервак). Надо под это затачивать систему, конечно. Можно делать и serverless, вкорячить какой-нибудь zeromq или сделать велик. Полностью согласен насчет масштабирования. Эта точка приложения сил - самая легкая и алгоритмически простая. Если масштабирование Real-Application-Cluster например для Оракла имеет объективные ограничения (там выше 100 узлов уже может начинаться шторм служебного трафика) то для таких слабо-связных систем или eventually связных - это число отодвинуто очень далеко. Кроме того брокеры и продюсеры и консюмеры мы можем разделять спокойно до тех пор пока бизнес-логика позволяет. Разделить DBMS на части - это тот еще челледж. Особенно чтобы ПОСЛЕ разделения БД сохраняла те-же свойства что и до разделения. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 13:41 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
crutchmaster Нужно сделать броадкаст на n сервесов, которые находятся на m серверах. Как это сделать через фс? Монтировать её на этих m серверах? Уровень костылизма зашкалил. Для соединения точка-точка это вполне себе работает. 1 месседж == 1 файл. Только нужно гарантировать чтобы только 1 процесс брокера считывал файлы. Иначе есть риск прочитать файл дважды. Ордеринг (FIFO) мы гарантировали через хронологические названия файлов. Например шаблон yyyy-mm-dd-hh-mm-ss-ms.xml в файловой системе NTFS5 всегда сохранялся в директории с сортированном порядке (это свойство NTFS) и извлекая файлы листингом директории мы получали коробочную сортировку без усилий. Мы строили такую систему в 2003 году. На базе Microsoft.Net. Бродкаста (подписок на топики) у нас не было. Просто было специфичное ТЗ. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 13:47 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
crutchmaster Не хочешь/нечего разделять на куски - не разделяешь, пилишь дальше свой монолит. Да не в монолите дело. И хотя я чаще голосую за монолит. Просто сама жизнь и сами условия ведения бизнеса диктуют если не разделение задачи на части - то просто интеграцию. Ты делаешь спокойно монолит. Потом к тебе приходит бизнес и говорит - вот нам тут надо черпать тикеры и прайсы из такой-то и такой-то системы. И ничего тут не поделаешь. И что твоё приложение после этого? Монолит? Не? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 13:50 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev crutchmasterИ кроме того мне непонятно как с фидами поддержать FIFO? Будет ли отслеживаться хронология событий? 1. Наши события - эт не события, а просто сущности в БД отсортированные по дате модификации. Но тогда сущность может "прыгать" по фиду. Сначала она была в мартовском фиде, теперь в августовском. Это не требует доп таблиц. 2. Ну или заводим доп таблицу с событиями и записываем их в БД. Это в любом случае нередко удобно для аудитов и дебагинга. В общем как я уже и говорил - я с этим удачно работаю. Это оочень удобно. Тут было неверно квотировано. Вопрос по хронолгии - это мой вопрос. По поводу прыгающих сущностей и доп таблиц. Я голосую против. Потому-что Consumer должен быть простым. Тоесть если я и Петро к примеру подписались на новости изменения цен на акции Luxoft или Yandex, то мы не хотим парсить никаких фидов и вообще мы ничего не хотим делать на клиене. Мы просто делаем цикл или хендлер наподобие того что я приводил из учебных примеров и имеем новости по ценам на акции. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
Кстати подписка - важный момент. Если я уже прочитал новость а Петро еще не прочитал - то брокер будет хранить ее хоть 1000 лет (на самом деле согласно политике retention которая описана в брокере) и Петро получит свои новости по акциям когда поднимет свой упавший Consumer. И те господа которые в качестве аналогии MQ систем приводят толи сокеты... толи еще какие-то упрощения - почему-то игнорируют такой юзкейс. Или я не знаю сколько я еще должен поднять технологий и структур данных чтобы превратить пускай самый быстрый сокет в аналог полноценного брокера с подпиской. Кстати Kafka в организации хранения сообщений очень экономна. Ей достаточно хранить только offset прочитанного для каждого потребителя. Группа соотв - должна хранить группу оффсетов. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 14:02 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mad_nazgul Щас у нас на проекте активно избавляются от REST и переходят на GraphQL для фронта. И как впечатления от GraphQL? Мне показалось что слишком сложно для большинства простых потребителей контента. GraphQL в смысле КОНТЕНТА предлагает офигенскую фичу. Вы получаете на response трафик который содержит только те поля и суб-документы которые зареквестили. Но чтобы эту фичу полноценно реализовать - нужна либо какая-то очень гибка DBMS наподобие графовой. Либо нужен чудовищно-сложный SQL-билдер запросов который может вытянуть вообще всю твою базу в зависимости от того что юзер запросил в реквесте. Если вы искусственно ограничите этот билдер и скажете что - нахрена дескыть тянуть дочерние суб-таблицы. Пускай сделают 2-мя GrapQL реквестами. То возникает вопрос. А нахрена вы вообще брали GraphQL? У вас - REST-style сборки модели ответа! Вернитесь обратно в REST! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 14:10 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, авторКстати подписка - важный момент. Если я уже прочитал новость а Петро еще не прочитал - то брокер будет хранить ее хоть 1000 лет (на самом деле согласно политике retention которая описана в брокере) и Петро получит свои новости по акциям когда поднимет свой упавший Consumer. вообще, это основной момент для использования MQ ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 14:12 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Чем больше систем, тем меньше ресурсов в среднем мы тратим. Эти проблемы все решаются простым кешированием. В открытом вебе еще добавляют тротлинг. В вебе в принципе мы не работаем с MQ (во всяком случае я никогда не видел таких решений), я не уверен что MQ в принципе масштабируется до таких размеров и нагрузок. По теме топика, Станислав, ваше предложение - самое интересное. Но я честно говоря не совсем понимаю какого рода сервис вы предоставляете? Возможно сервис фидов это не совсем MQ. Это скорее ... SNAPSHOT сервис где нам предлагается самим собрать последние новости. Верно ли я понял? И можете привести пример такого ответа от вашего фид-сервиса. Ну например я захотел фид по ценам на акции it-компаний. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 14:13 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mad_nazgul У нас gRPC в основном асинхронно работает. Я не знаком с gRPC и не использовал его. Но фичей преподносится некий гугловый вариант компактной сериализации данных. Эту сериализацию вообще интересно рассматривать только в сравнении со смежными технологиями такими как - Apache AVRO - Apache Thrift В моём понимании они делают тоже самое. Это как ... сравнивать 5 видов json форматов. Вроде они разные. Но внутри всё тоже самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 14:18 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, gRPC это упрощенная версия SOAP. Удаленный вызов процедур на java клиенте, или дельфи клиенте. Понятно что это (RPC) к сабжу не относится. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 15:54 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton По поводу прыгающих сущностей и доп таблиц. Я голосую против. Потому-что Consumer должен быть простым. Тоесть если я и Петро к примеру подписались на новости изменения цен на акции Luxoft или Yandex, то мы не хотим парсить никаких фидов и вообще мы ничего не хотим делать на клиене. maytonНо я честно говоря не совсем понимаю какого рода сервис вы предоставляете? Возможно сервис фидов это не совсем MQ. Это скорее ... SNAPSHOT сервис где нам предлагается самим собрать последние новости. Верно ли я понял? И можете привести пример такого ответа от вашего фид-сервиса. Ну например я захотел фид по ценам на акции it-компаний.В моем случае Системой А пользуется один отдел, он сабмитит данные в Систему Б которой пользуется другой отдел. После того как Отдел Б закончил с заявкой, мы хотим результаты увидеть в Системе А. И вот Система А поллит события и забирает данные. И пользователь из Отдела А видит результаты на UI. Если быть более конкретными: Отдел А - это химики которые синтезировали вещества, а Отдел Б - это химики которые очищают результат и получают чистый продукт. Система А соответственно сабмитить какие молекулы мы ожидаем, плюс предпочтения по очистке, а Система Б - регистрирует результат очистки (это картинки плюс данные), мол, сколько там получилось, какая чистота, регистрационный номер. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 16:24 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, Ну, жуткий велосипед. Чего уж тут стеснятся. Разработчики уже немолодые люди. Вероятно логирование тоже рукописное. Бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 16:52 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
JMS/MQ система не обязательно должна поставлять полный документ. Если отдел А уведомляет отдел Б о том что результат уже готов - он может прислать мессендж с линком на хранилище где уже лежит отчот. Это решает многие вопросы нагрузок. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 16:59 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
как то странно. если в работе есть одно вещество, по которому идет работа и один отдел его делает, а второй отдел его чистит, то завести информационный объект "тетрадимитилгидрохлорид", а в системе каждого отдела, осуществляющего операцию по веществу, по завершении каждой операции выслать сообщение по итогам каждой операции. кто на событие очистка подписался, тот уведомление и получает. а так выглядит велосипедом ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 17:07 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
monstrU, У него событие это Push сообщение. То есть от сервера клиенту. HTTP1 это не умеет. HTTP2 уже умеет. Но они циклом опрашивают сервер на предмет новостей. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 17:34 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Мне кажется здесь люди не очень понимают программерскую терминологию.. Или просто хочется кинуть камнем, но не умеючи - не выходит :) Велосипед - это создание чего-то, что уже существует. Как в случае собсно велосипеда, который изобретали два раза. Оповещения о событиях решаться может двумя способами: - Асинхронно (MQ) - низкий latency, но хуже с масштабируемостью и сложней дебаг - Синхронно (polling) - высокий latency (хотя это можно обойти добавив таки немного асинхронности), лучше с масштабируемостью (если допустимы кэши), проще дебаг ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 17:35 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev - Асинхронно (MQ) - низкий latency Нет такого требования. Низкий latency как раз важен для классических REST/SOAP систем. Для JMS/MQ это требование как раз может быть смягчено за счет других бизнес требований и конфигурации. Те-же гарантии доставки например и транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 17:44 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Stanislav Bashkyrtsev - Асинхронно (MQ) - низкий latency Нет такого требования. Низкий latency как раз важен для классических REST/SOAP систем. Для JMS/MQ это требование как раз может быть смягчено за счет других бизнес требований и конфигурации. Те-же гарантии доставки например и транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 17:56 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Асинхронно (MQ) - низкий latency, но хуже с масштабируемостью и сложней дебаг - Синхронно (polling) - высокий latency (хотя это можно обойти добавив таки немного асинхронности), лучше с масштабируемостью (если допустимы кэши), проще дебаг Ну и еще есть куча методов. Чё только один привел? Вот бегать в магазин каждые 5 сек спрашивая завезли ли хлеб, и есть ВЕЛОСИПЕД.))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 18:55 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev - Синхронно (polling) - высокий latency (хотя это можно обойти добавив таки немного асинхронности), лучше с масштабируемостью (если допустимы кэши), проще дебаг ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 23:04 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
kealon(Ruslan), Вместо коллбэка клиент ставит таймер и каждые 5сек спрашивает новости у старшего брата сервера ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 23:54 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Я для обмена событиями между приложениями теперь использую REST и фиды вместо MQ. Ну, когда есть возможность. Мне очень понравилось. Работает так: 1. Система А хочет получать сообщения от Б 2. Б публикует фид событий которые у него происходят. Ну и ссылки на сущности которые поменялись этим событием. 3. А поллит фид раз в сколько-то секунд и если видит там неизвестные ранее события, то может пойти по ссылкам и скачать все нужные данные. 4. Для этого А должен хранить инфу о последнем считанном событии. Это может быть timestamp если не боимся двух одновременных событий, или ID события. Это очень удобно: а. Если что-то пошло не так, то фид и детали можно смотреть прям из браузера б. Если что-то пошло не так и система А не смогла сохранить/распарсить данные из Б, то эта же система А их потом и перезапросит после того как мы починили все. Т.е. не надо трогать команду Б чтоб те запустили заново событие. в. Не надо изучать/устанавливать доп компоненты (MQ brokers) Но конечно если нужно чтоб А мгновенно узнала о событии в Б, то прийдется все-таки чтоб Б как-то нотифицировала нуждающихся. Либо по тому же HTTP, либо по MQ. еще немного наворотов и ты получишь кафку. вопрос. зачем придумывать лисапед и решать проблемы которые уже давно за тебя решили? ксттаи я как то собесился в заландо финский, (я живу в финляндии), и там схлестнулся на эту тему с их заландским "архитектором", кстати питерским (о да какой сюрприз, пол питера живет через забор), в общем я ему примерно то что ты описал предложил как альтернативное решение чтоб не зацикливаться на брокерах и использовать их тогда когда надо а не чтоб было. он сказал что я некопенгаген и дал по мне негативный фидбек. что он мне постоянно намекал использвоать брокер а я "вероятно ничего кроме реста не знаю". ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2021, 00:55 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp kealon(Ruslan), Вместо коллбэка клиент ставит таймер и каждые 5сек спрашивает новости у старшего брата сервера а ему прилетает порток на 25 тысяч записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2021, 00:56 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
andreykaT Stanislav Bashkyrtsev Я для обмена событиями между приложениями теперь использую REST и фиды вместо MQ. Ну, когда есть возможность. Мне очень понравилось. Работает так: 1. Система А хочет получать сообщения от Б 2. Б публикует фид событий которые у него происходят. Ну и ссылки на сущности которые поменялись этим событием. 3. А поллит фид раз в сколько-то секунд и если видит там неизвестные ранее события, то может пойти по ссылкам и скачать все нужные данные. 4. Для этого А должен хранить инфу о последнем считанном событии. Это может быть timestamp если не боимся двух одновременных событий, или ID события. Это очень удобно: а. Если что-то пошло не так, то фид и детали можно смотреть прям из браузера б. Если что-то пошло не так и система А не смогла сохранить/распарсить данные из Б, то эта же система А их потом и перезапросит после того как мы починили все. Т.е. не надо трогать команду Б чтоб те запустили заново событие. в. Не надо изучать/устанавливать доп компоненты (MQ brokers) Но конечно если нужно чтоб А мгновенно узнала о событии в Б, то прийдется все-таки чтоб Б как-то нотифицировала нуждающихся. Либо по тому же HTTP, либо по MQ. еще немного наворотов и ты получишь кафку. вопрос. зачем придумывать лисапед и решать проблемы которые уже давно за тебя решили? В общем может быть и можно подобное с помощью Kafka сделать без потери в функциональности. Останутся скорей всего такие проблемы: - Масштабируемость - потому как она вряд ли будет кэшировать ответ подписчику? Но мне не приходится обычно писать что-то высоконагруженное с большим кол-вом подписчиков, поэтому это я переживу :) - Лишний компонент который нужно хорошо изучить - Ну и это доп компонент который прийдется деплоить, поддерживать, бэкапить и пр. - И я еще не понял что делать если сама кафка лежит и наше приложение не может запаблишить событие. А из БД не обязательно это событие можно будет восстановить. Да и давать возможность кафке читать базу и писать код для вычленения всех типов событий, хм.. Пока я не убежден на 100% что она правда не привнесет больше хлопот чем решит проблем. Но как минимум надо будет дать шанс. andreykaT PetroNotC Sharp kealon(Ruslan), Вместо коллбэка клиент ставит таймер и каждые 5сек спрашивает новости у старшего брата сервера а ему прилетает порток на 25 тысяч записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2021, 10:12 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev - Масштабируемость - потому как она вряд ли будет кэшировать ответ подписчику? Их никто не кеширует by design. Месседжи - одноразовые. Хотя consumer может кешировать их в своём собственном процессе - но зачем? Для кого? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2021, 12:13 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
andreykaT PetroNotC Sharp kealon(Ruslan), Вместо коллбэка клиент ставит таймер и каждые 5сек спрашивает новости у старшего брата сервера а ему прилетает порток на 25 тысяч записей. Нужен сам факт - что в магазин завезли хлеб. Boolean А как ты потом выгребать будешь, пофиг. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2021, 14:41 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
У нас - изначально какая-то неверная установка. JMS/MQ системы - основное приминение back-to-back. Их мало используют на фронтовой стороне. И когда мы рассуждаем как слать месседжи в браузер - мы неизбежно заходим в тупик. Давайте разделим эти юзкейсы. Пускай будут websockets и их протоколы. Это одно. И будут back-системы которые связывают только серверные процессы. Это - другое. Про "порток на 25 тыщ" записей я уже выше писал. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2021, 15:03 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, Ну тогда вброс станислава тут лишний. СистемаБ может получить Push из системыА без Pool. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2021, 15:23 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Я не знаю зачем вы их до сих пор используете, если есть Kafka. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2021, 18:33 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Добрый день. Kafka и Jms для разных целей разрабатывались. Kafka это стриминговая логирующая система, ориентирована на пакетную обработку данных, что накладывает ограничения на гарантированную доставку и дедубликацию. Jms же ориентирован на гарантированную доставку отдельных сообщений. Да, можно реализовать для Kafka на стороне клиента функционал подобный jms, но тогда и производительность Kafka будет как у обычного брокера JMS. Jms позволяет писать более простой код и, например, не всякий разработчик сейчас сможет правильно написать код обработки ребалансировки консьюмеров Kafka так, чтобы сообщения не терялись и не было дублей. Ещё надо понимать, что под реализацией Jms тоже лежит БД, например, для ActiveMQ это обычно Kahadb, специально оптимизированная под обработку очередей и вряд ли БД общего назначения сможет конкурировать со специализированной БД по быстродействию. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 02:34 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
JMS, что вы понимаете под термином. Имхо он устарел, умер, и сейчас не актуален. Мне больше нравится, Message-oriented middleware ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 12:10 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov Kafka это стриминговая логирующая система, ориентирована на пакетную обработку данных, что накладывает ограничения на гарантированную доставку и дедубликацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 12:44 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov, верно подмечено. "Пакетность" заложена даже в интерфейсной части. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 13:03 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Вчера посмотрел вот это видео. Чувак из Badoo героически боролся с сменой мастера и балансировкой. Любопытно. [spoiler] ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 13:05 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Roman Osipov, верно подмечено. "Пакетность" заложена даже в интерфейсной части. JMS это спецификация. Тогда с чем сравниваем пакетность кафки? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 13:24 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton Roman Osipov, верно подмечено. "Пакетность" заложена даже в интерфейсной части. JMS это спецификация. Тогда с чем сравниваем пакетность кафки? Знаешь что интересно. Что в документации на Кафку в оглавлении https://kafka.apache.org/documentation/#api JMS даже нигде не упоминается. Разумеется у нее будут коннекторы которые будут адаптировать события в JMS протоколы такие как AMQP, STOMP e.t.c. Но самое главное я-бы отсюда вывел следующее. Кафка не заявляет себя как JMS система. Вот мои рассуждения. Я неправ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 13:50 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, JMS это не протокол. Это API и спецификация именно для java приложений. >Разумеется у нее будут коннекторы которые будут адаптировать события в JMS протоколы такие как AMQP, STOMP e.t.c. Невозможно из kafka сделать AMQP. Потому что AMQP это не про сообщение, а про про exchanges, queues и bindings сежду ними. А kafka это стримминг, и таких понятий там просто нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 14:08 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Согласен. JMS - это спецификация для Java. Не буду спорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 14:10 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Согласен. JMS - это спецификация для Java. Не буду спорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 14:15 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Как "пошире"? Можно создать отдельный топик по streaming-platform... но учитывая вялую посещаемость sql.ru я-бы оставил как есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 14:27 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
>Я для обмена событиями между приложениями теперь использую REST и фиды вместо MQ ИМХО этот паттерн далеко не для всех случаев подходит. Кейс 1. Например, приложение 1 это кластер, в котором несколько нод N, и по разным событиям от приложения 2 нужно обновлять M кешей. Если N и M велики, например, несколько десятков нод и сотни кешей, то пулинг создаст заметную дополнительную нагрузку. А если, не дай бог, это хозяйство расположено в AWS, то счет в конце месяца тебя неприятно удивит. Кейс 2. Необходимо уведомлять несколько приложений о событии, причем логика того, какие приложения нужно уведомлять, а какие нет (раутинг), может менятся. Если делать через пулинг, то при изменении логики раутинга необходимо перконфигурировать или передеплоивать все приложения. А это bad practice. А если через AMQP, то достаточно поменять привила байндинга exchange на очереди. Думаю, что таких кейсов достаточно много. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 14:39 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
kolchanov >Я для обмена событиями между приложениями теперь использую REST и фиды вместо MQ ИМХО этот паттерн далеко не для всех случаев подходит. Кейс 1. Например, приложение 1 это кластер, в котором несколько нод N, и по разным событиям от приложения 2 нужно обновлять M кешей. Если N и M велики, например, несколько десятков нод и сотни кешей, то пулинг создаст заметную дополнительную нагрузку. А если, не дай бог, это хозяйство расположено в AWS, то счет в конце месяца тебя неприятно удивит. А вот если задержка в минуту (ну или сколько там надо) недопустима и сервисы сразу должны узнавать про событие - тогда да, такое на одних фидах не сделать. kolchanovКейс 2. Необходимо уведомлять несколько приложений о событии, причем логика того, какие приложения нужно уведомлять, а какие нет (раутинг), может менятся.А для чего это делается? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 15:51 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Как "пошире"? Можно создать отдельный топик по streaming-platform... но учитывая вялую посещаемость sql.ru я-бы оставил как есть. - JMS устарело. Не стоит сравнивать. - обсуждать или MQ или Message oriented middleware. Это имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 16:13 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton Как "пошире"? Можно создать отдельный топик по streaming-platform... но учитывая вялую посещаемость sql.ru я-бы оставил как есть. - JMS устарело. Не стоит сравнивать. В чем устарело? То что спецификация была от 2013 года? Так это не так старо. Бывалыча некоторые стандарты и постарше лежат и ничего. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 16:26 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp или Message oriented middleware. Расскажи как ты себе понимаешь MOM. Без определений из вики. Вот лично как ТЫ понимаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 16:29 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Kafka даёт максимальную производительность (из-за которой её и используют ) в режиме автокоммитов оффсетов или редких ручных коммитов. Автокоммит, кстати, сконфигуирован в Kafka по дефолту в true. Видел проекты, где разработчики вешают аннотацию коньсьмера кафка на метод и вроде как получают сообщения и все у них работает, но упускают из виду дефолтный автокоммит, что может привести к ситуации, когда коммит оффсетов произошёл, а данные не загрузились в целевую систему, вот и потеря сообщений, причём даже в логах не найдёте информацию о потерях. При редких ручных коммитах чтобы не было потерь у нас должны быть огромные пачки сообщений обрабатываться за раз, что чревато ошибками и необходимостью переотправки. Про дубли - например после ребалансировки консьюмеров не удастся закоммитить оффсеты в той же сессии, при попытке коммита будет exception. Поэтому надо хранить оффсеты обработанных сообщений где-то ещё, во внешнем хранилище, обычно я в zookeer храню. Это только малая часть проблем. Вывод такой - Kafka имеет очень много особенностей эксплуатации, и если у вас в команде нет эксперта по ней, то легко нарветесь на какой нибудь мало понятный баг. Под Jms я имел ввиду именно спецификацию. Здесь все гораздо проще - есть спецификация, есть транзакции в Jms, и даже новичек сможет писать гарантированно работающий код. Конечно, в каждом конкретном случае, в зависимости от требований отказоустойчивости, нагрузки обдуманно выбирается то или иное решение jms, kafka, кэш или что то ещё. Зависит от кругозора архитектора. Про rabbitmq - мы принципиально не пользуемся им, т.к. он плохо горизонтально масштабируется и высока вероятность split brain кластера под нагрузкой, после которого кластер разваливается и лечится только полной очисткой данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 16:38 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, >>Необходимо уведомлять несколько приложений о событии, причем логика того, какие приложения нужно уведомлять, а какие нет (раутинг), может менятся. >А для чего это делается? Например, b2c и b2b ордера обрабатываются в разных приложениях, хотя и те и те обрабатываются одним customer information management приложением. Потребовалось по дргугому обрабатывать ордера b2g клиентов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 17:24 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, >Добавляем кэширование на сервере в nginx'e эдак в одну минуту и вся нагрузка с сервера резко уйдет. Т.е. надо чтоб все долбящиеся клиенты кроме 1ого получали ответ из кеша. Это помогает только в самых тривиальных случаях, когда всем нужен один и тот же объект. А если это web портал, которому нужно получать нотификацию об обновлении для конкретного кастомера, у которого открыта сессия. Еще один nginx посередине сделает ттолько хуже. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 17:32 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton PetroNotC Sharp пропущено... пошире это - JMS устарело. Не стоит сравнивать. В чем устарело? То что спецификация была от 2013 года? Так это не так старо. Бывалыча некоторые стандарты и постарше лежат и ничего. Ну вот смотри. За 5 лет в ветке нет обсуждений JMS. А кафки есть. Для тебя не имеет значение? Почему для тебя это ничего не значит? Почему для тебя это не критерий? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 20:42 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton пропущено... В чем устарело? То что спецификация была от 2013 года? Так это не так старо. Бывалыча некоторые стандарты и постарше лежат и ничего. Ну вот смотри. За 5 лет в ветке нет обсуждений JMS. А кафки есть. Для тебя не имеет значение? Почему для тебя это ничего не значит? Почему для тебя это не критерий? Я думаю что для Java технологий 5 лет - не показатель. О каком старении вообще идет речь? Протоколы почтовой связи SMTP/POP которые мы используем каждый день имеют возраст порядка 40 лет. И что? Банки используют внутри AMQP. В основном. Говорю потому что работал минимум с 3 европейскими банками. Они сидят на этом протоколе плотно. Интеграция систем которые занимаются торговлей ценными бумагами. И я представил себе что должно случится чтобы они вдруг стали что-то считать устаревшим? Железо? Софт? Да. Может быть. Это можно считать устаревшим. Хотя-бы по лицензиям. Протокол связи? - хрен там. Он еще 100 лет может сохраняться без особых изменений. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 21:02 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton PetroNotC Sharp или Message oriented middleware. Расскажи как ты себе понимаешь MOM. Без определений из вики. Вот лично как ТЫ понимаешь. Легко. Могу сразу и теорию и практику. Теория - это ИС с высокой доступность, нагрузкой и низкой согласованность данных (жертва). Практика - реализовано в ГОСУСЛУГИ ... Если нет входа то рассказываю. При входе есть поле Задолженность по налогам. Там число и кнопка "Проверить (на тек время)". Вроде все понятно. Никакого pooling)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 21:28 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Я думаю что для Java технологий 5 лет - не показатель. Мы о новых проектах или легаси? Топик то про что? Если не разбираясь жрать все подряд то это не профессионализм. Я в балет прихожу и ничего там не понимаю. Нет ньюансов. Архитектура это тоже балет. Её слышать и слушать надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 21:32 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Банки используют внутри AMQP. МОМ это класс ПО. А выше абревиатура это протокол. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 21:41 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
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 портал, которому нужно получать нотификацию об обновлении для конкретного кастомера, у которого открыта сессия. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 21:58 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, При ручных коммитах производительность проседает, потому, что синхронный коммит оффсетов - блокирующая операция (асинхронный коммит не рассматриваем из-за отсутствия гарантий). Там путь такой обычно - оффсеты запросом клиента доставляются на один из узлов Кafka, потом реплицируются на другие узлы Кafka, в соответствии с настройками репликации, а потом уже синхронно ответ возвращается клиенту. И так каждый раз при ручном коммите. Для продюсера Kafka ситуация другая, в памяти клиента организуется буфер, в который продюсеры с разных программных потоков складывают информацию, а потом отдельный поток отсылает всю накопленную пачку в Kafka. Поэтому продюсеры работают быстро, а оффсеты коммитятся медленно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 23:11 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton Банки используют внутри AMQP. МОМ это класс ПО. А выше абревиатура это протокол. Конечно протокол. И когда стоит задача интеграции или развития ПО то смотрят в первую очередь - на стек протоколов. Ты не можешь прийти работать в банк и просто написать ПО которое не интегрируется ни с чем. Можешь называть это MOM, можешь шиной сообщений, можешь событийной и слабосвязной архитектурой. Суть - та-же. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 23:38 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov Stanislav Bashkyrtsev, При ручных коммитах производительность проседает, потому, что синхронный коммит оффсетов - блокирующая операция (асинхронный коммит не рассматриваем из-за отсутствия гарантий). Там путь такой обычно - оффсеты запросом клиента доставляются на один из узлов Кafka, потом реплицируются на другие узлы Кafka, в соответствии с настройками репликации, а потом уже синхронно ответ возвращается клиенту. И так каждый раз при ручном коммите. Для продюсера Kafka ситуация другая, в памяти клиента организуется буфер, в который продюсеры с разных программных потоков складывают информацию, а потом отдельный поток отсылает всю накопленную пачку в Kafka. Поэтому продюсеры работают быстро, а оффсеты коммитятся медленно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 23:52 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov Про rabbitmq - мы принципиально не пользуемся им, т.к. он плохо горизонтально масштабируется и высока вероятность split brain кластера под нагрузкой, после которого кластер разваливается и лечится только полной очисткой данных. Прямо срыв покровов можно сказать, меня здесь год назад два пионера пытались всеми силами убедить, что RabbitMQ - это пушка, а то что про него пишут в интернетах - это все недоброжелатели (в т.ч. его же разработчики) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 05:20 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Вот бегать в магазин каждые 5 сек спрашивая завезли ли хлеб, и есть ВЕЛОСИПЕД.))))) Это не велосипед, это КОСТЫЛЬ! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 07:19 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Просто было специфичное ТЗ. Ну, понятно, в частном случае все работало. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 07:28 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton И ничего тут не поделаешь. Допиливаешь монолит, деплоишь. Через какое-то время он становится большим и толстым. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 07:29 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей Панфилов Прямо срыв покровов можно сказать, меня здесь год назад два пионера пытались всеми силами убедить, что RabbitMQ - это пушка, а то что про него пишут в интернетах - это все недоброжелатели (в т.ч. его же разработчики) Как идея - нормально. Ну кривоват и что. Попробуй достаточно ерлангшиков найти, чтобы до ума довести все это. А какие еще варианты есть для брокера с подобным функционалом, кроме хттп велика? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 07:40 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, Конечно. Только топик не о протокол и спецификации, а как ты правильно сказал и о шине, и о слабой связанности и о событийной и о... Короче одним словом - МОМ. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 07:41 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
да) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 07:41 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
crutchmaster, Конечно, у Rabbitmq есть своя ниша, где он хорош. Если не требуется отказоустойчивости и допускается потеря состояния, то он вполне годно работает на одном узле, обеспечивая event driven решение, например, для микросервисов. При этом очереди содержат не данные, которые могут быть больших объёмов, а события. По сравнению с ActiveMQ, Rabbitmq будет быстрее работать в таком случае, может быть в несколько раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 10:37 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов Прямо срыв покровов можно сказать, меня здесь год назад два пионера пытались всеми силами убедить, что RabbitMQ - это пушка, а то что про него пишут в интернетах - это все недоброжелатели (в т.ч. его же разработчики) Как идея - нормально. Ну кривоват и что. Попробуй достаточно ерлангшиков найти, чтобы до ума довести все это. А какие еще варианты есть для брокера с подобным функционалом, кроме хттп велика? Подожди-подожди. А если ты пользуешся Ораклом ... то что - попробуй найди С/C++ ников чтоли? Зачем в эксплуатации коробочной системы тебе знание языка на котором она написана? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 10:44 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Зачем в эксплуатации коробочной системы тебе знание языка на котором она написана? Да это не себе, а тем, кто развивает этот самый раббит. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 11:12 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, Дырявые абстракции. Иногда надо посмотреть, как устроено внутри, чтобы правильно использовать снаружи. И как минимум разработчику понятнее читать java-логи, чем какие нибудь erlang логи. В том числе поэтому мы предпочитаем использовать ActiveMQ, а не Rabbitmq, даже для некритичных систем, хоть он и работает несколько медленнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 11:20 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov, +1 Вообще, есть куча критериев для выбора Event driven. Я не помню причину по которой мемберу выше сказали что это пушка по воробьям. В одном проекте - пушка. В другом золотая пуля и эврика)) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 11:35 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Вообще, есть куча критериев для выбора Event driven. Так выбирать в общем-то не из чего. С одной стороны жабака, с другой ерлагн-функциональщики. Есть кафка, amq (openmq, openjms), rabbit, zeromq для ценителей и всё. Никто особо MQ системами, можно сказать, и не занимался. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 11:55 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov, согласен насчет чтения логов. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 11:58 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
crutchmaster PetroNotC Sharp Вообще, есть куча критериев для выбора Event driven. Так выбирать в общем-то не из чего. С одной стороны жабака, с другой ерлагн-функциональщики. Есть кафка, amq (openmq, openjms), rabbit и всё. Никто особо MQ системами, можно сказать, и не занимался. 1) RPC стиль выбрать или Message? Или гибрид 2) Если Message то потоковый журнал или очереди? 3) Реализацию от аппСервера или MOM? 4) Название и размер отката менеджерам) :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 12:00 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
crutchmaster, То что мало занимаются, согласен. Это сложнее чем писать синхронный код и операции друг за другом. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 12:02 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов Прямо срыв покровов можно сказать, меня здесь год назад два пионера пытались всеми силами убедить, что RabbitMQ - это пушка, а то что про него пишут в интернетах - это все недоброжелатели (в т.ч. его же разработчики) Как идея - нормально. Ну кривоват и что. Попробуй достаточно ерлангшиков найти, чтобы до ума довести все это. А какие еще варианты есть для брокера с подобным функционалом, кроме хттп велика? там же у RabbitMQ наружу выпирает только история про то что в нем кластер настроить проще всего и на этом преимущества заканчиваются, у IBM MQ, например, поддержка XA есть, в отличии от все остальных - это же как раз то что нужно разработчику, разве нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 12:27 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей Панфилов, За IBM нужно платить, извините, деньги и не понятно, подойдёт тебе оно в итоге или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 12:46 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
crutchmaster За IBM нужно платить, извините, деньги и не понятно, подойдёт тебе оно в итоге или нет. Тут определенно великая дилемма: работает, но за деньги, бесплатно, но не работает. Даже непонятно что выбрать ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 14:11 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Ож жеж говорит в другом ключе. Подойдет-не подойдет. У нас в одном проекте на проде стоял IBM/MQ и на девелоперской среде Apache-MQ. Использовалось для тестов интеграции. Модель publish/subscibe. Всё работало. Конфигурации отличались там... только IP-шниками и портами. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 14:54 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Асинхронность - это хорошо. Но безотносительно синхроннсти или асинхронности поставщик событий и потребитель встречаются в сети и присутсвуют единовременно. Без этого у вас не состоится коннект. В противоположность message broker позволяет событию (бизнес-событию!) существовать отдельно от обоих участников. Тоесть lifecycle такого бизнес-события более сложен чем просто асинхронизм. Дык, брокер тоже должен присутствовать постоянно. Иначе "кина не будет". А так согласен. С брокером сообщений проблем больше и они интереснее. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 18:11 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton mad_nazgul Щас у нас на проекте активно избавляются от REST и переходят на GraphQL для фронта. И как впечатления от GraphQL? Норм. У нас он используется для "проброски" на фронт gRPC сервисов. С базой мало имеет общего. Это просто ещё один способ создания API удобный для фронта. Т.к. gRPC для фронта не очень подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 18:15 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton mad_nazgul У нас gRPC в основном асинхронно работает. Я не знаком с gRPC и не использовал его. Но фичей преподносится некий гугловый вариант компактной сериализации данных. Эту сериализацию вообще интересно рассматривать только в сравнении со смежными технологиями такими как - Apache AVRO - Apache Thrift В моём понимании они делают тоже самое. Это как ... сравнивать 5 видов json форматов. Вроде они разные. Но внутри всё тоже самое. Не совсем. Если AVRO и Thrift всё таки отделены от транспортного уровня. То для gRPC этого сказать нельзя. Он прибит к HTTP/2. Это преимущество и недостаток. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 18:21 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Добавляем кэширование на сервере в nginx'e эдак в одну минуту и вся нагрузка с сервера резко уйдет. Т.е. надо чтоб все долбящиеся клиенты кроме 1ого получали ответ из кеша. А вот если задержка в минуту (ну или сколько там надо) недопустима и сервисы сразу должны узнавать про событие - тогда да, такое на одних фидах не сделать. А пробовали протокол поллинга реализовать на If-Modified-Since? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 19:33 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton А пробовали протокол поллинга реализовать на If-Modified-Since? - Во-первых, чтоб узнать модифицировано ли что-то - нужно полезть в БД. А значит от части кеш перестает выполнять свои обязанности. - Во-вторых, для сложного объекта нужно обновлять его дату модификации если менялись его вложенные объекты. А это сложно и тоже может быть не очень производительно. В общем пока не приходилось настолько замарачиваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 21:40 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Ну да. Я и хотел предложить отказаться от nginx но сделать проверку обновления документа более дешевой. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 21:59 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev - Во-вторых, для сложного объекта нужно обновлять его дату модификации если менялись его вложенные объекты. А это сложно и тоже может быть не очень производительно. Хм... да согласен. Но с другой стороны если для всех вложенных объектов например трекается контрольная сумма (что-то вроде MD5) тогда проверка будет сводится к проверке дерева. Что-то крутится в голове... Дерево Меркла... Хотя оно - больше годится для цепочки блоков. Но всё равно идея манит. Я-бы подумал в этом направлении. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 22:05 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, персистентное дерево ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 22:11 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Stanislav Bashkyrtsev - Во-вторых, для сложного объекта нужно обновлять его дату модификации если менялись его вложенные объекты. А это сложно и тоже может быть не очень производительно. Хм... да согласен. Но с другой стороны если для всех вложенных объектов например трекается контрольная сумма (что-то вроде MD5) тогда проверка будет сводится к проверке дерева. Что-то крутится в голове... Дерево Меркла... Хотя оно - больше годится для цепочки блоков. Но всё равно идея манит. Я-бы подумал в этом направлении. 1. Либо вытаскивать все объекты из БД 2. Либо на этапе сохранения данных обновлять корневой объект если меняется любой из из вложенных. А это чревато и плохой производительностью, и багами, и в целом сложной реализацией. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 22:14 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Проблема же не в том чтоб определить поменялись ли объекты - а в том что для этого надо: 1. Либо вытаскивать все объекты из БД 2. Либо на этапе сохранения данных обновлять корневой объект если меняется любой из из вложенных. А это чревато и плохой производительностью, и багами, и в целом сложной реализацией. Да. Успех этой миссии будет зависеть от подсистемы хранения документов или БД. И от того как организован процесс внесения изменений. Например если вы - обладатель файлового хранилища AWS/S3 то ваши документы уже имеют атрибутом MD5 и дату и технически эта файловая система позволяет навешивать на себя отслеживание изменений. MongoDb тоже умеют навешивать watcher на изменения в документах и писать в свой некий pipeline. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 22:37 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, Какие деревья в ОРМ и нормализованной бд? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 22:50 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей Панфилов Тут определенно великая дилемма: работает, но за деньги, бесплатно, но не работает. Может и работать так себе, но еще и доплатишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 04:40 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Ож жеж говорит в другом ключе Да какая ему разница, кто там что говорит. Слушать еще кого-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 04:41 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, Какие деревья в ОРМ и нормализованной бд? Смотри шире. Цена вопроса. Можно ли быстро проверить изменения в композитном документе который состоит из множества частей. Я думаю что можно. Только надо обогатить алгоритм трекингом каких-то признаков. Или timestamps, или CRC. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 09:08 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, Это совсем мимо темы. Просто в противоположную сторону. Решений как всегда миллион. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 09:33 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, В МОМ ты изменил документ и "испустил))) событие" о том что документ изменился. Нет проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 09:53 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, В МОМ ты изменил документ и "испустил))) событие" о том что документ изменился. Нет проблем. Я щас не про МОМ. Я просто обсуждаю как Станислав мог реализовать свою публикацию фидов альтернативным способом. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 10:04 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, Угу. Давай на вадины сокеты перейдем. Вроде мемберы заключили что у него костыль и велосипед) Давай второй дадим. Для симметричности. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 10:18 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Пускай вадя поднимет отдельную тему про "свои сокеты". Я думаю это будет справедливо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 10:43 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Вот "клетчатый" что-то вещает по теме. Интересно. Добавил в заметку Tarantool, NATS. [spoiler] ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 23:06 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Пускай вадя поднимет отдельную тему про "свои сокеты". Я думаю это будет справедливо. т.е. это простой канал связи, а что по нему передается и как используется переданное - это уже дело фантазии и опыта прогера. единственное отличие - трафик. Но это не главное в данном случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 05:25 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Все эти доклады в основном преследуют одну цель - улучшить имидж компании или конкретного человека. Никто не будет делиться с вами реально ценными решениями, ибо незачем плодить конкурентов. На примере тех брокеров - решение из коробки во многих случаях плохо работает, если его не допилить и не обвешать своими костылями. А.вот как это сделать, вам как раз не расскажут в деталях - а это самая ценная информация. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 12:00 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov, В данном случае целью докладчика явно была реклама Tarantul от mail. Не упоминалось те же Hazelcast и Ignite, которые явно не хуже, а может и получше Tarantul в качестве брокеров будут работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 12:12 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov Roman Osipov, В данном случае целью докладчика явно была реклама Tarantul от mail. Не упоминалось те же Hazelcast и Ignite, которые явно не хуже, а может и получше Tarantul в качестве брокеров будут работать. Дружище. Ты с Ignite совсем промахнулся. Я работал с Ignite. Это key-value распределенное хранилище с богатыми возможностями распределенных вычислений. Оно не позиционируется как брокер очередей. Насчет Hazelcast - не знаю. Но тоже сомнительно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 13:06 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, хороший такой подход к сравнению: "возьмём что-то изкаробки, потом возьмём тарантул, кастомизируем его под задачу и вуаля, будет быстрее и надёжнее" :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 13:25 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Я вот смотрю щас на сайт тарантула. Его юз-кейсы. Или паттерны, как там пишут. Надо в самый низ проскроллить. https://www.tarantool.io/en/patterns/ Persistent Queues Вот. Значит этот инструмент - не только key-value система но и также является брокером. Это заявлено. Что он где хранит. Какой API предоставляет. Можно ли интегрироваться с ним "извне" - это отдельные вопросы. Но главное что фича заявлена. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 13:36 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, https://ignite.apache.org/docs/latest/data-structures/queue-and-set Изучай на здоровье. А Hazelcast у нас очень много где и очень долго стабильно как брокер в продакшене работает. Распределенный, отказоустойчивый, горизонтально масштабируемый и очень быстрый. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 13:37 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov, https://ignite.apache.org/features/messaging.html В догонку. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 13:41 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov mayton, https://ignite.apache.org/docs/latest/data-structures/queue-and-set Изучай на здоровье. А Hazelcast у нас очень много где и очень долго стабильно как брокер в продакшене работает. Распределенный, отказоустойчивый, горизонтально масштабируемый и очень быстрый. Хм... ну. Может быть. Как-жеж они ее персистят? Только на memory надеются? На избыточность? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 13:41 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, Да, надежность обеспечивается репликацией очередей по нодам. В случае полного отказа есть заперсистенные статусы доставки сообщений, по которым выполняется восстановление состояния брокера. Потерь не будет, максимум получим дубли. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 13:48 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Да как-то дороговато выходит. Я понимаю роль Ignite в кешировании например базы крупного банка. А ты смотрел лекцию "клетчатого" выше по ссылке? По его мнению идеальная метрика любой очереди в кластере - это пустая очередь. Я с ним согласен. Это - цель к которой нужно двигаться. Но Ignite в этом use-case выглядит фурой в которую положили 1 мешочек картошки. Или очередь в данном сценарии является просто не главной ролью Ignite Cluster а просто чем-то вспомогательным. Тоесть мы долгжны перевести все вычисления в Ignite Cluster и только после этого эта фича (бантик сбоку) как говорил мой коллега вдруг станет рациональным. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 13:53 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, Это только по его субъективному мнению. Но жизнь такая, что иногда не все консьюмеры всегда онлайн и в состоянии выгрести очередь. Выходит очень даже дешево - аналогичные по скорости и надежности решения обычно требуют гораздо большего железа, я знаю о чем говорю, видел разные варианты. Фишка Ignite и Hazelcast в том, то на паре нод можно отказоустойчиво обрабатывать сотни тысяч очередей. Тот же RabbitMQ сдохнет примерно на 5000 очередей. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 14:02 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov Фишка Ignite и Hazelcast в том, то на паре нод можно отказоустойчиво обрабатывать сотни тысяч очередей. Тот же RabbitMQ сдохнет примерно на 5000 очередей. А мы рассматриваем одинаковые конфигурации железа? Мне просто сомнительно такое сравнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 14:05 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, Да, именно одинаковые конфигурации. Дело в том, что у RabbitMQ на каждую очередь работает отдельный программный тред. И когда их становится много, то переключения контекстов начинают жутко тормозить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 14:08 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov mayton, Да, именно одинаковые конфигурации. Дело в том, что у RabbitMQ на каждую очередь работает отдельный программный тред. И когда их становится много, то переключения контекстов начинают жутко тормозить. Хорошо. Давайте отложим этот разговор. Я просто принимаю как должное от вас тот факт что RabbitMQ может лопнуть от 5000 очередей. Хотя мне это кажется странным ибо Erlang... ну ладно. Когда доберусь до кролика я проверю этот забавный факт. Кроме того любая программная конфигурация при 5000 * 2 открытых сокетов уже ведет себя плохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 14:20 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mad_nazgul mayton Привет коллеги. Является ли это хайпом или технолгическим витком? Чта?! Хайп MQ? Мне казалось, что хайп на MQ прошел лет 10 назад. Щас хайп это GraphQL и gRPC. Щас у нас на проекте активно избавляются от REST и переходят на GraphQL для фронта. А микросервисы между собой общаются по gRPC. Только где-то в уголке притаилась Kafka. <:o) кафка осталась в паре моментов - например что то выгрузить нам в систему,в остальном есть варианты лучше ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 20:35 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov, > Дело в том, что у RabbitMQ на каждую очередь работает отдельный программный тред Можешь ткунуть в доку? Всегда считал что thread per client channel. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 22:33 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
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). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 23:13 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
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 на каждую очередь работает отдельный программный тред" некорректна ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 07:22 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
kolchanov, В общем согласен, что выразился неточно. Но сути особо это не меняет. Да, программные процессы erlang более легковесны чем программные потоки ОС, но когда их становится много, то переключения контекстов начинает сильно сказывается на производительность. Чем больше очередей, тем медленнее работает. И зависимость производительности от количества очередей не линейная. Я ставил опыты на машине с 4 процессорами и 16ГБ RAM. Примерно на 5000 очередей и наступал этот самый момент сильной деградации. Ну и поток потоку рознь, может быть в RabbitMQ в реализации есть узкие места и что-то тормозит из-за этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 10:15 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov, И если сравнивать Rabbitmq с тем же Hazelcast, то грубо говоря у последнего нет такого неприятного свойства, как зависимость производительности от количества очередей. Понятно что для Hazelcast если исчерпается память то будет краш, но это надо предусмотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 10:24 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov то переключения контекстов начинает сильно сказывается на производительность. Тоже по идее такого не должно быть. Эрланг проектировался в далекие 80-е когда мультизадачность была основана не на потоках а на более примитивных сущностях. Прерывания ввода-вывода. Корутины. В идеале если на вход сетевого интерфейса ничего не поступает то и Erlang-потоки должны потреблять абсолютный ноль мегафлопов. Вобщем надо смотреть условия эксперимента. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 10:28 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov, Ну дак минус в тормозах покрывается другими 30 - тью характеристиками. Надо же комплексно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 10:37 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, Всё очереди не простаивали, в них постоянно писалось/читалось. Поэтому не занимать ресурсов они не могли. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 10:38 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
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 тыс. сообщений в очереди? Я консьюмера на пару часов выключил и все по бороде пошло? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 10:53 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Ну да. Как писал ранее - если вам не нужна отказоустойчивость, скорость и горизонтальное масштабирование, то Rabbitmq вполне оправданный выбор. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 10:59 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей Панфилов 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 тыс. сообщений в очереди? Я консьюмера на пару часов выключил и все по бороде пошло? Здесь не подскажу. Не ставил таких экспериментов. Можно только догадываться - в туториале написано что максимальная производительность будет при пустых очередях, может размер очереди тоже как-то сказывается на производительности. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 11:15 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Вот на 7-й странице топика начинает наклевываться некий бенчмарк. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 11:16 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Эрланг проектировался в далекие 80-е когда мультизадачность была основана не на потоках а на более примитивных сущностях. А кооперативная многозадачность может подарить массу неприятных сюрпризов при сетевых проблемах (packet loss и вот это вот всё). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 11:29 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Basil A. Sidorov "Импоссибиль" - select() BSD Socket API (а в те самые восьмидесятые лучше ещё не было) далеко не бесплатен. И чем больше опрашиваемых сокетов - тем хуже. Да но эксперимент Осипова проводится не в восьмидесятых. А что под капотом select() может влиять на оплату? Я имею в виду при условии 5000 октрытых сокетов. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 11:37 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov PetroNotC Sharp, Ну да. Как писал ранее - если вам не нужна отказоустойчивость, скорость и горизонтальное масштабирование, то Rabbitmq вполне оправданный выбор. Написали только отрицательное. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 12:18 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton А что под капотом select() может влиять на оплату? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 12:45 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton А что под капотом select() может влиять на оплату? Этож печаль печальная. На вход сетевой карты заходит Ethernet frame. Мы могли-бы уже его сразу взять в работу. Но вместо этого мы проставляем какие-то статусы. И инициируем работу объемом в o(n), хотя по смыслу нам-бы хватило o(1). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 12:48 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Почему соврменные JMS/MQ системы незаменимы? MQ скрывают сетевой слой. Вот ты отправил запрос. А он дошёл? А ответ? А если ошибка в сетевом слое? А если ошибка в сервере- что делать? Отправлять заново? А если нам только сказать - то почему мы должны ждать когда сервер очухается и тыкаться в труп? А если сервер после падения поменяет свой IP-адрес - как мы сможем корретно повторить отправку недоставленного сообщения? Там ещё есть сообщения - типа прокси разных и т.п. Вот на все эти вопросы MQ ответила за нас (хорошо или нет- другой вопрос). PS: О чём вы тут 7 страниц пишете- я не понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 13:03 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Alexey Tomin PS: О чём вы тут 7 страниц пишете- я не понимаю. Шатаешь основы? Ну ты мог сразу сказать. Поскольку задача двух генералов не имеет решения то и все ваши очереди это фигня полная и они работать не могут. И TCP тоже работать не может. А ааботают не благодаря - а вопреки. Не? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 13:11 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Alexey Tomin mayton Почему соврменные JMS/MQ системы незаменимы? MQ скрывают сетевой слой. Вот ты отправил запрос. А он дошёл? А ответ? А если ошибка в сетевом слое? А если ошибка в сервере- что делать? Отправлять заново? А если нам только сказать - то почему мы должны ждать когда сервер очухается и тыкаться в труп? А если сервер после падения поменяет свой IP-адрес - как мы сможем корретно повторить отправку недоставленного сообщения? Там ещё есть сообщения - типа прокси разных и т.п. Вот на все эти вопросы MQ ответила за нас (хорошо или нет- другой вопрос). PS: О чём вы тут 7 страниц пишете- я не понимаю. Вы живете в каком-то идеальном мире. Ну никак MQ не отвечает на эти вопросы. Т.к. брокер тоже может упасть, поменять адрес и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 13:13 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov Т.к. брокер тоже может упасть, Топик про МОМ. Это промежуточный слой между ПРИЛОЖЕНИЯМИ. Если приложение проспало завтрак, то его подадут ему позже. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 13:27 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov, Я вам такую вещь скажу - там где можно обходиться без МОМ, надо обходиться без МОМ, не надо вводить лишнюю точку отказа и мониторинга. А приходится вводить в следующих случаях: - системы не могут интегрироваться с собой напрямую - либо протоколы не позволяют, либо формат не подогнать; - из-за ограничений производительности систем. Например тысячи клиентов одновременно шлют сообщения, которые надо записать в БД. Если каждое в отдельной транзакции писать, то БД умрет - поэтому надо батчами работать, буферизировать в очередях; - если надо делать какую-то массовую рассылку. Реализовывать логику рассылки на источнике не очень идея, т.к. при добавлении потребителей на других протоколах надо будет источник дорабатывать. Можете дополнять список. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 13:28 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Roman Osipov Т.к. брокер тоже может упасть, Топик про МОМ. Это промежуточный слой между ПРИЛОЖЕНИЯМИ. Если приложение проспало завтрак, то его подадут ему позже. Ну не нравится термин брокер, то перефразирую - MOM может отказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 13:29 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Друзья. Мы еще даже не добрались до кластеров и кворумов. А вы уже подрались. Подождите. Вот там где точно драка будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 13:39 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov там где можно обходиться без МОМ, надо обходиться без МОМ Можно и от автомобилей отказаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 13:57 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov Можете дополнять список. Без МОМ ты всегда должен быть он лайн. Тебе это и сказали выше. А ты в бутылку полез. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 13:59 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Roman Osipov Можете дополнять список. Без МОМ ты всегда должен быть он лайн. Тебе это и сказали выше. А ты в бутылку полез. Не должен. И без МОМ системы приемники могут быть оффлайн. Надо понимать, что наличие МОМ не избавляет от необходимости реализовывать очереди отправки сообщений на источнике с возможностью переотправки при отказах приемника (отказавшим приемником может быть как МОМ, так и целевая система). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:08 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov, Ну дак ты докажи. Я пишу приложение Заказать пиццу на предприятии с 1500 человек. Есть шина ака МОМ. Очередь вне моего приложения. И маршрутизация. 5 строчек и готово. Разве не избавило меня от необходимости?...... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:12 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov, Отказ МОМ это как лечение головной боли гильотиной. Это оффтоп. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:13 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Легко: - МОМ(очередь) падает/отказывает; - при отправке в МОМ сообщения получаешь какой-нибудь Connection Timeout; - при отсутствии на источнике очереди и переотправки переходишь к отправке следующего сообщения. Твое сообщение потеряно, даже при наличии в архитектуре MOM. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:17 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov Вы живете в каком-то идеальном мире. Ну никак MQ не отвечает на эти вопросы. Т.к. брокер тоже может упасть, поменять адрес и т.д. Да. MQ должен быть ОЧЕНЬ устойчивым. В т.ч. мы делегируем вопросы надёжности брокеру. В этом есть логика - вместо 10 своих микросервисов, мы зависим только от одной кафки. И это повышает надёжность, если только ваша команда не круче авторов этой самой кафки :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:19 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov PetroNotC Sharp, Легко: - МОМ(очередь) падает/отказывает; - при отправке в МОМ сообщения получаешь какой-нибудь Connection Timeout; - при отсутствии на источнике очереди и переотправки переходишь к отправке следующего сообщения. Твое сообщение потеряно, даже при наличии в архитектуре MOM. Если МОМ требуется по архитектуре, то он либо рукописный либо ИЗ КАРОПКИ. Ответ очевиден. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:23 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Alexey Tomin, Должен и будет ли - это две абсолютно разные вещи. В идеальном мире может быть. Но у нас все может случиться и гарантий доступности МОМ/брокера на 100% никто не даст. А если он откажет, то будут потеряны сообщения. Т.е. либо мы принимаем факт возможности потери сообщений, либо реализуем таки очередь на источнике с переотправкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:23 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp можно ничего не знать про сабж, но по вашему посту видно что вы предвзяты. Написали только отрицательное. Я когда в прошлый раз спрашивал про спеки OpenAPI, что со стороны жавы непонятно как разные статусы реализовывать, ибо получаются разные модели, мне начали втирать, что для общения p2p нужно не REST использовать а JMS (конкретно RabbitMQ), и типа пофиг что там накладные расходы выше чем в HTTP, и что оно от таймаутов никак не избавляет и никак не масштабируется. Тут нашелся человек который на грабли налетел, а оказывается что он все врет ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:24 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov либо реализуем Предлагаю реализовать СУБД. Тоже может отказать. И самолеты падают ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:26 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov Т.е. либо мы принимаем факт возможности потери сообщений, либо реализуем таки очередь на источнике с переотправкой. 100% гарантий никто не даст. Тут ещё вот что. Если упала Кафка, то любой девопс сможет найти, как её починить в любой момент дня и ночи. А вот если проблема будет в каком-то из микросервисов - то скорее всего бы пришлось будить автора и он судорожно бы фиксил это. Если ещё не уволился ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 17:33 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
[quot Alexey Tomin#22380833] Roman Osipov Если упала Кафка, то любой девопс сможет найти, как её починить в любой момент дня и ночи. Если ещё не уволился Спасибо, посмеялся! Распечатаю и повешу на стенам нашим девопсам:) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 17:41 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
TCP тоже построен поверх технологии которая может терять пакеты. Это - почти философская дилемма. Что-бы мы не строили - месседжи теряются. Мне кажется что наиболее вероятная точка потерь месседжей - это сам consumer. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
В не-транзакционном режиме, после которого мы прочитали пачку может случится (хопа!) что-то нежданное .. например OOM exception и мы падаем. С точки зрения например Kafka брокера мы уже пачку прочитали. И информацию о том что мы падали и что-то теряли знает только consumer. Или его логи. Или его некое персистентное состояние (если таковое вообще проектировалось). Если он - просто некая функция типа CloudFunc или Lambda то ничего он не знает и не помнит. Он может даже поднимется не в том докере или не втом хосте или не втом дата-центре. Это КМК тот кейс когда КОНКРЕТНО разработчик несет отвественность за целосность месседжей. Другие кейсы с падением брокеров или ребалансировкой мы еще можем например свалить на технолгию или девопсов или просто сырость системного ПО. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 17:55 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton На вход сетевой карты заходит Ethernet frame. Мы могли-бы уже его сразу взять в работу. IP-стек не может взять пакет в работу. Всё, что он может - поместить данные из пакета в структуры какого-то из сотен-тысяч сокетов. "Вопрос на миллион!": кого "будить" после заполнения этих самых структур? P.S. Вы правда думаете, что только из-за своей тупости разработчики не смогли сделать "это" сразу? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 17:59 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Что-бы мы не строили - месседжи теряются. [/src] . Доставка без потерь вообще не проблема. По тому же http отправил, а клиент возвращает ответ только тогда, когда точно принял и обработал сообщение - источник знает доставлено ли сообщение и может принять решение на передоставку или переход к следующему сообщению. В случае с Kafka коммитим оффсеты только когда, когда сообщения гарантированно обработались. Фундаментальные трудные проблемы - это устранение дублей и упорядоченная доставка в условиях конкуррентной отказоустойчивости. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 18:13 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov Доставка без потерь вообще не проблема. По тому же http отправил, а клиент возвращает ответ только тогда, когда точно принял и обработал сообщение - источник знает доставлено ли сообщение и может принять решение на передоставку или переход к следующему сообщению. Обсуждать http здесь - это маветон. Помнишь анекдот про Вовочку который всю религию к *** свёл? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 18:26 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton На вход сетевой карты заходит Ethernet frame. Мы могли-бы уже его сразу взять в работу. IP-стек не может взять пакет в работу. Всё, что он может - поместить данные из пакета в структуры какого-то из сотен-тысяч сокетов. "Вопрос на миллион!": кого "будить" после заполнения этих самых структур? P.S. Вы правда думаете, что только из-за своей тупости разработчики не смогли сделать "это" сразу? Я не говорил что они тупые. Можно в качестве примера взять ОС Cisco. Я думаю что там есть программно аппаратные решения которые ставили своей задачей синхронизм в обработке Ethernet frames. Нет я не говорю что это надо срочно переносить в general purpose ОС. Но уж коли долго говорим о накладных расходах на мессенжинг с 5000 каналами или подписками то мы могли-бы обсудить и альтернативы. Все составляющие протокола TCP нигде в своей сетевой части не требуют ни процессов ни потоков, ни зеленых потоков ни корутин. В моём понимании это просто команда к переводу некого конечного автомата в новое состояние. Сможем реализовать это в event-drivern - поддержим и 64к сокетов. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 18:36 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov Фундаментальные трудные проблемы - это устранение дублей и упорядоченная доставка в условиях конкуррентной отказоустойчивости. В моём понимании идеальные продюсер и консюмер - это например модель Primary-Standby(Physical) для Oracle. Правда эта модель требует физического хранилища и на продюсерах и на консюмерах. И это - точка-точка. Но если договорится о retention периоде например 24 часа - то получается надёжный спосособ передачи информации. И здесь будет гарантирован exactly once. И ни одно сообщение не потеряется. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 18:41 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
[quote Roman Osipov#22380838] Alexey Tomin Roman Osipov Если упала Кафка, то любой девопс сможет найти, как её починить в любой момент дня и ночи. Если ещё не уволился Спасибо, посмеялся! Распечатаю и повешу на стенам нашим девопсам:) Мы уже смеемся. Ты Message ориентированное ПО предложил заменить на Pooling))) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 18:44 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
[quot PetroNotC Sharp#22380897] Roman Osipov пропущено... Мы уже смеемся. Ты Message ориентированное ПО предложил заменить на Pooling))) Понятно. Вам стоит освежить информацию, в чем разница между pool и push моделями. Pool мной не упоминался. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 18:54 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Можно в качестве примера взять ОС Cisco. Я думаю что там есть программно аппаратные решения которые ставили своей задачей синхронизм в обработке Ethernet frames. Но зато вполне известны чуть меньше чем стопиццот вариантов быстрого сетевого ввода-вывода в операционных системах общего назначения. Вы не поверите, но они все разные!Все составляющие протокола TCP нигде в своей сетевой части не требуют ни процессов ни потоков, ни зеленых потоков ни корутин. В моём понимании это просто команда к переводу некого конечного автомата в новое состояние. Сможем реализовать это в event-drivern - поддержим и 64к сокетов.У вас "конечный автомат" IP-стека и "конечный автомат" планировщика потоков. Проигнорируем, для упрощения, "конечный автомат" управления памятью. Каким образом один конечный автомат может перевести другой конечный автомат в совершенно определённое состояние, если они - два чёрных ящика? А ведь это не роутер, который только сетью и занимается, а общецелевая система и для неё всегда найдётся работа. И самая разная. И приоритетная - в том числе. P.S.Читаю вас и вспоминаю себя, наивного, примерно четверть века назад: (восторженный я): ... и вот это и вот это! (слегка усталый инженер вендора): IBM - большая контора. У неё есть много решений и далеко не все они удачные. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 18:55 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov, Ну да освежи. Расскажи. Ты же отстаиваешь точку зрения. Я свою высказал - если требования к ИС подходят для МОМ то надо использовать)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 18:57 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
P.P.S.А ещё плохо путать poLL и poOL. Но полезно пользоваться предпросмотром для перечитывания сообщения перед отправкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 18:59 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Ну может там новая технология. Мы не знаем что он предложил вместо MQ ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 19:05 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Да, бывает, пишу невнимательно параллельно с кодингом. Кодирование конечно в приоритете. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 19:09 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Basil A. Sidorov У вас "конечный автомат" IP-стека и "конечный автомат" планировщика потоков. Проигнорируем, для упрощения, "конечный автомат" управления памятью. Каким образом один конечный автомат может перевести другой конечный автомат в совершенно определённое состояние, если они - два чёрных ящика? А ведь это не роутер, который только сетью и занимается, а общецелевая система и для неё всегда найдётся работа. И самая разная. И приоритетная - в том числе. Я вобщем беру за образец аппаратуру 20-го века, в которой не было мультипоточки и сеть (модемная и коаксиальная и прочая проводная) как-то работала. И менеджер памяти как-то успевал. P.S. Спасибо что "омолодил" меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 19:10 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
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). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 08:01 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
[quote Roman Osipov#22380838] Alexey Tomin Roman Osipov Если упала Кафка, то любой девопс сможет найти, как её починить в любой момент дня и ночи. Если ещё не уволился Спасибо, посмеялся! Распечатаю и повешу на стенам нашим девопсам:) На прошлой работе перешли на кафку именно с такими аргументами от девопсов. Типа "ваше ПО фиг знает как чинить, а кафку мы прям не приходя в сознание поднимем". В целом они не обманули. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 08:26 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Все устройства, которые вы перечислили, умели генерировать прерывания. Была даже проблема разделения прерываний. И были решения в виде многопортовых карт для RS-232. Широко известная в узких кругах Moxa, если правильно помню название. Иногда можно было и без прерываний. Коммуникационная программа для модема могла считать, что система принадлежит ей монопольно. Ну я-ж к этому и клоню. Функция-обработчик прерывания играет роль некого хендлера сетевых событий (на низком уровне). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 09:41 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Функция-обработчик прерывания играет роль некого хендлера сетевых событий (на низком уровне). На многогигабитных картах, в некоторых ситуациях, режим опроса "выгоднее" режима прерываний. Т.е. проблема не в механизме получения информации "приняты данные", а в сложной и нетривиальной задаче планирования потоков исполнения. Erlang со товарищи исходят из того, что "мы сами, на коленке, сделаем лучше". Возможно. Возможно даже, что лет двадцать-тридцать назад это было правдой. Сейчас - вообще не факт. Поэтому ваши рассуждения о приехавших пакетах, лично меня - вообще не разу не убеждают. Наоборот - вгоняют в недоумение и в краску: "Ну приехал. Дальше-то - что? Как пробиться в соседнюю камеру?" ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 10:46 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
[quot Alexey Tomin#22381037] Roman Osipov пропущено... На прошлой работе перешли на кафку именно с такими аргументами от девопсов. Типа "ваше ПО фиг знает как чинить, а кафку мы прям не приходя в сознание поднимем". В целом они не обманули. 2 Roman если вашим девопасам очень смешно, в следующий раз дай им ссылку на репозиторий и переведи таску на на них упало приложение от самописной очереди. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 11:34 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
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 Т.е. на стороне источника/продюсера просто обязана быть очередь переотправки сообщений, пусть в крайнем случае состоящая из одного последнего сообщения. И хоть с брокером, хоть без брокера вам надо будет в любом случае реализовать функционал переотправки на источнике, если в требованиях есть обязательность доставки сообщений. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 11:50 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov, Ты нас не пугай. Работа ровно так как мы работаем с бд. try Отправка ... Если у меня не было райзе, значит на моей стороне все нормально и зона ответственности на субд. При MQ или МОМ архитектуре ответственность тоже не на мне. Сообщение ушло в МОМ. ... Получается ты любитель велосипеда и очередей за счет заказчика. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 12:20 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov Попробую последний раз объяснить. Если непонятно, будет, то уже ничего не поможет Roman Osipov И хоть с брокером, хоть без брокера вам надо будет в любом случае реализовать функционал переотправки на источнике, если в требованиях есть обязательность доставки сообщений. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 12:21 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, По вашим словам сложно написать Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 12:28 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Roman Osipov, Мы можем по простому и на пальцах) Чем отличается 3х звенка на 3х хостах Клиент1 - - АппСервер - - СУБД ОТ Клиент1 - - МОМ - - Client2 ? Зачем надежностью ддосить даную тему? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 12:36 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton Функция-обработчик прерывания играет роль некого хендлера сетевых событий (на низком уровне). На многогигабитных картах, в некоторых ситуациях, режим опроса "выгоднее" режима прерываний. Т.е. проблема не в механизме получения информации "приняты данные", а в сложной и нетривиальной задаче планирования потоков исполнения. Erlang со товарищи исходят из того, что "мы сами, на коленке, сделаем лучше". Возможно. Возможно даже, что лет двадцать-тридцать назад это было правдой. Сейчас - вообще не факт. Поэтому ваши рассуждения о приехавших пакетах, лично меня - вообще не разу не убеждают. Наоборот - вгоняют в недоумение и в краску: "Ну приехал. Дальше-то - что? Как пробиться в соседнюю камеру?" Ладно. Забудь. Это - мои мечты об event-driven на всех уровнях системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 12:44 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton Это - мои мечты об event-driven на всех уровнях системы. Самые быстрые "прерывания" это M(essage)S(ending)I(nterrupt). Выделяется крохотная область и процессор реагирует на запись в неё специальным образом (тоже оптимизировано для работы в защищённом режиме). Быстрее, вроде, уже некуда. И уж событийно по самые помидоры. Аппаратно всё необходимое появилось, если правильно помню, в i486. Вот только проблему планирования потоков это никак не отменяет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 13:24 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp По вашим словам сложно написать Код: java 1.
Чет не пойму, стеб ли это или банальное невежество... Трудности написать г.код нет никакой, однако есть определенный набор "проблем", которые нужно решить прежде чем этот г.код писать, проблемы примерно такие: - определиться что же именно отправлять: -- можно же слать просто ключи, чтобы потом те кто нужно за данными ходил -- можно ввести понятие "события" (тут уже непонятно почему потребитель должен знать о событиях в моей системе и я буду должен поддерживать обратную совместимость) -- можно отправлять 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/ - бледнолицый пишет лог в ту же БД, в которой происходят изменения, тормознуто, но зато надежно, правда потом непонятно каким образом этот лог разбирать ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2021, 06:41 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей, что сказать тo желаешь, покороче ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2021, 19:29 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Я выше отвечал на вариант Polling #самописканаколенка То есть что лучше Код: java 1.
Или Код: java 1.
Вы когда идете в отпуск, вы же решаете, поедете на машине или на самолете. А трудности есть конечно. Как везде. Кому счас легко (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2021, 07:10 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Андрей Панфилов, Я выше отвечал на вариант Polling #самописканаколенка То есть что лучше Код: java 1.
Или Код: java 1.
Вы когда идете в отпуск, вы же решаете, поедете на машине или на самолете. А трудности есть конечно. Как везде. Кому счас легко (с) Если разговаривать про отпуск и забыть про факт, что сейчас в Австралии локдауны то тут то там, то могу сказать что машина машине рознь, особенно учитывая, что я люблю по всяким ибеням ездить, т.е. для путешествий на вменяемые расстояния я предпочту старенькую тойоту любой другой марке. Что касается "топика про очереди в целом": учитывая то, как сейчас работает опенсорс, можно с уверенностью сказать, что из коробки вообще ничерта не работает, т.е. если связался с опенсорсом, то будь готов постоянно читать исходники и унижаться при попытке что-то отправить в апстрим, на фоне всего этого IBM MQ выглядит просто космолетом - всего-то нужно XA настроить и забыть навсегда, а опенсорсный пепелац нужно чинить всегда ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2021, 09:36 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Ты наверное имел ввиду не опенсорс, а платное и бесплатное? Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2021, 10:12 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Когда приходишь в магазин выбирать комп, то первый вопрос - "какой суммой располагаете?". Думаю это не случайно. Товар сразу делится на два сегмента - премиум класса и нет. Значит тут с опенсорсом точно также. Это входной параметр а не параметер внутри алгоритма выбора. Есть две линейки продуктов. И товар есть как внутри опенсорс и так и вне его. Не на один же товар молится. Имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2021, 10:19 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей Панфилов PetroNotC Sharp Андрей Панфилов, Я выше отвечал на вариант Polling #самописканаколенка То есть что лучше Код: java 1.
Или Код: java 1.
Вы когда идете в отпуск, вы же решаете, поедете на машине или на самолете. А трудности есть конечно. Как везде. Кому счас легко (с) Если разговаривать про отпуск и забыть про факт, что сейчас в Австралии локдауны то тут то там, то могу сказать что машина машине рознь, особенно учитывая, что я люблю по всяким ибеням ездить, т.е. для путешествий на вменяемые расстояния я предпочту старенькую тойоту любой другой марке. Что касается "топика про очереди в целом": учитывая то, как сейчас работает опенсорс, можно с уверенностью сказать, что из коробки вообще ничерта не работает, т.е. если связался с опенсорсом, то будь готов постоянно читать исходники и унижаться при поп ытке что-то отправить в апстрим, на фоне всего этого IBM MQ выглядит просто космолетом - всего-то нужно XA настроить и забыть навсегда, а опенсорсный пепелац нужно чинить всегда XA-транзакции во первых гораздо медленнее работают, чем обычные, т.к. коммит двухфазный. Во вторых имеет свойство подвисать, например, в Oracle. Рекомендую, там где только возможно обходиться без XA, благо есть приемлемые способы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2021, 10:24 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Могу ошибаться но по моему от XA транзакций все отказываются. На новых проектах я их не встречал нигде. И где были раньше - их выпиливают. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2021, 10:41 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
mayton, Они вообще противоречат MOM на основе подписок/публикаций. Имхо. Пишется код совсем другой чем на основе бизнес или физических транзакциях. Также как код на основе длинных транзакций по 8 часов отличается от кода для веб транзакции коротких по 0,2 сек ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2021, 10:44 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Мы в *телекомах делали тразнакции и по 24 часа и более. Там - вообще другие подходы. База "выкручивается" настройками в другой режим. Подготавливаются различные mviews. И по большей части мы эти писали на PL/SQL. Да и это вообще не про МОМ/MQ. Это скорее ближе к SpringBatch и пакетным заданиями. + ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2021, 10:51 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Есть два вида МОМ - непосредственная доставка сообщений и метод публикации/подписки. Если в первом варианте еще можно присобачить транзакции, то во втором как бы теряется их смысл. Вот пример решения в МОМ транзакции авторПервый запрос транзакции кошелька получен службой кошелька. Он проверяет запрос, сверяется с текущим балансом пользователя. Если это действительно так, то транзакция обрабатывается и в Kafka создается новое задание. При успешном подтверждении от Kafka того, что задание создано, транзакция помечается как успешная, и клиенту возвращается ответ. В случае сбоя Kafka транзакция откатывается, а сбой возвращается клиенту. Потребительский сервис будет читать из темы Kafka и совершать фактическую транзакцию со сторонним платежным провайдером. При успешной транзакции его статус синхронизируется с исходной службой кошелька, что закрывает цикл. При неудачной транзакции задание транзакции помещается в очередь отказов в Kafka. Вся входящая транзакция для пользователя, чье задание находится в очереди на сбой, не обрабатывается и напрямую отправляется в очередь сбоев, тем самым поддерживая порядок транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2021, 10:59 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Когда приходишь в магазин выбирать комп, то первый вопрос - "какой суммой располагаете?". Думаю это не случайно. Товар сразу делится на два сегмента - премиум класса и нет. Значит тут с опенсорсом точно также. Это входной параметр а не параметер внутри алгоритма выбора. Есть две линейки продуктов. И товар есть как внутри опенсорс и так и вне его. Не на один же товар молится. Имхо в моем компьютерном магазине все просто: есть только две модели телефона (прошлогодняя и новая) в разных редакциях и две модели латопов Никакого деления на классы нет. То же самое с MQ: есть ПО которое просто работает ровно так как ожидается (можно хоть из сеттеров сообщения слать), а есть то, с котором должна постоянно пердолиться пачка пионеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2021, 11:19 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Магазин только для белых)) Я понял) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2021, 11:29 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2021, 04:41 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Вот пример решения в МОМ транзакции авторПервый запрос транзакции кошелька получен службой кошелька. Он проверяет запрос, сверяется с текущим балансом пользователя. Если это действительно так, то транзакция обрабатывается и в Kafka создается новое задание. При успешном подтверждении от Kafka того, что задание создано, транзакция помечается как успешная, и клиенту возвращается ответ. В случае сбоя Kafka транзакция откатывается, а сбой возвращается клиенту. Потребительский сервис будет читать из темы Kafka и совершать фактическую транзакцию со сторонним платежным провайдером. При успешной транзакции его статус синхронизируется с исходной службой кошелька, что закрывает цикл. При неудачной транзакции задание транзакции помещается в очередь отказов в Kafka. Вся входящая транзакция для пользователя, чье задание находится в очереди на сбой, не обрабатывается и напрямую отправляется в очередь сбоев, тем самым поддерживая порядок транзакции. положительные сценарии совершенно ни о чем не говорят, попробуй, например, расписать "проверяет запрос, сверяется с текущим балансом пользователя" учитывая что пользователь в данный момент времени выполняет еще какие-то транзакции ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2021, 04:44 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей Панфилов "проверяет запрос, сверяется с текущим балансом пользователя" - отправить запрос в шину или МОМ "ДАЙ БАЛАНС ЛИЧНОГО КАБИНЕТА ПЕТРОВА" - получив число через 10 минут по подписке сверяет его с КРЕДИТНОЙ НАДЕЖНОСТЬЮ ПЕТРОВА. (Так как MQ системы не консистентны) - отправляет положительное или отрицательное решение дальше в шину в виде заявки клиента. .... Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2021, 08:32 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Именно поэтому существует отрицательный баланс в жизни на дебетовке и симках ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2021, 08:37 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Скажу крамольную мысль для обсуждения, но в MOM нет транзакций. Как в ерланге нет синхронного кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2021, 08:38 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Именно поэтому существует отрицательный баланс в жизни на дебетовке и симках ты совершенно зря решил подпустить дешевого понта: у банков своя собственная история и аналог "двухфазного коммита" у них во все поля, у опсосов же существуют физические ограничения на доставку CDR и правильность данных в этих CDR оставляет желать лучшего, к тому же существуют определенные ограничения со стороны законодательства (я например по три месяца счета не оплачиваю, просто потому что мне не нравится их сайт, однако телефон мне никто не отваживается отключить) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2021, 09:27 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp - отправить запрос в шину или МОМ "ДАЙ БАЛАНС ЛИЧНОГО КАБИНЕТА ПЕТРОВА" - получив число через 10 минут по подписке сверяет его с КРЕДИТНОЙ НАДЕЖНОСТЬЮ ПЕТРОВА. (Так как MQ системы не консистентны) - отправляет положительное или отрицательное решение дальше в шину в виде заявки клиента. .... Так? угу, через минуту клиент уже точно решил, что ну его нахер этих дебилов, которые обработать запрос толком не могут. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2021, 09:35 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей Панфилов, А причем тут банки? Конечно, банки без транзакций это моветон. Я выше приводил МОМ в госуслугах. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2021, 10:12 |
|
Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
|
|||
---|---|---|---|
#18+
Андрей Панфилов PetroNotC Sharp - отправить запрос в шину или МОМ "ДАЙ БАЛАНС ЛИЧНОГО КАБИНЕТА ПЕТРОВА" - получив число через 10 минут по подписке сверяет его с КРЕДИТНОЙ НАДЕЖНОСТЬЮ ПЕТРОВА. (Так как MQ системы не консистентны) - отправляет положительное или отрицательное решение дальше в шину в виде заявки клиента. .... Так? угу, через минуту клиент уже точно решил, что ну его нахер этих дебилов, которые обработать запрос толком не могут. А первая характеристика МОМ - это НЕУСТОЙЧИВАЯ связь. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2021, 10:15 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120331]: |
0ms |
get settings: |
23ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
101ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
3653ms |
get tp. blocked users: |
2ms |
others: | 364ms |
total: | 4181ms |
0 / 0 |