Java遠程通訊可選技術及原理

來源:互聯網
上載者:User

在分布式服務架構中,一個最基礎的問題就是遠程服務是怎麼通訊的,在Java領域中有很多可實現遠程通訊的技術,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,這些名詞之間到底是些什麼關係呢,它們背後到底是基於什麼原理實現的呢,瞭解這些是實現分布式服務架構的基礎知識,而如果在效能上有高的要求的話,那深入瞭解這些技術背後的機制就是必須的了,在這篇blog中我們將來一探究竟,拋磚引玉,歡迎大家提供更多的實現遠程通訊的技術和原理的介紹。

基本原理

要實現網路機器間的通訊,首先得來看看電腦系統網路通訊的基本原理,在底層層面去看,網路通訊需要做的就是將流從一台電腦傳輸到另外一台電腦,基於傳輸協議和網路IO來實現,其中傳輸協議比較出名的有http、tcp、udp等等,http、tcp、udp都是在為某類應用情境而定義出的傳輸協議,網路IO,主要有bio、nio、aio三種方式,所有的分布式應用通訊都基於這個原理而實現,只是為了應用的易用,各種語言通常都會提供一些更為貼近應用易用的應用程式層協議。

應用級協議

遠程服務通訊,需要達到的目標是在一台電腦發起請求,另外一台機器在接收到請求後進行相應的處理並將結果返回給請求端,這其中又會有諸如one way request、同步請求、非同步請求等等請求方式,按照網路通訊原理,需要實現這個需要做的就是將請求轉換成流,通過傳輸協議傳輸至遠端,遠端電腦在接收到請求的流後進行處理,處理完畢後將結果轉化為流,並通過傳輸協議返回給調用端。

原理是這樣的,但為了應用的方便,業界推出了很多基於此原理之上的應用級的協議,使得大家可以不用去直接操作這麼底層的東西,通常應用級的遠程通訊協定會提供:

1、為了避免直接做流操作這麼麻煩,提供一種更加易用或貼合語言的標準傳輸格式;

2、網路通訊機制的實現,就是替你完成了將傳輸格式轉化為流,通過某種傳輸協議傳輸至遠端電腦,遠端電腦在接收到流後轉化為傳輸格式,並進行儲存或以某種方式通知遠端電腦。

所以在學習應用級的遠程通訊協定時,我們可以帶著這幾個問題進行學習:

1、傳輸的標準格式是什嗎?

2、怎麼樣將請求轉化為傳輸的流?

3、怎麼接收和處理流?

4、傳輸協議是?

不過應用級的遠程通訊協定並不會在傳輸協議上做什麼多大的改進,主要是在流操作方面,讓應用程式層產生流和處理流的這個過程更加的貼合所使用的語言或標準,至於傳輸協議則通常都是可選的,在java領域中知名的有:RMI、XML-RPC、Binary-RPC、SOAP、CORBA、JMS,來具體的看看這些遠程通訊的應用級協議:

--------------------------------------------------------------------------------------------------------------------------------------------------

RMI

RMI是個典型的為java定製的遠程通訊協定,我們都知道,在single vm中,我們可以通過直接調用java object instance來實現通訊,那麼在遠程通訊時,如果也能按照這種方式當然是最好了,這種遠程通訊的機製成為RPC(Remote Procedure Call),RMI正是朝著這個目標而誕生的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.