微服務(wù)架構(gòu)從入門到放棄 —《深入理解微服務(wù)之間的區(qū)別》

什么是Restful

Restful是一種架構(gòu)設(shè)計風(fēng)格拉一,提供了設(shè)計原則和約束條件囤攀,而不是架構(gòu)背稼,而滿足這些約束條件和原則的應(yīng)用程序或設(shè)計就是 Restful架構(gòu)或服務(wù)桨嫁。

主要的設(shè)計原則:
  • 資源與URI
  • 統(tǒng)一資源接口(HTTP方法如GET植兰,PUT和POST)
  • 資源的表述
  • 資源的鏈接
  • 狀態(tài)的轉(zhuǎn)移
    總之,RESTful的核心就是后端將資源發(fā)布為URI瞧甩,前端通過URI訪問資源钉跷,并通過HTTP動詞表示要對資源進行的操作弥鹦。

什么是SOAP

簡單對象訪問協(xié)議是一種數(shù)據(jù)交換協(xié)議規(guī)范肚逸,是一種輕量的爷辙、簡單的、基于XML的協(xié)議的規(guī)范朦促。SOAP協(xié)議和HTTP協(xié)議一樣膝晾,都是底層的通信協(xié)議,只是請求包的格式不同而已务冕,SOAP包是XML格式的血当。

SOAP的消息是基于xml并封裝成了符合http協(xié)議,因此禀忆,它符合任何路由器臊旭、 防火墻或代理服務(wù)器的要求。

SOAP可以使用任何語言來完成箩退,只要發(fā)送正確的soap請求即可离熏,基于soap的服務(wù)可以在任何平臺無需修改即可正常使用。

RPC

RPC就是從一臺機器(客戶端)上通過參數(shù)傳遞的方式調(diào)用另一臺機器(服務(wù)器)上的一個函數(shù)或方法(可以統(tǒng)稱為服務(wù))并得到返回的結(jié)果戴涝。

RPC 會隱藏底層的通訊細(xì)節(jié)(不需要直接處理Socket通訊或Http通訊)

RPC 是一個請求響應(yīng)模型滋戳。客戶端發(fā)起請求啥刻,服務(wù)器返回響應(yīng)(類似于Http的工作方式)

RPC 在使用形式上像調(diào)用本地函數(shù)(或方法)一樣去調(diào)用遠程的函數(shù)(或方法)奸鸯。

4種典型RPC遠程調(diào)用框架

(1):RMI實現(xiàn),利用java.rmi包實現(xiàn)可帽,基于Java遠程方法協(xié)議(Java Remote Method Protocol)和java的原生序列化娄涩。

(2):Hessian,是一個輕量級的remoting onhttp工具映跟,使用簡單的方法提供了RMI的功能钝满。 基于HTTP協(xié)議,采用二進制編解碼申窘。

(3):thrift是一種可伸縮的跨語言服務(wù)的軟件框架弯蚜。thrift允許你定義一個描述文件,描述數(shù)據(jù)類型和服務(wù)接口剃法。依據(jù)該文件碎捺,編譯器方便地生成RPC客戶端和服務(wù)器通信代碼。

(4):dubbo贷洲,阿里的RPC框架收厨。

(5):還有SpringCloud框架,微服務(wù)全家桶优构。為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)的一些工具诵叁,包括配置管理、服務(wù)發(fā)現(xiàn)钦椭、斷路器拧额、路由碑诉、微代理、事件總線侥锦、全局鎖进栽、決策競選、分布式會話等等恭垦。

微服務(wù)在本質(zhì)上快毛,就是rpc。rpc有基于tcp的番挺,http的唠帝,mq的等等。spring cloud是基于spring boot的玄柏,spring boot 實現(xiàn)的是http協(xié)議的rpc没隘,算是rpc的一個子集。

什么是SOA

SOA(Service-Oriented Architecture)禁荸,中文全稱:面向服務(wù)的架構(gòu)右蒲。

