【问题标题】:Communication Between Microservices微服务之间的通信
【发布时间】:2016-06-10 22:33:23
【问题描述】:

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

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

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

【问题讨论】:

  • 这篇我最近整理的关于 Thrift 微服务的文章可能会有所帮助(比较 SOAP/REST/THRIFT 等):dzone.com/articles/polyglot-microservices-and-apache-thrift
  • 看看MQTT
  • RPC (say:thrift) , http in Your idea has character request-response A->B->A etc Queue based (MQTT etc) 可以理解为图 A->B 中的消息流->C->A.
  • @codeSF:非常感谢,推荐阅读!

标签: rpc thrift microservices


【解决方案1】:

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

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

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

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

Apache Thrift 为您提供了一个可插入的传输/协议堆栈,可以通过插入不同的方式快速适应

  • 传输(套接字、HTTP、管道、流...)
  • 协议(二进制、紧凑、JSON、...)
  • 层(帧、多路复用、gzip、...)

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

回到您最初的问题,这样的框架有助于让沟通更轻松、更高效。但它不能神奇地消除 OSI 堆栈其他部分的延迟。

【讨论】: