Microservices: Communication through a message queue. Part 1.
Вставка
- Опубліковано 22 лип 2020
- Service-to-service communications.
Microservices send requests to other microservices (APIs) using a message queue. This video will focus on the theoretical part. I'll cover RabbitMQ and MassTransit.
Keywords: #rest, #json, #grpc, #Message, #Queue, #RabbitMQ, #Binary, #data, #communication, #api, #service_to_service, #MassTransit
Спасибо, за то что делаете! Только начал смотреть про взаимодействие микросервисов и Вы выпустили видео)
Хорошо, когда всё к месту и в тему!!!
Сергей, большое спасибо за Ваши труды! Очень полезный контент)
Спасибо за добрые слова!
Использование mass transit противоречит концепции микросервисной архитектуры, что сервисы могут быть реализованы с использованием разных технологий. Если один микросервис написан на C#, а другой на Java то massTransit не подойдёт. Получаем логическое противоречие при определения микросервисной архитектуры и маленький шаг в сторону монолита. Хотя конечно можно и закрыть глаза на это допущение, если все остальное хорошо работает.
На основании заявлений Мартина Фаулера (да и многих других корефеев по построению архитектурных решений), со всей отвественностью заявляю, что, уважаемый, заблуждаетесь. Никаких противоречий нет! Более того, если посмотреть определение микросервисной архитектуры (например в wiki), то самого понятия тоже не существует. Есть только 4 (четыре) абстракных характеристики, которые ни коим образом не ограничивают стек технологий и платформ. И, кстати, в этом-то и основная сложность этой самой архитектуры, собрать воедино все необходимые компоненты системы, подобрать правильные и самые эффективные инструменты и платформу. Чтобы выбор соответствовал нуждам вашей компании, вливался в стек технологий и работал на той платформе, которая выбрана за основу.
Другими словами, можно сделать всё на одной платформе (например, ASP.NET Core), и это будет микросервисная архитектура на стеке .NET. А можно сделать на другой платформе (node.js, kafka, redis, etc), и это тоже будет микросервисная архитектура, но на другой платформе стеке. И более того, вы может использовать несколько платформ, и в любой пропорции и с любым стеком. Другое дело, что у вас не получится кроссплатформенно ипользовать MassTransit, потому что его "территория" - это .NET.
P.S.: Я не ставлю перед собой задачу написать всеобъемлющую микросервисную архитектуру (или архитектуры) на разных платформах. Я попросту не знаком с отличными от .NET инструментами, платформами и прочими составляющими успеха. Все мои ролики, так или иначе, имеют привязку к ASP.NET Core. :)
P.P.S.: Спасибо за хороший вопрос.
Спасибо тебе добрый человек!
И вам спасибо за комментарий
Спасибо за труд.
И есть за что! Спасибо за комментарий!
Спасибо большое!
Большое пожалуйста
Добрый день! На схеме на 3:00 microservice2 обращается к identity server для проверки токена - зачем? ведь у него есть токен с инфо о пользователе и правах, есть его подпись, зачем делать обращение на identity server?
А откуда Microservice2 знает, что это токен валидный? Вот идет на сервер проверять.
Чтобы проверть что токен живой
Работал с масс транзитом. У него есть очень большой косяк. Он сильно привязывается к своему формату сообщения и по факту все самы сильные фишки именно раббита он не использует т.к. призодится платить за совместимость с кафкой. В итоге пришлось отказываться от него.
MassTransit - уровень абстракции, который прекрасно "натягивается" на пачку серверов сообщений (masstransit-project.com/usage/transports/). А kafka - это Stream Processing Platform. Она устроена совсем по-другому. Очередь лежит у нее глубоко в ядре (kafka.apache.org/). Можно посмотреть и другие статьи на эту тему www.google.com/search?q=is+kafka+message+queue&oq=is+kaffka+message&aqs=edge.2.69i57j0i13l2j0i22i30l2j0i8i13i30l3.10719j0j1&sourceid=chrome&ie=UTF-8
В данной ситуации, надо четко понимать, что такое очередь, почему MassTransit легко натягивается именно на Message Queue и почему возникают трудности, когда начинаешь "натягивать" MassTransit на то, на что его "натянуть" невозможно.
абстракции это хорошо но основная фишка раббита это роутинг с обменников в очереди. Масс транзит эту возможность по факту убивает, реализуюя ее на клиенте. И как следствие испол зовать масс транзит для связи с другими мкс по спецификации, отличного от транзита очень проблемно, как и получать такие сообщения не в его формате.
@@Jekkloу меня роутинг прекрасно работает! Никаких проблем не было никогда.
хмммм а разве масс транзит работает с обменниками типа Direct excange?
@@Jekklo на сайте в документации всё написано, с чем работает и каким образом. 🙃
rabbit mq = kafka?
Нет. Kafka - исторический журнал, внутри ее вообще нет понятия очереди. В принципе!
Мармок, ты?))
Кто здесь?
Одна вода нужной информации 5-8 минут , всё остальное вода
Для кого-то "вода", а для кого-то - нет. Простите, но сделать одно видео для разработчиков с разным уровнем подготовки, я просто не имею достаточного уровня знаний. Может вы подскажите как это можно сделать?
нет никакой воды! все очень информативно, как и всегда, спасибо огромное за видео!
@@RobertSmith-im5kv я тоже так думаю, спасибо за поддержку!
Согласен с тобой чувак, особенно дальше ролики когда начал смотреть, то понял что зря трачу время. Автор выкладывает архитектуру и на банальном примере усложняет до ужаса. Я пришел посмотреть как подключить рабит mq и как взаимодействовать, а не о том как на маленьком проекте написать 10 паттеронов, ради паттернов, чтобы абстрактная фабрика возвращала абстрактный метод, который вернет еще какую-то х*йню. На самом деле можно было тупо создать 2 консольных приложения, запустить рабит mq и передавать объекты, чтобы показать как работают там маршруты и все, сразу стало бы все понятно. Я бы переименовал канал на "сложно о простом"
Так масстранзит он же для дотнета. Кто им пользуется сегодня то?
Все, кто на дотнете
Сишарп? Асп нет? Сегодня? Фуууууу
В кривых руках и калькулятор зависает 😂