home.social

#outboxпаттерн — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #outboxпаттерн, aggregated by home.social.

fetched live
  1. Очередь на Postgres: почему Kafka не нужна

    Это история про архитектуру одного сервиса. Рассказанная до конца, а не только до того места, где обычно останавливаются статьи про архитектуру. Намеренно упрощена бизнес-логика, чтобы не размывать основной смысл. Сервис принимал запрос, писал строку в базу, отвечал 201. Никто не пишет статей про такой код, потому что в нём нечего обсуждать. Рано или поздно один сервис перестаёт быть одним сервисом. Появляется второй, которому важно узнать о том же событии — обсчитать аналитику, обновить поисковый индекс, отправить письмо. Возникает соблазн просто дёрнуть его по HTTP, и это первая ошибка, которую все совершают и все же исправляют: синхронный вызов делает вас настолько же надёжным, насколько надёжен самый хрупкий из ваших соседей. Значит нужно асинхронно, через брокер. И почти всегда этим брокером оказывается Kafka.

    habr.com/ru/articles/1082062/

    #kafka #postgres #debezium #net #c# #микросервисы #wal #outboxпаттерн

  2. Избавляемся от потерянных событий в микросервисах — как я написал свой Spring Starter для Outbox/Inbox

    Всем привет! Меня зовут Григорий, и недавно при разработке своего микросервисного приложения я нашёл уязвимость — сообщения, пересылаемые между сервисами, имели высокий риск быть необработанными. Решением стал паттерны Outbox и Inbox. Однако, когда я стал их реализовывать во всех приложениях, то понял, что просто копирую и вставляю код. Чтобы это исправить, я решил написать свой стартер.

    habr.com/ru/articles/1064466/

    #java #spring #springstarter #outboxпаттерн #inboxпаттерн #dlq #kafka #rabbitmq

  3. Как мы четыре раза переписали Outbox

    Привет! Я Ильдус Тукаев, разработчик в команде образовательной платформы Т-Банка. Мы помогаем школьникам, студентам, молодым специалистам и сотрудникам получать знания и качать свои софт и хард навыки. Основной язык у нас Go, но сегодня расскажу больше про архитектурную тему: как у нас в команде использовался паттерн Outbox и как он эволюционировал. За полтора года реализация Outbox прошла четыре итерации. По пути мы ловили VACUUM, который останавливал сервис на три часа, теряли 5% событий за полтора дня и заваливали поддержку обращениями. Расскажу, какие реализации мы пробовали, на какие грабли наступали и почему остановились на варианте, который сами же не считаем идеальным.

    habr.com/ru/companies/tbank/ar

    #outbox #outboxпаттерн #outbox_pattern

  4. [Перевод] Транзакционный паттерн Outbox: теперь с «оптимистичной отправкой»

    Transactional outbox обычно внедряют ради консистентности, а в итоге получают новый источник «случайной» задержки и постоянный фон нагрузки на базу из-за поллинга. В этой короткой статье разберем простой поворот идеи: не выбрасывая outbox и relay-процесс, попробовать отправлять событие сразу после коммита и превращать поллинг в редкий fallback. Посмотрим, что это даёт по задержкам и нагрузке, и какие неприятные нюансы всплывают с порядком доставки, дублями и наблюдаемостью. Открыть разбор

    habr.com/ru/companies/otus/art

    #транзакционный_outbox #outboxпаттерн #доставка_событий #публикация_событий #согласованность_данных #идемпотентность

  5. Паттерн Transactional Outbox на примере двух микросервисов на java

    Всем привет! В данной статье будет описан один из возможных вариантов реализации паттерна outbox transactional. План данной статьи такой. Вначале немного теории, а потом на примере двух микросервисов будет показала реализация данного паттерна с помощью debezium и kafka. Данная статья будет полезна для новичков, которые не встречались с данным паттерном. Весь код микросервисов будет доступен по ссылкам. Но вначале немного теории. Самый главный вопрос зачем нужен данный паттерн и какую он решает задачу. Паттерн Outbox – используется в распределенных транзакциях, то есть в транзакциях, которые проходят и затрагивают несколько микровервисов, для обеспечения гарантированной доставки сообщения от одного микросервиса до другого. Данный паттерн используется там, где очень критично чтобы сообщение не потерялось, даже при сбоях в системе. Outbox паттерн получил распространение именно в микросервисной архитектуре, где нет возможности с помощью одной аннотации обеспечить транзакционность какого-то метода и возможный откат всей транзакции в рамках нескольких микросервисов. Теперь перейдем к практике. Допустим у нас имеется два микросервиса: order-servic, в котором клиент заказывает какой-то товар и bank-service, в котором происходит оплата за этот товар. Весь код микросервисов будет доступен по ссылкам. Задача в том, чтобы при заказе товара обязательно произошло списание денег за него или если денег недостаточно или возникла ошибка на стороне банка микросервис по заказам узнал об этом. Для реализации этого паттерна я буду использовать debezium и kafka.

    habr.com/ru/articles/991934/

    #java #паттерны_проектирования #outbox #outboxпаттерн #transactional_outbox #kafkaconnect #debezium

  6. [Перевод] Паттерн Outbox для надежного обмена сообщениями в микросервисах

    Работа с микросервисами достаточно сложная, как и с любой распределенной системой. Уменьшение количества возможных точек отказа должно быть одной из целей инженера, который проектирует распределенную систему. В этой статье мы постараемся достичь именно этого, используя паттерн Outbox.

    habr.com/ru/articles/969512/

    #net #net_core #csharp #csharpnet #c# #patterns #pattern #outbox #outboxпаттерн

Share on Mastodon

Enter the server where you have an account.