【发布时间】:2017-01-29 04:32:21
【问题描述】:
在 Apache Thrift 中是否可以创建通用代理?例如在代理中,我想做请求/响应日志记录或测量性能。对于所有 RPC 调用,流程应该类似于客户端 通用代理 服务器。
【问题讨论】:
-
接近投票者的注意事项:这个问题与服务器基础设施无关。
在 Apache Thrift 中是否可以创建通用代理?例如在代理中,我想做请求/响应日志记录或测量性能。对于所有 RPC 调用,流程应该类似于客户端 通用代理 服务器。
【问题讨论】:
实现自定义 Thrift “分层”协议或自定义 Thrift 传输,根据需要拦截您的调用。
很多语言都采用了multiplexed protocol,它使用了一个通用的TProtocolDecorator。这段代码看起来非常适合该任务。查看implementation of TMultiplexedProtocol 以了解它是如何使用的。基本上TProtocolDecorator 类完成了大部分的魔法,你只需要重写一些方法并将新开发的协议插入到 Thrift 传输/协议堆栈中。
或者,您可以通过添加分层传输来实现您的目标,类似于TBufferedTransport。但在这种情况下,您没有数据背后的语义,您只能看到字符串,而在协议级别,您有像 WriteMessageBegin 或 ReadMessageBegin 这样的方法,它们让生活变得更加轻松。
【讨论】:
TProtocolDecorator 之上开发的某些自己的协议的蓝图,以实现您的目标。