在Apache Thrift中是否可以创建通用代理?对于例如在代理中我想做请求/响应记录或测量性能。流程应该像Client< - >通用代理< - >所有RPC调用的服务器。
答案 0 :(得分:3)
实施自定义Thrift"分层"协议或自定义Thrift传输,根据需要拦截您的呼叫。
许多语言采用了使用通用multiplexed protocol的TProtocolDecorator
。这段代码看起来非常方便。查看implementation of TMultiplexedProtocol
以了解它是如何使用的。基本上TProtocolDecorator
类完成大部分魔术,你只需要覆盖一些方法并像往常一样将新开发的协议插入Thrift传输/协议栈。
或者,您可以通过添加类似于TBufferedTransport
的分层传输来实现您的目标。但是在这种情况下,你没有数据背后的语义,你只看到字符串,而在协议级别,你有WriteMessageBegin
或ReadMessageBegin
这样的方法,使生活更容易。