2017-03-23 89 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服务,而是为每一组有限的微服务分别提供一个服务实例,这里也适用这些实例,所有这些实例进一步联合以进行更广泛的通信应该被照顾。