2017-03-23 91 views
4

我需要將兩個節點服務部署到CF(每個服務在它自己的容器中)。 這些應用程序需要進行通信。如何建議實施這種溝通?我無法找到任何解釋CF中的服務到服務通信的指南,因爲它應該部署到雲中,所以我需要一些最佳實踐。一些例子會非常有幫助。Cloud Foundry的服務到服務通信

+0

您是指Cloud Foundry應用程序容器(Diego)還是您指的是Bluemix上的Docker容器? –

+0

@data_henrik - 應用程序容器(迭戈) –

+0

這裏有一個非常類似的問題(http://stackoverflow.com/questions/41781635/app-to-app-communication-in-cloud-foundry),答案涵蓋了兩個顯而易見的方法是使用消息代理或使用服務註冊表。 – Ben

回答

1

你的答案將取決於你想要在你的應用程序之間進行什麼樣的溝通。

如果你正在尋找部署microservice-based architecture模式爲您的節點服務,即服務器代碼執行獨立的,顆粒狀的業務功能,我建議在開始閱讀docs here並使用新的Bluemix Developer Console

這裏有越來越多的模式和初學者可以用來理解和開發雲本地應用程序,這些應用程序可以通過暴露與Open API規範兼容的API端點併爲您的全渠道客戶端自動生成SDK來相互通信應用。

下載選定的啓動器後,您可以修改代碼以公開執行您所需業務邏輯的API。隨後,您可以使用bx dev命令行工具在容器中本地運行項目,或將其部署到Bluemix。

設置完成後,您將在微服務和客戶端應用程序之間進行跨平臺,獨立於語言的通信。

1

這是一個經典問題,總是來解決任何企業應用程序集成模式,它歸結爲什麼類型的集成需求。

如果一個應用程序想要有同步通信以獲得實時響應,RESTFul API是這個時代最喜愛的集成風格。但還需要考慮的是,創建大量的API(這是基於微服務的架構的不利之處)也帶來了維護集合和定位正確集合的巨大開銷。 API網關和服務發現工具應該在這裏提供幫助。我是Blue-mix的新手,但您肯定可以在其上承載基於Spring-Cloud-EurekaConsul的服務發現以達到目的,並且類似地Spring Cloud Zuul擁有API網關。

另一個簡單的方法就是確保不建立一箇中心服務來滿足整個微服務世界的需求,而是要有許多這樣的服務來迎合上下文綁定的微服務。

在類似的線,如果需要的是有異步通信,消息代理如 - RabbitMQ的,Kakfa應該是最好的,最簡單的集成風格的應用程序進行通信。同樣的問題不是建立一個SPOF服務,而是爲每一組有限的微服務分別提供一個服務實例,這裏也適用這些實例,所有這些實例進一步聯合以進行更廣泛的通信應該被照顧。