天天看點

ESB,SOA,微服務結構的區分别以及WebService、RMI、RPC、REST、RestFul差別

一:ESB(enterprise service bus)企業總線

一圖勝萬語:

ESB,SOA,微服務結構的區分别以及WebService、RMI、RPC、REST、RestFul差別

ESB之前很火,特别是在大公司,如銀行,财經等大集團肯定或多或少的使用過。現在已經成曆史了,為什麼呢?

原因主要是:

1:ESB的本身就很複雜,大大增加了系統的複雜性和可維護性。

2:就是由于ESB想要做到所有服務都通過一個通路通信,直接降低了通信速度。

3.單純的ESB作用不大,需要配套其他衆多解決方案才能更好工作。比如Load balance,心跳監控等等。

二:SOA(Service Oriented Architecture) 面向服務架構

上圖從左右的淩亂轉換到右邊的ESB統一管理的思想,或者說設計模式就是SOA。有點抽像,說白了:它是一種設計理念,其中包含多個服務, 服務之間通過互相依賴最終提供一系列完整的功能。各個服務通常以獨立的形式部署運作,服務之間 通過網絡進行調用。

三:微服務(microservice ):

不知道是哪個始作俑者這麼直白翻譯成微服務?微者小也!是以很多人都認為微服務就是微小的服務,在這個全民皆微的時代:開發者認為把功能做到最小化就是微服務,業務的人認為把事情拆成小化單元化就是微服務了……每個人的眼裡都有自已的微服務(貌似跟風與圍觀是人的天性)。其實微服務是種思想,他是指把複雜的事情/系統能拆分成多個具有能獨立完成某件事或業務元件服務。

是以前提是複雜,有需要拆的才拆(要有價值與意義)。結果現在很多人為了’微’而微。比如明明是件很簡單而獨立的事:吃飯!很多人為了趕時髦,把吃飯拆成:拿碗,盛飯,拿筷子,夾菜…… 還美其名曰:微服務,高大上。

具體的可以參考:https://blog.csdn.net/weixin_40868341/article/details/98358291,其中有對微服務做了深刻分析。

四: WebService

這家夥搞程式的應該沒有人沒聽過吧。他主要是以開放的xml标準來實作不同平台/語言/域之間的通信。不太明白的可以自行百度下。

五:RMI(Remote Method Invocation)與RPC(Remote Procedure Call Protocol)

RMI:遠端方法調用是種Java技術,隻适用與Java之間進行通信。RPC:遠端過程調用協定是種協定,他與平台/語言無關。目前比較成功的如阿裡的dubbo.

借用baidu的一張圖說明下RPC工作原理:

ESB,SOA,微服務結構的區分别以及WebService、RMI、RPC、REST、RestFul差別

一次RPC調用的過程大概有10步:  

1.執行用戶端調用語句,傳送參數  

2.調用本地系統發送網絡消息  

3.消息傳送到遠端主機  

4.伺服器得到消息并取得參數  

5.根據調用請求以及參數執行遠端過程(服務)  

6.執行過程完畢,将結果傳回伺服器句柄  

7.伺服器句柄傳回結果,調用遠端主機的系統網絡服務發送結果  

8.消息傳回本地主機  

9.用戶端句柄由本地主機的網絡服務接收消息

10.用戶端接收到調用語句傳回的結果資料。

六.REST& RestFull

REST = REpresentational State Transfer .主要作用:URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作。

RESTful是一種針對Web,iOS,Android和第三方開發者變為平等的角色通過一套API來共同消費Server提供的服務的協定。。繼續借用一張圖來說明下。

他兩個的關系就是思想與實作的關系

ESB,SOA,微服務結構的區分别以及WebService、RMI、RPC、REST、RestFul差別