azure-service-fabric - Service Fabric 应用程序之间的通信

标签 azure-service-fabric

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

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

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

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

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

    或者这里有另一种模式可以使用吗?

    最佳答案

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

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

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

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

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

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

    关于azure-service-fabric - Service Fabric 应用程序之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38827484/

    相关文章:

    azure - 在多个 Azure 区域中的 Service Fabric 上运行微服务

    c# - 是否可以将 visual studio 性能分析与服务结构一起使用?

    azure - 如何检索本地 Service Fabric 集群的证书指纹?

    azure - 适用于本地 Azure Service Fabric 群集的负载均衡器

    Azure Service Fabric Explorer 始终返回 403

    debugging - VS2017 条件断点 - "Evaluation of native methods in this context is not supported"

    c# - 具有多个接口(interface)的可靠 Actor ?

    c# - 具有 WCF 通信的 Service Fabric 可靠服务

    azure - 一个客户端多次接收消息且一个客户端接收后消息被删除

    azure - 如何将Service Fabric服务上下文注入(inject)到asp.net core中间件中?