【发布时间】:2018-12-16 03:25:52
【问题描述】:
我在 FrontEnd 和另一个 BackEnd 上设置了 2 个指定类型的集群。 FrontEnd 有无状态服务,Backend 有 Statefull 和 actor 服务。现在我看到了他们使用反向代理和 http:// 调用与有状态服务进行通信的示例,以及他们使用远程调用调用 fabric:// 的其他地方的示例如果前端和后端节点类型之间发生数据密集型传输,应该使用哪种协议更好?
【问题讨论】:
我在 FrontEnd 和另一个 BackEnd 上设置了 2 个指定类型的集群。 FrontEnd 有无状态服务,Backend 有 Statefull 和 actor 服务。现在我看到了他们使用反向代理和 http:// 调用与有状态服务进行通信的示例,以及他们使用远程调用调用 fabric:// 的其他地方的示例如果前端和后端节点类型之间发生数据密集型传输,应该使用哪种协议更好?
【问题讨论】:
实际上 fabric:// 本身并不是协议,它只是 Service Fabric Naming Service 解析服务实际位置的语法。如果您不必将服务公开给外部客户端,则远程处理是一个更好的选择,因为在使用 http:// 只让你使用这个协议。
【讨论】:
fabric:// 只是一个 Uri Scheme。它用于识别命名服务,例如:fabric://MyApp/MyService
这个问题没有正确的答案,选择正确的方法需要考虑很多变量。
两者都可以用,绝对没问题。
远不止这些,但我可以给出一个简单的概述:
使用 HTTP 通信,服务仅依赖于彼此的端点,并且在开发和部署过程中可以将两者相互隔离,即使您更改服务版本和技术堆栈,它们也会进行通信。您可以使用不同的技术,例如:Java、GO、NodeJS,并且仍然可以在您的服务之间保持顺畅的通信。
使用 Remoting,您可能会获得更快的通信,但服务之间的耦合度更高,因为两者都需要了解用于通信的相同接口和实体,以使它们保持同步(兼容)大部分时间都需要部署新版本两种服务一起使用。
.
如果一开始性能不是问题,我建议使用 HTTP 简单,如果不满足您的要求则迁移。
【讨论】: