一文秒懂Restful、SOAP、RPC、SOA、微服務的區別
平時經常接觸到:通訊協議、Restful、RPC、SOA、微服務等等,很多時候並不太清楚之間的區別,希望本篇能解釋清楚之間的區別與聯絡
01
—
什麼是Restful
Restful是一種架構設計風格,提供了設計原則和約束條件,而不是架構,而滿足這些約束條件和原則的應用程式或設計就是 Restful架構或服務。
主要的設計原則:
資源與URI
統一資源介面(HTTP方法如GET,PUT和POST)
資源的表述
資源的連結
狀態的轉移
總之,RESTful的核心就是後端將資源釋出為URI,前端透過URI訪問資源,並透過HTTP動詞表示要對資源進行的操作。
02
—
什麼是SOAP
SOAP簡單物件訪問協議是一種資料交換協議規範,是一種輕量的、簡單的、基於XML的協議的規範。SOAP協議和HTTP協議一樣,都是底層的通訊協議,只是請求包的格式不同而已,SOAP包是XML格式的。
SOAP的訊息是基於xml並封裝成了符合http協議,因此,它符合任何路由器、 防火牆或代理伺服器的要求。
SOAP可以使用任何語言來完成,只要傳送正確的soap請求即可,基於soap的服務可以在任何平臺無需修改即可正常使用。
03
—
什麼是RPC
RPC就是從一臺機器(客戶端)上透過引數傳遞的方式呼叫另一臺機器(伺服器)上的一個函式或方法(可以統稱為服務)並得到返回的結果。
RPC 會隱藏底層的通訊細節(不需要直接處理Socket通訊或Http通訊)
RPC 是一個請求響應模型。客戶端發起請求,伺服器返回響應(類似於Http的工作方式)
RPC 在使用形式上像呼叫本地函式(或方法)一樣去呼叫遠端的函式(或方法)。
03
—
RPC框架有哪些
(1)RMI實現,利用java.rmi包實現,基於Java遠端方法協議(Java Remote Method Protocol)和java的原生序列化。
(2)gRPC是由 google開發的一個高效能、通用的開源RPC框架,主要面向移動應用開發且基於HTTP/2協議標準而設計,同時支援大多數流行的程式語言。
(3)thrift是一種可伸縮的跨語言服務的軟體框架。thrift允許你定義一個描述檔案,描述資料型別和服務介面。依據該檔案,編譯器方便地生成RPC客戶端和伺服器通訊程式碼。
(4)dubbo,阿里的RPC框架。
(5)還有SpringCloud框架,微服務全家桶。為開發人員提供了快速構建分散式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微代理、事件匯流排、全域性鎖、決策競選、分散式會話等等。
04
—
什麼是SOA
SOA(Service-Oriented Architecture),中文全稱:面向服務的架構。
通俗點來講,SOA提倡將不同應用程式的業務功能封裝成“服務”並宿主起來,通常以介面和契約的形式暴露並提供給外界應用訪問(透過交換訊息),達到不同系統可重用的目的。
SOA是一個元件模型,它能將不同的服務透過定義良好的介面和契約聯絡起來。服務是SOA的基石。
05
—
SOA和微服務的區別
微服務是SOA架構演進的結果。兩者說到底都是對外提供介面的一種架構設計方式,隨著網際網路的發展,複雜的平臺、業務的出現,導致SOA架構向更細粒度、更透過化程度發展,就成了所謂的微服務了。
總之,微服務是SOA發展出來的產物,它是一種比較現代化的細粒度的SOA實現方式。
SOA與微服務的區別在於如下幾個方面:
微服務相比於SOA更加精細,微服務更多的以獨立的程式的方式存在,互相之間並無影響;
微服務提供的介面方式更加通用化,例如HTTP RESTful方式,各種終端都可以呼叫,無關語言、平臺限制;
微服務更傾向於分散式去中心化的部署方式,在網際網路業務場景下更適合。
06
—
為什麼需要使用微服務
技術為業務而生,架構也為業務而出現,當然SOA和微服務也是因為業務的發展而出現。
出現SOA和微服務框架與業務的發展、平臺的壯大密不可分,下面借用dubbo的網站架構發展圖和說明:
單一應用架構
當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本。
此時,用於簡化增刪改查工作量的 資料訪問框架(ORM) 是關鍵。
垂直應用架構
當訪問量逐漸增大,單一應用增加機器帶來的加速度越來越小,將應用拆成互不相干的幾個應用,以提升效率。
此時,用於加速前端頁面開發的 Web框架(MVC) 是關鍵。
分散式服務架構
當垂直應用越來越多,應用之間互動不可避免,將核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。
此時,用於提高業務複用及整合的 分散式服務框架(RPC) 是關鍵。
流動計算架構
當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個排程中心基於訪問壓力實時管理叢集容量,提高叢集利用率。
此時,用於提高機器利用率的 資源排程和治理中心(SOA) 是關鍵。
平臺隨著業務的發展從 All in One 環境就可以滿足業務需求(以Java來說,可能只是一兩個war包就解決了)。
發展到需要拆分多個應用,並且採用MVC的方式分離前後端,加快開發效率;在發展到服務越來越多,不得不將一些核心或共用的服務拆分出來,其實發展到此階段,如果服務拆分的足夠精細,就進入微服務了時代了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027824/viewspace-2946461/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- IBM觀點:SOA與微服務區別?IBM微服務
- SOA架構和微服務架構的區別架構微服務
- 單體巨石、微服務和SOA關係與區別微服務
- SOA架構和微服務架構的區別是什麼?架構微服務
- 主流RPC框架詳解,以及與SOA、REST的區別RPC框架REST
- 面試官靈魂三問:什麼是SOA?什麼是微服務?SOA和微服務有什麼區別?面試微服務
- Python和Java的區別?看完秒懂!PythonJava
- 一文秒懂分散式、叢集、負載均衡之間的區別分散式負載
- 【SpringCloud】微服務前置知識點:restful API dependencies和dependencyManager的區別SpringGCCloud微服務RESTAPI
- 一文讀懂微服務架構——【詳解】微服務架構
- 一文讀懂BeanFactory和FactoryBean區別Bean
- 三分鐘秒懂BIO/NIO/AIO區別?AI
- Spring Boot微服務是一種安全的SOASpring Boot微服務
- Soa: 一個輕量級的微服務庫微服務
- 一文秒懂CPU使用率
- 面試都在問的微服務、服務治理、RPC、下一代微服務... 一文帶你徹底搞懂!面試微服務RPC
- lms微服務的rpc通訊框架微服務RPC框架
- 叢集、分散式、SOA、微服務、webService等思想的整理分散式微服務Web
- 微服務7:通訊之RPC微服務RPC
- 聊一聊微服務元件區別微服務元件
- 一文學懂 TypeScript 的型別TypeScript型別
- 在微服務中引入ESB使SOA重獲新生微服務
- 「萌新指南」SOA vs. 微服務:What’s the Difference?微服務
- 微服務中GraphQL與RESTful比較微服務REST
- 耦合與聚合的區別比單體與微服務區別更重要微服務
- 微服務治理平臺的RPC方案實現微服務RPC
- 秒懂 this
- 單體應用、SOA、微服務,優劣勢都有哪些?微服務
- 一文讀懂SpringBoot、微服務架構和大資料治理之間的故事Spring Boot微服務架構大資料
- 對比Restful Api和RpcRESTAPIRPC
- 一文讀懂鴻蒙系統與安卓系統的區別鴻蒙安卓
- 通俗地理解面向服務的架構(SOA)以及微服務之間的關係架構微服務
- 一文帶你秒懂商業智慧BI的價值所在!
- 分散式架構和微服務架構的區別分散式架構微服務
- 微服務架構的理解以及和 RPC 的關係微服務架構RPC
- 一文秒懂什麼是依賴注入, Ioc容器依賴注入
- 一文讀懂MySQL的事務隔離級別及MVCC機制MySqlMVC
- SummerSoC 2020:基於領域驅動的服務設計(SOA/微服務) – Stefan Kapferer微服務