Event-Driven Architecture в контексте микросервисов: основные паттерны | Николай Голов, ManyChat

  Рет қаралды 25,511

AvitoTech

AvitoTech

4 жыл бұрын

7 декабря в офисе Авито прошел пятый митап в серии Backend United, получивший название «Шаурма». Эта встреча ориентирована на архитекторов и на разработчиков.
О чем был доклад Николая:
« Допустим есть микросервисы, есть шина данных, дальше все должно быть очевидным - Event-Driven Architecture. Но не все так просто, поскольку Event-Driven Architecture - это несколько паттернов, с взаимоисключающими паттернами. Event Notification/Event-Carried State Transfer/Event-Sourcing/CQRS - 4 паттерна, 4 подхода, в чём-то схожие, а в чём-то взаимоисключающие. Я расскажу, чем отличаются эти паттерны, что мы пытались исплользовать, и что получили в итоге».
Подпишитесь на канал, соцсети и блоги AvitoTech, чтобы узнавать больше о технологиях Авито 👇🏻
ВК: avitotech
Твиттер: / avitotech
Телеграм: t.me/avitotech
Хабр: habr.com/ru/company/avito/
Медиум (eng): / avitotech
Гитхаб: github.com/avito-tech/
Сайт: avito.tech/

Пікірлер: 21
@yabnku
@yabnku 3 жыл бұрын
Коля, большое спасибо за то, что делишься знаниями и опытом. Очень важная теория изложена в докладе. Нашел много ответов на вопросы, возникшие в процессе обдумывания микросервисной архитектуры.
@user-oi1zl6de8i
@user-oi1zl6de8i 2 жыл бұрын
Отличный доклад. Николай - молодец!
@evgeniichornyi678
@evgeniichornyi678 3 жыл бұрын
Отличный доклад - автор молодец шарит!
@AndreyDelay
@AndreyDelay Жыл бұрын
Прекрасный доклад , спасибо автору👍🏻
@-dubok-
@-dubok- 9 ай бұрын
Тоже пришёл к идее, что разработка делится на event-driven и command-driven, или, что равнозначно - асинхронный и синхронный подходы. В основном все программируют в синхронном виде. Но практика показывает, что асинхронные сервера гораздо быстрее и естественнее. Синхронный подход не нормален для распределённых архитектур и для серверов в целом. Синхронный подход всё соединяет единой лапшой связей, и получается спагетти-монстр, монолит, хоть и сшитый из сетевых соединений между модулями. А всё потому, что команды создают ПРЯМЫЕ связи между компонентами. Компоненты должны знать друг о друге, что и создаёт связность, от которой многие хотели бы избавиться при распределённой серверной архитектуре. Всё это в целом говорит о том, что сервера необходимо программировать асинхронными и событийно-ориентированными. А иначе вас ждут боль и страдания. Синхронное программирование годится только для программирования отдельных функций, но никак не серверного кода. В чём коренное отличие команды и события? Команда (как и любое сообщение) имеет адресата, а событие адресата не имеет! Событие - это сообщение, не имеющее адресата. Это даёт возможность каждому модулю не думать о других модулях. Он просто отправляет события, и ему всё равно, как и кто его обработает. Это убирает прямые связи и зависимости между модулями, позволяя легко их добавлять или убирать без вреда для других модулей. Это ли не мечта программиста? Уверен, event-driven подход - это будущее, к которому все рано или поздно придут при написании серверного кода. Сам пока не реализовал эту идею, но она мне кажется очень естественной и правильной. Нахожусь в стадии доработки архитектурной идеи своего node js мини-фреймворка на этом подходе.
@cinderellarouge
@cinderellarouge 7 ай бұрын
Я кстати ,знаю откуда это все идет , с какой темы😂😂😂😂 просто это было давно придумано из другой схемы.
@keviny0ung
@keviny0ung 9 ай бұрын
бедный оператор
@alexanderk3762
@alexanderk3762 3 жыл бұрын
При совмещении event notification & event carried state transfer можно changeset`ы кидать не с timestamps. а с version, при условии оптимистичной блокировки в базе "источнике" - нормально работает. Другой вопрос, что организация таких changeset`ов - затрагивает изменение и бэка, и фронта.
@cinderellarouge
@cinderellarouge 7 ай бұрын
Мужик с таким умным лицом говорит 😂
@victorklimov5254
@victorklimov5254 Жыл бұрын
В git не хранятся дельты изменений. Там хранятся содержимое самих файлов в сжатом виде - состояния. Так что git это НЕ пример event source-инга
@dmitry6687
@dmitry6687 3 жыл бұрын
Нарамально
@shurale85
@shurale85 2 жыл бұрын
хорошему докладчику не хватает относительной статики .
@VoimiX2008
@VoimiX2008 3 ай бұрын
на загнивающем западе докладчики только так по сцене перебегают это видимо нужно для концентрации внимания слушателей, чтоб не было статики
@user-bi4wd8hr2r
@user-bi4wd8hr2r 3 жыл бұрын
20:25 но-но-но! нехороший пример.
@VoimiX2008
@VoimiX2008 3 ай бұрын
По моему докладчик путает redis с rabbitmq не? или в редисе тоже теперь можно очереди делать?
@sanchesfree
@sanchesfree 2 ай бұрын
можно
@augustsionis6542
@augustsionis6542 5 күн бұрын
редис умеет в паб\саб
@user-qh2jj1dq7k
@user-qh2jj1dq7k 2 жыл бұрын
Когда у тебя полезной информации максимум на 2 минуты, просто бегай 40 минут туда-сюда по сцене.
@burialstance
@burialstance 5 ай бұрын
Отдыхай через каждые две минуты и твой гипоталамус не будет перегружаться)
@kdenisinfo
@kdenisinfo 2 жыл бұрын
Были бы опытные люди проблем бы не было. У меня никогда не было единной базы данных в последние 10 лет как минимум. Ето ежу понятно! Если человек опытны.. Почему нельзя было нанять в компанию людей с 25 летним стажам?? почему неопытный молодняк решает все ?? Или компания боится опытных людей? Коррупция
@anatoly-k
@anatoly-k Күн бұрын
как-то очень скомканно
ТАМАЕВ vs ВЕНГАЛБИ. Самая Быстрая BMW M5 vs CLS 63
1:15:39
Асхаб Тамаев
Рет қаралды 4,6 МЛН
🌊Насколько Глубокий Океан ? #shorts
00:42
How to bring sweets anywhere 😋🍰🍫
00:32
TooTool
Рет қаралды 54 МЛН
Григорий Кошелев - Когда всё пошло по Кафке
56:50
DataVault / Anchor Modeling / Николай Голов
1:05:30
DataLearn
Рет қаралды 19 М.
WWDC 2024 - June 10 | Apple
1:43:37
Apple
Рет қаралды 10 МЛН
Cadiz smart lock official account unlocks the aesthetics of returning home
0:30
сюрприз
1:00
Capex0
Рет қаралды 1,5 МЛН