|
Зачем мы вообще используем 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 |
|
|
start [/forum/topic.php?fid=59&msg=40102937&tid=2120331]: |
0ms |
get settings: |
18ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
140ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
550ms |
get tp. blocked users: |
1ms |
others: | 403ms |
total: | 1124ms |
0 / 0 |