2015-02-15 21 views
10

У меня проблема, что etcd/consul/$ все, что вы пытаетесь решить. Потребители услуг должны разговаривать с поставщиками услуг, чрезвычайно гибкая распределенная система нуждается в механизме для вступления в брак с этими двумя.Зачем беспокоиться об обнаружении службы, когда связующее ПО, ориентированное на сообщения, выполняет эту работу?

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

В MOM идея состоит в том, что потребителям услуг не важно, где живут поставщики услуг. Они просто отправляют сообщение и имеют шину обмена сообщениями, заботясь о маршрутизации сообщения соответствующему потребителю. Могут быть несколько провайдеров, которые все делают одно и то же (кругооборот на основе очереди) или поставщик версий (/ v1/request переходит на один,/v2/запрос переходит к другому).

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

И все-таки я вижу эту странную одержимость обнаруживая поставщиков услуг, которые, как представляется, создать тесную связь между потребителями и поставщиками (в дополнение к нескольким другим анти-шаблонов, а также.)

Итак, что мне не хватает Вот? ТИА.

ответ

1

В MOM все проходит через автобус, поэтому оно может стать узким местом. При открытии службы потребитель ищет производителя «один раз» (нормально, возможно, придется через некоторое время проверить его), а затем «прямо» (ok может быть через прокси) говорит об этом.

Или, если вы предпочитаете броские фразы: смарт конечных точек & немые трубы против (я думаю) тупые концы & умные трубы.

1

Лично я не вижу этих двух, как или для этого типа архитектуры. Вы можете использовать обнаружение службы, чтобы узнать, какие услуги доступны на данный момент, и подписаться на MOM для событий, которые вы тогда знаете, будет там. Если вы не можете найти службы, от которых вы зависите, вы можете повысить оповещение. Не все MOM сообщают вам, когда нет издателя для канала.

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

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