Service Fabric应用程序之间的通信

Mar*_*tin 5 azure-service-fabric

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

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

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

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

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

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

cas*_*rad 2

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

\n\n

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

\n\n

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

\n\n
    \n
  • 新错误的地方
  • \n
  • 新人难以理解逻辑和架构
  • \n
  • 可能你需要测试并且有人必须维护它们
  • \n
  • 您需要考虑如何注册更新 \xe2\x80\x94 应首先更新哪个服务
  • \n
\n\n

是的,您正在摆脱依赖(对我来说并不完全),但是工作和维护量也有所增加。而且 RPC 便宜且简单。

\n\n

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

\n