通俗點來講,SOA提倡將不同應(yīng)用程序的業(yè)務(wù)功能封裝成“服務(wù)”并宿主起來赶熟,通常以接口和契約的形式暴露并提供給外界應(yīng)用訪問(通過交換消息)瑰妄,達到不同系統(tǒng)可重用的目的。

SOA是一個組件模型映砖,它能將不同的服務(wù)通過定義良好的接口和契約聯(lián)系起來间坐。服務(wù)是SOA的基石。

微服務(wù)和SOA的區(qū)別

微服務(wù)是SOA架構(gòu)演進的結(jié)果邑退。兩者說到底都是對外提供接口的一種架構(gòu)設(shè)計方式,隨著互聯(lián)網(wǎng)的發(fā)展竹宋,復(fù)雜的平臺、業(yè)務(wù)的出現(xiàn)地技,導(dǎo)致SOA架構(gòu)向更細(xì)粒度蜈七、更通過化程度發(fā)展,就成了所謂的微服務(wù)了莫矗。

總之飒硅,微服務(wù)是SOA發(fā)展出來的產(chǎn)物,它是一種比較現(xiàn)代化的細(xì)粒度的SOA實現(xiàn)方式作谚。

SOA與微服務(wù)的區(qū)別在于如下幾個方面:

  • 微服務(wù)相比于SOA更加精細(xì)三娩,微服務(wù)更多的以獨立的進程的方式存在,互相之間并無影響妹懒;
  • 微服務(wù)提供的接口方式更加通用化雀监,例如HTTP RESTful方式,各種終端都可以調(diào)用眨唬,無關(guān)語言会前、平臺限制好乐;
  • 微服務(wù)更傾向于分布式去中心化的部署方式,在互聯(lián)網(wǎng)業(yè)務(wù)場景下更適合回官。

為什么要使用微服務(wù)?

技術(shù)為業(yè)務(wù)而生搂橙,架構(gòu)也為業(yè)務(wù)而出現(xiàn)歉提,當(dāng)然SOA和微服務(wù)也是因為業(yè)務(wù)的發(fā)展而出現(xiàn)。出現(xiàn)SOA和微服務(wù)框架與業(yè)務(wù)的發(fā)展区转、平臺的壯大密不可分苔巨,下面借用dubbo的網(wǎng)站架構(gòu)發(fā)展圖和說明:

單一應(yīng)用架構(gòu)
當(dāng)網(wǎng)站流量很小時,只需一個應(yīng)用废离,將所有功能都部署在一起侄泽,以減少部署節(jié)點和成本。
此時蜻韭,用于簡化增刪改查工作量的數(shù)據(jù)訪問框架(ORM) 是關(guān)鍵悼尾。

垂直應(yīng)用架構(gòu)
當(dāng)訪問量逐漸增大,單一應(yīng)用增加機器帶來的加速度越來越小肖方,將應(yīng)用拆成互不相干的幾個應(yīng)用闺魏,以提升效率。
此時俯画,用于加速前端頁面開發(fā)的Web框架(MVC)是關(guān)鍵析桥。

分布式服務(wù)架構(gòu)
當(dāng)垂直應(yīng)用越來越多,應(yīng)用之間交互不可避免艰垂,將核心業(yè)務(wù)抽取出來泡仗,作為獨立的服務(wù),逐漸形成穩(wěn)定的服務(wù)中心猜憎,使前端應(yīng)用能更快速的響應(yīng)多變的市場需求娩怎。
此時,用于提高業(yè)務(wù)復(fù)用及整合的分布式服務(wù)框架(RPC)是關(guān)鍵胰柑。

流動計算架構(gòu)
當(dāng)服務(wù)越來越多峦树,容量的評估,小服務(wù)資源的浪費等問題逐漸顯現(xiàn)旦事,此時需增加一個調(diào)度中心基于訪問壓力實時管理集群容量魁巩,提高集群利用率。
此時姐浮,用于提高機器利用率的資源調(diào)度和治理中心(SOA)是關(guān)鍵谷遂。

