2015-12-15 39 views
0

我有许多轻量级方法和一个重量级方法的服务器。我似乎无法找到Apache Thrift支持多台服务器传输的证据。我想要的是除重量级方法和TCP/IP(分布式)以外的所有共享内存。我可以把它分解成两台服务器,但是这样做打破了封装的目标(我认为)。Apache Thrift可以为单个服务器使用多个传输吗?

+0

不,它不能。为什么运输有关?如果方法是重量级的,我不会看到改变运输方式将如何影响该特定方法的性能。 – m0skit0

+0

哦,对不起,它太慢了,需要比调用代码更多的马力。假设应用程序代码分布在20台服务器上。本地方法非常快,远程执行会增加大量开销(因此每个应用程序服务器上的共享内存都可以)。 “缓慢”的方法可以利用庞大的,专用的多核心节点(并且其中很多节点 - 比如数千个应用程序增长),因此分布式传输对这些节点更有意义 - 事实上,它永远不会合理完成限于20个节点。 “慢”到“快”方法的比例:最多100-1。 –

+0

我明白了。你有没有考虑使用集群而不是手动进行此操作?这样可以让你的20台服务器的行为就像它们一样,无需编写代码。 – m0skit0

回答

3

如果你确实是指运输 - 而不是直接。可能的是将处理程序作为可以重新使用的独立实体,例如,用不同的协议/传输栈。

听起来,在你的情况下,最好的解决方案确实是让两台服务器有两个不同的协议/传输栈,它们都使用相同的处理程序代码,但实现了不同的Thrift服务。

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

我需要一段时间来思考这个问题。感谢您的回应。 –

相关问题