【问题标题】:How to implement a generic Thrift Proxy?如何实现通用 Thrift 代理?
【发布时间】:2017-01-29 04:32:21
【问题描述】:

在 Apache Thrift 中是否可以创建通用代理?例如在代理中,我想做请求/响应日志记录或测量性能。对于所有 RPC 调用,流程应该类似于客户端 通用代理 服务器。

【问题讨论】:

  • 接近投票者的注意事项:这个问题与服务器基础设施无关。

标签: rpc thrift


【解决方案1】:

实现自定义 Thrift “分层”协议或自定义 Thrift 传输,根据需要拦截您的调用。

很多语言都采用了multiplexed protocol,它使用了一个通用的TProtocolDecorator。这段代码看起来非常适合该任务。查看implementation of TMultiplexedProtocol 以了解它是如何使用的。基本上TProtocolDecorator 类完成了大部分的魔法,你只需要重写一些方法并将新开发的协议插入到 Thrift 传输/协议堆栈中。

或者,您可以通过添加分层传输来实现您的目标,类似于TBufferedTransport。但在这种情况下,您没有数据背后的语义,您只能看到字符串,而在协议级别,您有像 WriteMessageBeginReadMessageBegin 这样的方法,它们让生活变得更加轻松。

【讨论】:

  • 如果我使用多路复用协议,我的代理就不再是通用的了,不是吗?在这种情况下,我需要注册所有处理器。
  • 我提到了多路复用协议作为一个示例。我不建议在您的代码中使用多路复用,这在这里对您没有多大帮助。相反,您希望将其用作您想要在 TProtocolDecorator 之上开发的某些自己的协议的蓝图,以实现您的目标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-30
  • 1970-01-01
  • 2012-06-22
相关资源
最近更新 更多