服务架构应用程序之间的通信

时间:2016-08-08 10:59:59

标签: azure-service-fabric

我们在不同的Service Fabric应用程序中分组了不同的功能。每个Service Fabric应用程序负责一定范围内的一组功能(例如,新闻,博客,用户都是单独的应用程序)。不同的团队可以处理这些功能范围。

每个应用程序都有一个公共REST API,例如/ users或/ news或/ blogs。因此,公共网站可以调用这些端点并检索/发布信息。

但是,很多时候这些应用程序需要相互通信。但是设置它的最佳方法是什么?我现在可以看到两种方法:

  • 在每个应用程序上创建一个新的HTTP端点,该端点仅供内部使用(使用其自身未公开发布的IP端口)。松散耦合。
  • 使用RPC调用(但这会在应用程序之间创建一个'硬链接)。强烈耦合。

目前我认为单独的HTTP端点是可行的方法,但我想知道RPC调用是否更好?从设计理念来看,是否允许在应用程序之间使用RPC调用?或者,当应用程序更新且界面发生变化时,这会给我带来麻烦吗?

或者在这里使用另一种模式吗?

2 个答案:

答案 0 :(得分:2)

当然,当您更改服务的签名或添加新内容时,您将不得不重写某些内容。因此,在这两种情况下,您都必须触摸已更改的代码和调用代码。

RPC的问题是您需要在要使用该服务的任何地方访问此接口。所以你实际上无法独立升级服务。 HTTP通信可以解决这个问题。

但是通过HTTP通信,您需要编写相当复杂的代码,这将导致:

  • 新错误的地方
  • 理解新人的逻辑和架构的困难
  • 可能你需要测试,有人必须维护它们
  • 您需要考虑如何注册更新 - 应首先更新哪些服务

是的,你正在摆脱依赖关系(不完全是对我而言),但工作和维护的数量也有所增加。 RPC简单而且简单。

如果单独升级服务至关重要且任何服务的升级不应停止或影响任何其他服务的工作,我将仅使用HTTP over RPC。

答案 1 :(得分:1)

我参加了微服务会议/峰会,发言人建议使用他们的REST API端点访问其他微服务。

我同意这一点,因为我们可以通过我们的电话保持标准化,并且易于维护。只是一个想法。