gpt4 book ai didi

thrift - 一个 thrift 服务器/传输可以实现多个服务吗?

转载 作者:行者123 更新时间:2023-12-02 08:25:44 27 4
gpt4 key购买 nike

所有教程和文档都建议每个 Thrift 服务器可以提供一项服务(1 个处理程序 1 个处理器 1 个服务器,全部在构造函数等中给出)。

从我的观点(优雅的设计)来看,如果许多或所有服务定义可以独立会更好。

  • 如果可以运行多个服务,代码的语法/api是什么?
  • 或者我需要使用一种更大、更丑陋的服务吗?

最佳答案

All tutorials and documentation suggest [...]

不,事实并非如此。存在文档和教程来解释内容,因此它们自然会专注于简单的案例,只是为了简单起见。

但确实旧版本的 Thrift 并没有提供这样的功能。从 0.9.2 版本开始,我们有 Support for Multiplexing Services on any Transport, Protocol and Server在整个代码库中广泛实现。

用法非常简单。细节取决于语言。例如,这是一个 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);

在这种情况下,我们有一个服务器通过同一个套接字提供两种服务,BenchmarkServiceAggr 服务。服务器部分以类似的方式设置。可以找到整个示例 in the code base under /lib/csharp/test/Multiplex .

关于thrift - 一个 thrift 服务器/传输可以实现多个服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32433925/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com