在Apache Thrift中可以創建一個通用代理?對於例如在代理中,我想要做請求/響應日誌或測量性能。流程應該與客戶端< - >通用代理服務器< - >服務器的所有RPC調用。如何實現通用的Thrift代理?
回答
實現自定義的Thrift「分層」協議或自定義Thrift傳輸,可根據需要攔截您的呼叫。
很多語言都採用multiplexed protocol,它使用通用的TProtocolDecorator
。這段代碼看起來非常方便。看看implementation of TMultiplexedProtocol
看看它是如何使用的。基本上TProtocolDecorator
類完成了大部分的魔術,你只需要重寫一些方法,像往常一樣將新開發的協議插入Thrift傳輸/協議棧。
或者,您的目標可以通過添加分層傳輸來實現,類似於TBufferedTransport
。但是在這種情況下,您不具備數據背後的語義,只能看到字符串,而在協議層面,您可以使用像WriteMessageBegin
或ReadMessageBegin
這些方法,這使生活變得更加簡單。
如果我使用多路複用協議,我的代理不再是通用的,不是嗎?在這種情況下,我需要註冊所有處理器。 –
我提到了多路複用協議作爲**示例**。我不建議在你的代碼中使用Multiplex,這對你來說無能爲力。相反,您希望將其用作您想在「TProtocolDecorator」之上開發的一些自己的協議的藍圖,以實現您的目標。 – JensG
- 1. 通過代理實現SSL
- 2. 如何實現MockWebServer以使用代理
- 3. Hibernate如何實現代理對象?
- 4. 如何動態實現代理模式?
- 5. 如何實現反向代理?
- 6. 如何實現WCF代理池?
- 7. 如何通過透明代理實現SSL隧道?
- 8. 如何通過本地代理實現捲曲?
- 9. 實現MQTT代理
- 10. 在iOS中實現Thrift服務器
- 11. 的Java:實現通用的迭代
- 12. 使用iPhone上的CONNECT方法通過SSL實現HTTP代理
- 13. nCache的通用型處理器實現
- 14. 如何實現涉及異步調用的代理模式?
- 15. 實際上代理鍵的實現表
- 16. 如果WCF代理的方法不可見,WCF代理如何實現ICommunicationObject?
- 17. 實現遠程代理
- 18. 實現代理服務器
- 19. 實現一個HTTP代理
- 20. 如何實現一個通用的RepositoryFactory?
- 21. 如何編譯所有.thrift文件(* .thrift)
- 22. 實現後做並使用ES6代理
- 23. 使用JDK動態代理實現equals()
- 24. 如何使用MQTT代理實現故障轉移?
- 25. 如何在Tomcat上以Java實現(應用程序)代理?
- 26. 如何使用Apache Camel實現傳遞JAX-RS代理?
- 27. 如何實現通用PHP異常處理程序
- 28. 如何通過代理使用的FtpWebRequest
- 29. 如何實現代碼
- 30. 如何實現此代碼?
給選民的提示:這個問題並不是關於服務器基礎設施。 – JensG