Apache Thrift 可以为单个服务器使用多个传输吗?

Can Apache Thrift use multiple transports for a single server?

我有一个服务器有很多轻量级方法和一个重量级方法。我似乎无法找到 Apache Thrift 支持服务器的多种传输的证据。我想要的是除重量级方法之外的所有共享内存和重量级方法的 TCP/IP (分布式)。我可以将它分成两个服务器,但那样会破坏封装的目标(我认为)。

如果您真的是指运输工具 - 不是直接的。可能的是将处理程序作为可以重复使用的单独实体,例如使用不同的 protocol/transport 堆栈。

听起来,在您的情况下,最好的解决方案确实是拥有两个具有两个不同 protocol/transport 堆栈的服务器,它们都使用相同的处理程序代码,但实现不同的 Thrift 服务。

                              +----------------+
       +----- uses ---------> | LWService      | <-------+
       |                      +----------------+         |
       |                                             implements
       |                                                 |
+------+-----------+                               +-----+-----+
|                  |                               |           |
|                  |                               |           |
|  Client          |                               | Handler   |
|                  |                               |           |
|                  |                               |           |
|                  |                               |           |
|                  |                               |           |
|                  |                               +-----+-----+
+------+-----------+                                     |
       |                                              implements
       |                      +----------------+         |
       +---- uses ----------> | HeavyService   | <-------+
                              +----------------+