Jac*_* Cz 2 thrift thrift-protocol
所有教程和文档都建议每个Thrift服务器可以提供一个服务(1个处理程序1个处理器1服务器,所有服务器都在构造函数中提供).
从我的观点来看(设计的优雅),如果许多或所有服务定义可以是独立的,那就更好了.
所有教程和文档都建议[...]
不,事实并非如此.文档和教程的存在是为了解释内容,所以他们自然会专注于简单的案例,只是为了简单起见.
但事实上,以前的Thrift版本没有提供这样的功能.从版本0.9.2开始,我们在整个代码库中广泛实施的任何传输,协议和服务器上都支持多路复用服务.
用法很简单.细节取决于语言.例如,这是一个C#客户端:
TTransport trans;
trans = new TSocket("localhost", 9090);
trans = new TFramedTransport(trans);
trans.Open();
TProtocol Protocol = new TBinaryProtocol(trans, true, true);
TMultiplexedProtocol multiplex;
multiplex = new TMultiplexedProtocol( Protocol, Constants.NAME_BENCHMARKSERVICE);
BenchmarkService.Iface bench = new BenchmarkService.Client( multiplex);
multiplex = new TMultiplexedProtocol( Protocol, Constants.NAME_AGGR);
Aggr.Iface aggr = new Aggr.Client( multiplex);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们有一台服务器通过同一个套接字提供两个服务BenchmarkService,即Aggr服务.服务器部分以类似的方式设置.整个示例可以在代码库下找到/lib/csharp/test/Multiplex.
| 归档时间: |
|
| 查看次数: |
2181 次 |
| 最近记录: |