Не понимает, что ESB - это решение для двухточечной интеграции

Все еще очень новичок в изучении архитектуры приложений и испытывает проблемы с изложением некоторых идей в книге о микросервисах. В своих чтениях я натолкнулся на старую идею ESB (Enterprise Service Bus) и ее роль в координации сообщений между новыми сервисами и устаревшими приложениями. ESB рекламируются как решение проблем, связанных с двухточечной интеграцией. Кажется, что микросервисы - это подход, используемый новыми компаниями в качестве фактического стандарта для создания гибких, масштабируемых и отказоустойчивых приложений. Но разве микросервисы не используют интеграцию точка-точка? Каждый узел в приложении, построенном из микросервисов, напрямую взаимодействует с другими узлами, верно? Я чувствую, что соединяю точки, которые не следует связывать. Любая помощь очень ценится, заранее спасибо.


person Andy    schedule 20.09.2017    source источник


Ответы (4)


Микросервисы не обязательно полагаются исключительно на двухточечную интеграцию.

Проблемы, связанные с прямым обменом данными, часто решаются в микросервисной архитектуре с помощью брокера сообщений. Если связь может быть асинхронной - «запустил и забыл» - приложение, отправляющее сообщение, не перестанет работать, если получатель выйдет из строя. И сообщения все еще будут там, когда служба-получатель вернется к работе.

Если микросервисы интегрируются через REST, вызывающей стороне необходимо знать, как реагировать, если другая служба не отвечает. Поскольку это становится непросто, когда вы сохраняете данные в разных системах (например, распределенную транзакцию), мне нравится использовать REST только для API извлечения данных. И вообще все сохраняет в результате сообщений.

Важно отметить, что ESB - это гораздо больше, чем просто обмен сообщениями. Подробнее об этом см. здесь.

person Tracy Moody    schedule 20.09.2017

ESB - это решения, которые были внедрены во многих компаниях для обеспечения взаимодействия и отслеживаемости приложений. Однако это тяжелые решения, которые не позволяют масштабироваться по горизонтали, обычно ESB принимают конфигурацию из двух узлов, активного-активного или активного-пассивного.

С другой стороны, службы в ESB обычно развертываются не по отдельности, а в пакетах развертывания вместе с другими службами, что усложняет управление доставкой и тестирование.

Микросервисы предназначены для разработки и развертывания по отдельности, чтобы внутри облачной инфраструктуры можно было легко масштабироваться по горизонтали, динамически увеличивая количество экземпляров.

Взаимодействие между приложениями в настоящее время отошло на второй план, поскольку сегодняшнее общение с помощью веб-сервисов является практически обычным явлением, хотя некоторое промежуточное программное обеспечение, которое решает проблемы подключения, все еще может потребоваться в некоторых очень старых инфраструктурах.

person jmhostalet    schedule 20.09.2017
comment
Сервисы в ESB можно развернуть индивидуально, это не проблема. - person KarelHusa; 02.10.2017

Оба подхода не обязательны. Микросервисы могут обмениваться данными с использованием промежуточного программного обеспечения обмена сообщениями (kafka, AMQP, акторы Akka, JMS ...) вместо прямых HTTP-каналов. Это зависит от ваших ограничений (в основном согласованности) и политик развертывания.

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

См. Микросервисы: REST против обмена сообщениями и https://capgemini.github.io/architecture/is-rest-best-microservices/

person Gab    schedule 20.09.2017
comment
Обратите внимание, что обсуждение все еще продолжается: p innoq.com/en/blog/ - person Gab; 20.09.2017

Микросервисы не заменяют ESB.

Микросервисы - это концепция для разработки серверных систем, включая их API. Противоположность микросервисному подходу - монолит. Если API используется непосредственно потребляющими системами, мы приходим к интеграции точка-точка (спагетти). Если потребитель использует промежуточное программное обеспечение, часто называемое шлюзом API, мы можем получить централизованную видимость, безопасность и отслеживание (как в случае с ESB). Шлюзы API проще, чем ESB, и поэтому лучше подходят для горизонтального масштабирования. Шлюзы API не должны включать дополнительную бизнес-логику / логику интеграции.

ESB делает то же самое, что и шлюз API (действует как прокси), но, кроме того, позволяет включать бизнес-логику, объединять несколько служб в одну и другие расширенные функции. ESB часто превращались в обременительные решения с большими накладными расходами и небольшой добавленной стоимостью, и поэтому их стали ненавидеть.

Заключение

ESB можно использовать вместе с архитектурой микросервисов, есть много компаний, которые делают ESB простой, и она почти равна так называемым шлюзам API.

Мое мнение

Шлюзы API вводят новые функции и становятся все более сложными, приближаясь к ESB.

person KarelHusa    schedule 02.10.2017