|
Зачем мы вообще используем 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 |
|
|
start [/forum/topic.php?fid=59&msg=40101735&tid=2120331]: |
0ms |
get settings: |
27ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
502ms |
get tp. blocked users: |
2ms |
others: | 323ms |
total: | 926ms |
0 / 0 |