|
Зачем мы вообще используем 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 |
|
|
start [/forum/topic.php?fid=59&msg=40103042&tid=2120331]: |
0ms |
get settings: |
19ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
46ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
421ms |
get tp. blocked users: |
0ms |
others: | 280ms |
total: | 776ms |
0 / 0 |