Слушатели событий и остальные звонки - PullRequest
0 голосов
/ 25 июня 2018

У меня есть несколько приложений / микросервисов.

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

Теперь большинству приложений необходимо взаимодействовать друг с другом, и, как я уже упоминал, они являются микросервисами, поэтому я использую rest вызовы для связи между ними.

Но я также использовал event listeners для обмена данными между ними.И это тоже отлично работает.Но я не очень уверен, что может быть влияние использования этого.Поэтому мой вопрос заключается в том, могу ли я обычно использовать приемники событий для связи, как мы обычно делаем, когда у нас есть приложения внутри ifram и т. Д.

Каковы плюсы и минусы использования rest call против events?

Любая помощь будет оценена.

Спасибо

1 Ответ

0 голосов
/ 03 июля 2018

Это то, что Мартин Фаулер назвал умными конечными точками и немыми трубами .

Что касается того, что лучше: нет явного "победителя", потому что они не являются взаимоисключающими.Они служат различным семантическим целям (хотя могут давать одни и те же результаты) и могут использоваться вместе в одном приложении.

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

Что касается плюсов и минусов, я могу дать вам несколько утверждений, которые могут помочь вам принять решениеКогда использовать какую технику:

  • Связь - сравнивая модель, управляемую активными событиями, и простой API, вы можете сказать, что API обеспечивает более тесную связь, поскольку вы должны следовать некоторому предопределенному интерфейсу.В этом отношении сообщения не так строги, но при необходимости они могут быть
  • Масштабирование - модель, управляемая событиями, масштабируется гораздо проще: создайте еще несколько рабочих, и все готово.Однако это отсутствие состояния может стать проблемой - вам может понадобиться один и тот же работник для обработки определенных событий, что может привести к довольно сложной архитектуре очередей
  • Обработка ошибок - реализация обработки ошибок в REST API может бытьтак же просто, как выдать соответствующую ошибку и покончить с этим.Но что, если вам нужно повторить неудачный запрос к внешнему сервису?Это должно быть сделано на стороне API-интерфейса или на стороне клиента?Что делать, если вам нужен другой тип логики повторения для каждого запроса?Ваш API может стать слишком умным, что обычно плохо
  • Блокировка против неблокирования - есть ли у вас план на случай непредвиденных обстоятельств, если ваша служба не соответствует ожидаемому SLA?Блокировка также может быть проблемой, но, по крайней мере, вы можете контролировать поток и контролировать процесс выполнения
  • Отказоустойчивость - вы можете потерять ценные данные, если ваш API аварийно завершит работу во время выполнения.Очередь позволяет вам ждать, пока рабочие снова станут доступными

Это только основные моменты, этот список ни в коем случае не окончательный.Оба метода влекут за собой различные сложности в вашем приложении.Лучший совет здесь - использовать качественные высказывания (вроде тех, что указаны выше), здравый смысл и ПОЦЕЛУЙ, чтобы решить, что больше подходит для вашего случая (или, может быть, и того, и другого?).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...