微服务之间的通信

Communication Between Microservices

假设您有微服务 A、B 和 C,它们当前都通过 HTTP 进行通信。假设服务 A 向服务 B 发送请求,导致响应。该响应中返回的数据随后必须发送到服务 C 进行一些处理,然后最终返回到服务 A。服务 A 现在可以在网页上显示结果。

我知道延迟是实现微服务架构的一个固有问题,我想知道减少这种延迟的常用方法有哪些?

此外,我一直在阅读有关 Apache Thrift 和 RPC 如何帮助解决此问题的资料。任何人都可以详细说明吗?

Also, I have been doing some reading on how Apache Thrift and RPC's can help with this. Can anyone elaborate on that as well?

像 Apache Thrift 这样的 RPC 框架的目标是

  • 显着减少手动编程开销
  • 提供高效的序列化和传输机制
  • 跨越各种编程语言和平台

换句话说,这允许您通过网络将数据作为非常紧凑的编写和压缩数据包发送,而实现此目的所需的大部分工作都由框架提供。

A​​pache Thrift 为您提供了一个可插入的 transport/protocol 堆栈,可以通过插入不同的

来快速调整
  • 传输(套接字、HTTP、管道、流……)
  • 协议(二进制、紧凑、JSON、...)
  • 层(框架、多路复用、gzip、...)

此外,根据目标语言,您可以获得一些服务器端的基础设施,例如 TNonBlocking 或 ThreadPool 服务器等

所以回到您最初的问题,这样的框架可以帮助使沟通更轻松、更高效。但它无法神奇地消除 OSI 堆栈其他部分的延迟。