遠程通信技術(RPC)概覽

廣義的遠程通訊技術包括:RPC,WebService,RMI,JMS,EJB,JNDI

一、概念解釋

  • RPC:遠程過程調(diào)用,廣義的RPC和與MQ并列屬于系統(tǒng)間的交互方式,跨平臺,通過http通信,通信的過程相當于http遠程傳送參數(shù)(串行化技術),本質(zhì)上是一個請求相應模型。特征為隱藏底層通信細節(jié),不需要直接處理Socket通訊和Http通信

    • rpc的實現(xiàn):理論上來說WebService,gRPC,dubbo,微博Motan,thrift都是廣義RPC技術的實現(xiàn)。
  • CORBA:面向?qū)ο蟮木幊腆w系規(guī)范,分布式系統(tǒng),跨語言,對標RMI(競爭關系)。

    • CORBA的實現(xiàn):omniORB,TAO。
  • SOAP:簡單對象訪問協(xié)議,微軟聯(lián)合廠商對xml-rpc標準化,soap協(xié)議就是聯(lián)合標準化的結(jié)果,而且微軟搶先完善了soap協(xié)議,推出了webservice。對象訪問協(xié)議指的是使用XML描述web service的信息(URI/類/參數(shù)/返回值),理論上SOAP就是一段xml

  • WebService:屬于廣義rpc的一種(常見的廣義rpc實現(xiàn)還有xml-rpc和json-rpc),支持異構(gòu)系統(tǒng)間的交互, 支持不同語言的通信,使用http通信,通過serlvet提供XML格式的數(shù)據(jù),是SOAP協(xié)議的封裝,WSDL是它的描述方式。

    • 基于SOAP實現(xiàn)WebService:引入JAX-WS規(guī)范(java實現(xiàn)soap的一個規(guī)范,為了簡化基于soap的java開發(fā),使用jax-ws可以讓開發(fā)者不編寫任何生產(chǎn)和處理soap的代碼,jax-ws運行時會將api的調(diào)用轉(zhuǎn)換為soap的消息)基于jax-ws的開發(fā)框架有ApacheAxis2和ApacheCXF(結(jié)合spring,是常用框架)
    • 基于REST的實現(xiàn)WebService:對應有JAX-RS規(guī)范,基于jax-rs的框架有ApacheWink,Jersey,Spring REST
  • WSDL:webservice描述語言,描述SOAP協(xié)議的,也是段XML

  • RMI:遠程調(diào)用對象,其實是java實現(xiàn)了RPC的一組接口

    • 實現(xiàn):沒有框架,本身就是這種技術的實現(xiàn)
  • JMS:MQ

  • EJB:大型分布式,rmi-iiop協(xié)議

    • 直接對標spring體系:因為EJB是官方指定的標準,各個容器廠商都會不予余力的開發(fā)新版本來支持EJB標準,因此符合EJB的規(guī)范的容器,一般能適應企業(yè)的方方面面,而開源的spring結(jié)構(gòu)體系就是個不統(tǒng)一的標準,你不能將spring+structs的架構(gòu)遷移到spring+WebWork,更不能輕易將Spring+hibernate遷移到Spring+iBatis,但是因為EJB的標準問題,可以在WebSphere,WebLogic和JBOSS之間切換。因為EJB的過于重量級和難以使用,相當于民間開發(fā)了一套技術(spring)來覆蓋了官方的EJB所提供的技術。

二、廣義RPC發(fā)展歷程

  • 廣義RPC的技術發(fā)展歷程
    以下按照時間順序排序
    • CORBA
    • DCOM,COM+
    • JAVA RMI
    • .net remoting
    • XML-RPC,SOAP,WebService(冗余數(shù)據(jù)多,處理速度慢)
    • Hessian(二進制,官方只提供了java的實現(xiàn))
    • JSON-RPC(沒有統(tǒng)一實現(xiàn))
    • Microsoft WCF,WebAPI(微軟技術整合)
    • ZeroC Ice,Thrift,GRPC

下圖為技術發(fā)展簡圖:


下載.png

三、狹義RPC技術框架

由于目前跨內(nèi)存調(diào)用的普遍性,RPC往往代稱更加具體的基于底層協(xié)議二進制流的RPC框架,與WebService最大的不同就是: 狹義的RPC基于二進制流的序列化和反序列化,故不能夠提供跨語言的服務,但是比基于文本解析的WebService更加高效。

狹義RPC框架一般需要高性能的網(wǎng)絡框架,如Netty,Mina,高性能的序列化反序列化框架,尋址方式,如果是帶會話的RPC,還要有會話和狀態(tài)保持功能。

當下XML-RPC,SOAP,WebService技術的缺陷:

  • 冗余數(shù)據(jù)太多,處理速度太慢。
  • RPC 風格的 Web Service 跨語言性不佳,而 Document 風格的 Web Service 又太過難用。
  • Web Service 沒有解決用戶的真正問題,只是把一個問題變成了另一個問題。
  • Web Service 的規(guī)范太過復雜,以至于在 .NET 和 Java 平臺以外沒有真正好用的實現(xiàn),甚至沒有可用的實現(xiàn)。
  • 跨語言跨平臺只是 Web Service 的一個口號,雖然很多人迷信這一點,但事實上它并沒有真正實現(xiàn)。
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 在分布式服務框架中,一個最基礎的問題就是遠程服務是怎么通訊的,在Java領域中有很多可實現(xiàn)遠程通訊的技術,例如:R...
    wyatt_plus閱讀 889評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • 歲月女孩----1 我叫林然,今年14歲。讀初一,嘴巴有點毒舌,對別人的弱點總是逮住不放,會動腦筋,愛耍一些小聰明...
    耳谷閱讀 229評論 0 0
  • MIAMI — The Heat’s current roster is made up of 19 player...
    prudenceli閱讀 165評論 0 0
  • 而此時,任然卻衣衫不整的走在人來人往的人行路上,她的頭發(fā)看上去像一團雜草一樣凌亂的披在肩上,全是褶皺的襯衫被胡...
    biubiubiu糖閱讀 317評論 0 2

友情鏈接更多精彩內(nèi)容