可靠服务之间的通信

Posted

技术标签:

【中文标题】可靠服务之间的通信【英文标题】:Communication between reliable services 【发布时间】:2016-04-18 20:13:20 【问题描述】:

Microsoft 提供了几种不同的通信协议选项来在可靠服务之间进行通信。

有默认堆栈(强类型 RPC)、HTTP、WCF 或自定义协议。我认为最简单的方法是使用默认的通信堆栈。但是性能最好的通信栈是什么呢?

【问题讨论】:

【参考方案1】:

您如何定义绩效?在给定时间内最多的请求响应?单个请求响应的最短时间?发送方和接收方的内存或 CPU 开销?

性能最好的堆栈通常是您编写的自定义堆栈 您自己专门针对您的服务通信特性。根据情况,每个其他堆栈的行为都会有所不同。

这是一个例子。假设您在服务之间传输大量数据。在这里,HTTP 可能比 RPC 更好,因为您可以打开连接并在数据到达时流式传输数据,而 RPC 会将所有数据发送到一个大的有效负载中,这会留下很大的内存占用。一个更好的选择可能是打开一个 WebSocket。比仅使用常规套接字更更好的选择。

顺便说一句,我们不再将其称为“默认”堆栈,因为实际上并没有默认值 - 您必须选择一个。强类型 RPC 堆栈现在简称为“Remoting”。

【讨论】:

以上是关于可靠服务之间的通信的主要内容,如果未能解决你的问题,请参考以下文章

微服务可靠性设计

浅谈tcp 与udp

NamedPipeServerStream/async 可靠断开问题

TCP和UDP应用场景

网络层提供的两种服务

深入理解TCP协议及其源代码