平臺隨著業(yè)務(wù)的發(fā)展從 All in One 環(huán)境就可以滿足業(yè)務(wù)需求(以Java來說,可能只是一兩個war包就解決了)卖鲤。

發(fā)展到需要拆分多個應(yīng)用肾扰,并且采用MVC的方式分離前后端畴嘶,加快開發(fā)效率;在發(fā)展到服務(wù)越來越多集晚,不得不將一些核心或共用的服務(wù)拆分出來窗悯,其實發(fā)展到此階段,如果服務(wù)拆分的足夠精細(xì)偷拔,并且獨立運行蒋院,我覺得就可以將之理解為一個微服務(wù)了。

往期精彩內(nèi)容

兩個月拿到N個offer莲绰,看看我是如何做到的

面試總結(jié):2019年最全面試題資料學(xué)習(xí)大全—(含答案)

淘寶面試回來欺旧,想對程序員們談?wù)?/a> 》

關(guān)注作者微信公眾號 “java爛豬皮” 了解更多你學(xué)到想放棄的后端架構(gòu)知識。

  • 序言:七十年代末蛤签,一起剝皮案震驚了整個濱河市辞友,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌震肮,老刑警劉巖称龙,帶你破解...
    沈念sama閱讀 210,835評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異戳晌,居然都是意外死亡茵瀑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評論 2 383
  • 文/潘曉璐 我一進店門躬厌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來马昨,“玉大人,你說我怎么就攤上這事扛施『枧酰” “怎么了?”我有些...
    開封第一講書人閱讀 156,481評論 0 345
  • 文/不壞的土叔 我叫張陵疙渣,是天一觀的道長匙奴。 經(jīng)常有香客問我,道長妄荔,這世上最難降的妖魔是什么泼菌? 我笑而不...
    開封第一講書人閱讀 56,303評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮啦租,結(jié)果婚禮上哗伯,老公的妹妹穿的比我還像新娘。我一直安慰自己篷角,他們只是感情好焊刹,可當(dāng)我...
    茶點故事閱讀 65,375評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般虐块。 火紅的嫁衣襯著肌膚如雪俩滥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,729評論 1 289
  • 那天贺奠,我揣著相機與錄音霜旧,去河邊找鬼。 笑死儡率,一個胖子當(dāng)著我的面吹牛挂据,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喉悴,決...
    沈念sama閱讀 38,877評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼棱貌,長吁一口氣:“原來是場噩夢啊……” “哼玖媚!你這毒婦竟也來了箕肃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,633評論 0 266
  • 序言:老撾萬榮一對情侶失蹤今魔,失蹤者是張志新(化名)和其女友劉穎勺像,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體错森,經(jīng)...
    沈念sama閱讀 44,088評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡吟宦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,443評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了涩维。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片殃姓。...
    茶點故事閱讀 38,563評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瓦阐,靈堂內(nèi)的尸體忽然破棺而出蜗侈,到底是詐尸還是另有隱情,我是刑警寧澤睡蟋,帶...
    沈念sama閱讀 34,251評論 4 328
  • 正文 年R本政府宣布踏幻,位于F島的核電站,受9級特大地震影響戳杀,放射性物質(zhì)發(fā)生泄漏该面。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,827評論 3 312
  • 文/蒙蒙 一信卡、第九天 我趴在偏房一處隱蔽的房頂上張望隔缀。 院中可真熱鬧,春花似錦傍菇、人聲如沸蚕泽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽须妻。三九已至仔蝌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荒吏,已是汗流浹背敛惊。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绰更,地道東北人瞧挤。 一個月前我還...
    沈念sama閱讀 46,240評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像儡湾,于是被迫代替她去往敵國和親特恬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,435評論 2 348

推薦閱讀更多精彩內(nèi)容