Azure service fabric 服务结构应用程序之间的通信

Azure service fabric 服务结构应用程序之间的通信,azure-service-fabric,Azure Service Fabric,我们在不同的服务结构应用程序中对不同的功能进行了分组。每个Service Fabric应用程序负责特定范围内的一组功能(例如,新闻、博客、用户都是独立的应用程序)。不同的团队可以在这些功能范围内工作 每个应用程序都有一个公共RESTAPI,如/users或/news或/blogs。因此,公共网站可以调用这些端点并检索/发布信息 然而,很多时候这些应用程序需要相互通信。但是什么是最好的设置方法呢?就我现在所见,有两种方法: 在每个应用程序上创建一个只供内部使用的新HTTP端点(使用自己的IP端口

我们在不同的服务结构应用程序中对不同的功能进行了分组。每个Service Fabric应用程序负责特定范围内的一组功能(例如,新闻、博客、用户都是独立的应用程序)。不同的团队可以在这些功能范围内工作

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

然而,很多时候这些应用程序需要相互通信。但是什么是最好的设置方法呢?就我现在所见,有两种方法:

  • 在每个应用程序上创建一个只供内部使用的新HTTP端点(使用自己的IP端口,该端口未公开发布)。松散耦合
  • 使用RPC调用(但这将在应用程序之间创建“硬”链接)。强耦合
目前,我认为单独的HTTP端点将是一种方式,但我想知道RPC调用是否更好?从设计理念来看,是否允许在应用程序之间使用RPC调用?或者,当一个应用程序被更新并且接口发生了变化时,这会给我带来麻烦吗


或者这里还有其他模式可供使用吗?

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

RPC的问题是,您需要在希望使用该服务的任何位置都可以访问该接口。因此,您实际上无法独立升级服务。HTTP通信可以解决这个问题

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

  • 新错误的位置
  • 理解新人的逻辑和架构有困难
  • 也许你需要苔丝,得有人来维护它们
  • 您需要考虑如何注册更新-应该首先更新哪个服务
是的,您正从依赖中解脱出来(对我来说并不完全如此),但工作量和维护量也有所增加。RPC是廉价且简单的


只有在单独升级服务至关重要且任何服务的升级都不应停止或影响任何其他服务的工作的情况下,我才会使用HTTP over RPC。

我参加了一次微服务会话/峰会,演讲者建议使用REST API端点访问其他微服务

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