0
我有许多轻量级方法和一个重量级方法的服务器。我似乎无法找到Apache Thrift支持多台服务器传输的证据。我想要的是除重量级方法和TCP/IP(分布式)以外的所有共享内存。我可以把它分解成两台服务器,但是这样做打破了封装的目标(我认为)。Apache Thrift可以为单个服务器使用多个传输吗?
我有许多轻量级方法和一个重量级方法的服务器。我似乎无法找到Apache Thrift支持多台服务器传输的证据。我想要的是除重量级方法和TCP/IP(分布式)以外的所有共享内存。我可以把它分解成两台服务器,但是这样做打破了封装的目标(我认为)。Apache Thrift可以为单个服务器使用多个传输吗?
如果你确实是指运输 - 而不是直接。可能的是将处理程序作为可以重新使用的独立实体,例如,用不同的协议/传输栈。
听起来,在你的情况下,最好的解决方案确实是让两台服务器有两个不同的协议/传输栈,它们都使用相同的处理程序代码,但实现了不同的Thrift服务。
+----------------+
+----- uses ---------> | LWService | <-------+
| +----------------+ |
| implements
| |
+------+-----------+ +-----+-----+
| | | |
| | | |
| Client | | Handler |
| | | |
| | | |
| | | |
| | | |
| | +-----+-----+
+------+-----------+ |
| implements
| +----------------+ |
+---- uses ----------> | HeavyService | <-------+
+----------------+
我需要一段时间来思考这个问题。感谢您的回应。 –
不,它不能。为什么运输有关?如果方法是重量级的,我不会看到改变运输方式将如何影响该特定方法的性能。 – m0skit0
哦,对不起,它太慢了,需要比调用代码更多的马力。假设应用程序代码分布在20台服务器上。本地方法非常快,远程执行会增加大量开销(因此每个应用程序服务器上的共享内存都可以)。 “缓慢”的方法可以利用庞大的,专用的多核心节点(并且其中很多节点 - 比如数千个应用程序增长),因此分布式传输对这些节点更有意义 - 事实上,它永远不会合理完成限于20个节点。 “慢”到“快”方法的比例:最多100-1。 –
我明白了。你有没有考虑使用集群而不是手动进行此操作?这样可以让你的20台服务器的行为就像它们一样,无需编写代码。 – m0skit0