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

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

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



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

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

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

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


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


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


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


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


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

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


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


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


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

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


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

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

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

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


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


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

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

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

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

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


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

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

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

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

угу, через минуту клиент уже точно решил, что ну его нахер этих дебилов, которые обработать запрос толком не могут.
...
Рейтинг: 0 / 0
25 сообщений из 228, страница 9 из 10
Форумы / Java [игнор отключен] [закрыт для гостей] / Зачем мы вообще используем JMS/MQ системы? (четверговый топик)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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