跨語言RPC框架
RPC框架
RPC(Remote Procedure Call):是一種計算機通信協議。該協議允許運行于一臺計算機的程序調用另一臺計算機的子程序,而程序員無需額外地為這個交互作用編程。
比較常見的RPC框架有Hessian、Thrift、Protocal Buffer
Hessian
Hessian采用的是二進制RPC協議,適用于發送二進制數據。基于Http協議進行傳輸。通過Servlet提供遠程服務。通過Hessain本身提供的API來發起請求。響應端根據Hessian提供的API來接受請求。
優點:
1.整個jar很小
2.配置簡單
3.功能強大,拋開了soap(simple object access protocal 簡單對象訪問協議)、ejb,采用二進制來傳遞對象
Thrift
Apache Thrift是facebook實現的一種高效、支持多種編程語言的遠程服務調用框架。目前流行的服務調用方式有很多種,例如基于SOAP消息格式的web service,基于json消息格式的Restful服務。其中所用到的數據傳輸方式播啊看XML,JSON等,然而XML相對JSON體積大些,傳輸效率低。JSON體積小,新穎,但還不夠完善。Apache Thrift所包含的代碼生成引擎可以在多種語言中,如c++、java、python、php、erlang、perl、haskell、c#、cocoa、smalltalk等創建高效的、無縫的服務,采用二進制格式,相對XML和JSON體積更小,對于高并發、大數據量和多語言的環境更有優勢。
Protocal Buffer
Protocal buffer 是一種輕便高效結構化數據存儲格式,可以用于接哦古化數據串行化,或者說序列化。它很時候做數據存儲或RPC數據交換格式。可用于通訊協議、數據存儲等領域的語言無關、平臺無關、可擴展的序列化結構數據格式。目前提供了c++、java、python三種語言的API。
Hessian、Thrift、Protocal Buffer
1.如果不需要很多語言互相調用,希望保持清晰的java接口代碼,減少開發工作量,推薦hessian
2.如果系統之間的數據量不是很大(<2M),推薦hessian
3.如果需要支持大數據量的傳輸,多語言調用,極高的并發支持,推薦使用thrift/protocal buffer。
參考:通信協議與序列化方案的糾結: Protocol Buffer, thrift or hessian?