2016-05-25 2 views
1

Я новичок в облачном литейном цехе. Следуя справочному приложению, предоставленному Predix (https://www.predix.io/resources/tutorials/tutorial-details.html?tutorial_id=1473&tag=1610&journey=Connect%20devices%20using%20the%20Reference%20App&resources=1592,1473,1600), приложение состояло из нескольких модулей, и каждый модуль реализован как микросервис.Как взаимодействуют микро услуги в Cloud Foundry?

Мой вопрос в том, как эти микросервисы разговаривают друг с другом? Я понимаю, что они должны использовать какое-то REST вызовов, но проблема заключается в: реестре

  1. обслуживания: Скажем, у меня есть услуги A, B, C. Как эти компоненты «открыть» The Rest URL-адрес других компонентов? Поскольку URL-адрес компонента известен только после того, как служба была нажата на облачный литейный цех.

  2. Как облачный литейный цех контролирует зависимость компонентов при запуске службы и завершении обслуживания? Say A не может начинаться до тех пор, пока не начнется B. B должен быть выключен, если A выключен.

ответ

1

Если микро-сервисы действительно должны разговаривать друг с другом, как правило, его с помощью REST, как у вас есть noticed.However microservice пуристы могут быть против таких зависимостей. В этом случае обнаружение службы разрешено путем публикации доступных конечных точек в реестре служб - etcd в случае CloudFoundry. После регистрации конечной точки различные экземпляры данной службы могут зарегистрироваться в реестре с помощью операции POST. Клиент должен знать только о опубликованной конечной точке, а не о конечной точке экземпляра отдельного сервиса. Это self-registration. Клиент будет либо связываться с балансировщиком нагрузки, как ELB, который ищет системный реестр или клиент должен знать о реестре службы.

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

3

Приложение для приложения ref-app состоит из нескольких «приложений» и «услуг» Predix. Приложение привязано к службе через запись в manifest.yml. Таким образом, через эту привязку он получает конечную точку обслуживания и другую важную конфигурационную информацию. Когда приложение привязано к службе, команда cf env возвращает необходимую информацию.

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

Отдельные приложения приложения ref-app помещаются в отдельные микросервисы, поскольку они используются в качестве компонентов других приложений. Следовательно, подход микросервисов. Если в приложениях есть зависимости от запуска, конвейер CI/CD, который подталкивает приложения к облаку, должен управлять этими зависимостями. Зависимости в ref-app - это просто очевидные, чтение.

Хотя верно, что связь микросервисов не в дизайне. Есть некоторые очевидные причины, по которым это может произойти. Язык и функция. Если у вас есть «фоновый» микросервис, написанный на Java, используемый микросервисом пользовательского интерфейса «front-end», написанным в Javascript на NodeJS, тогда они вытесняются как два отдельных приложения. Теоретически пользовательский интерфейс не будет работать слишком хорошо без поддержки, но есть план на самом деле сделать это с некоторыми консервированными JSON. Тем не менее, существует некоторая логическая связь.

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

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

«Приложения» «приложения» знают о каждом из-за их имени и URL-адреса, которые дает облако. На самом деле существует множество копий ссылочного приложения, работающего в различных облаках и пространствах. Они предваряются такими вещами, как Dev или QA или Integration, и т. Д. Можем ли мы получить интерфейс Dev с поддержкой микросервиса QA, конечно, это всего лишь URL-адрес.

В дополнение к вышесказанному и т. Д. (Которые я еще не пробовал) вы также можете создать определение «CUPS». Это также набор пар ключ/значение. Что вы можете связать с пространством (dev/qa/stage/prod) и связать их через манифест. Таким образом, вы получаете реквизит из среды.