微服务和低延迟传输

Microservices and low latency transport

我只知道微服务界流行的两种传输协议:REST/HTTP和AMQP。

我感觉到两个问题:

1) 你不觉得他们很慢吗?如果你不同意这种说法(是的,是的,我没有关于 AMQP 的基准,虽然 HTTP 被广泛认为是一个慢的,你可以在没有我的帮助的情况下在互联网文章中找到),那么我可以告诉你,有一个稀缺的选择2 你总能想象到很多更快的协议都没有表现出来。 2 是一个非常小的数字,也就是说,在实践中 - 别无选择。

2) HTTP 看起来并不打算成为服务器到服务器的协议,但广泛用于此角色。

您对此有何看法,能否提出一些替代方案(由框架支持,我的意思是我不需要自己从头开始编写的东西)?

这完全取决于您的域场景、它的要求以及您可以在开发中投入多少以实现更低的延迟、更小的带宽等。

如今,服务器通信的选择范围很广。 HTTPS 恰好是最常见的一种,对于很多应用程序来说已经足够好了。

鉴于您已经控制了通信的两端,没有什么能阻止您投入更多的精力并基于 UDP 套接字构建您自己的二进制协议,或者在 OSI 层中走得更低。例如 Google 正在使用 QUIC 并提议将其作为 http/2 的继承者。所以 http/3 实际上可能会变得更有效率。

或者您可以尝试实施针对延迟甚至实时应用程序进行了更优化的现有标准。工业领域的一个例子是 profinet

很多时候,有效载荷是导致连接缓慢的原因。 JSON 是一个很好的例子,它需要很长时间才能大量 de-/serialize。为了改进这一点,您可以使用不同的传输格式,例如来自游戏领域的 flat buffers(另一个 google 发明)。

一般来说,如果您研究一下网络在游戏中是如何实现的,您会发现很多有趣的技术。

首先,请将架构主题与实现主题分开。一方面是架构,另一方面是实现。微服务架构正在谈论 SOA 中的新范例。现在在实施阶段,您可以使用多种协议来实施您的微服务规模的服务。您可以使用 UDP、TCP、HTTP 等。 HTTP 协议在微服务中广泛使用,存在无状态等问题,但这并不一定意味着所有处于实现阶段的微服务都需要使用 HTTP。他们 may/could 使用 HTTP 或任何其他传输协议,例如 UDP,甚至 CoAP。

以下是code-project中发表的一组关于微服务的文章,喜欢的朋友可以阅读和评论。

https://www.codeproject.com/Articles/1264113/Dive-into-Microservices-Architecture-Part-I

https://www.codeproject.com/Articles/1264113/Dive-into-Microservices-Architecture-Part-II

https://www.codeproject.com/Articles/1264113/Dive-into-Microservices-Architecture-Part-III