SOA和微服務(wù)到底是什么關(guān)系?
說(shuō)實(shí)話,我確實(shí)不明白SOA和微服務(wù)到底有什么本質(zhì)上的區(qū)別,兩者說(shuō)到底都是對(duì)外提供接口的一種架構(gòu)設(shè)計(jì)方式。我倒覺(jué)得微服務(wù)其實(shí)就是隨著互聯(lián)網(wǎng)的發(fā)展,復(fù)雜的平臺(tái)、業(yè)務(wù)的出現(xiàn),導(dǎo)致SOA架構(gòu)向更細(xì)粒度、更通過(guò)化程度發(fā)展,就成了所謂的微服務(wù)了。以這種說(shuō)法做為根據(jù),我覺(jué)得SOA與微服務(wù)的區(qū)別在于如下幾個(gè)方面:
微服務(wù)相比于SOA更加精細(xì),微服務(wù)更多的以獨(dú)立的進(jìn)程的方式存在,互相之間并無(wú)影響;
微服務(wù)提供的接口方式更加通用化,例如HTTP RESTful方式,各種終端都可以調(diào)用,無(wú)關(guān)語(yǔ)言、平臺(tái)限制;
微服務(wù)更傾向于分布式去中心化的部署方式,在互聯(lián)網(wǎng)業(yè)務(wù)場(chǎng)景下更適合;
為什么要使用微服務(wù)?
技術(shù)為業(yè)務(wù)而生,架構(gòu)也為業(yè)務(wù)而出現(xiàn),當(dāng)然SOA和微服務(wù)也是因?yàn)闃I(yè)務(wù)的發(fā)展而出現(xiàn)。出現(xiàn)SOA和微服務(wù)框架與業(yè)務(wù)的發(fā)展、平臺(tái)的壯大密不可分,下面借用dubbo的網(wǎng)站架構(gòu)發(fā)展圖和說(shuō)明:
單一應(yīng)用架構(gòu)
當(dāng)網(wǎng)站流量很小時(shí),只需一個(gè)應(yīng)用,將所有功能都部署在一起,以減少部署節(jié)點(diǎn)和成本。
此時(shí),用于簡(jiǎn)化增刪改查工作量的 數(shù)據(jù)訪問(wèn)框架(ORM) 是關(guān)鍵。
垂直應(yīng)用架構(gòu)
當(dāng)訪問(wèn)量逐漸增大,單一應(yīng)用增加機(jī)器帶來(lái)的加速度越來(lái)越小,將應(yīng)用拆成互不相干的幾個(gè)應(yīng)用,以提升效率。
此時(shí),用于加速前端頁(yè)面開(kāi)發(fā)的 Web框架(MVC) 是關(guān)鍵。
分布式服務(wù)架構(gòu)
當(dāng)垂直應(yīng)用越來(lái)越多,應(yīng)用之間交互不可避免,將核心業(yè)務(wù)抽取出來(lái),作為獨(dú)立的服務(wù),逐漸形成穩(wěn)定的服務(wù)中心,使前端應(yīng)用能更快速的響應(yīng)多變的市場(chǎng)需求。
此時(shí),用于提高業(yè)務(wù)復(fù)用及整合的 分布式服務(wù)框架(RPC) 是關(guān)鍵。
流動(dòng)計(jì)算架構(gòu)
當(dāng)服務(wù)越來(lái)越多,容量的評(píng)估,小服務(wù)資源的浪費(fèi)等問(wèn)題逐漸顯現(xiàn),此時(shí)需增加一個(gè)調(diào)度中心基于訪問(wèn)壓力實(shí)時(shí)管理集群容量,提高集群利用率。
此時(shí),用于提高機(jī)器利用率的 資源調(diào)度和治理中心(SOA) 是關(guān)鍵。
平臺(tái)隨著業(yè)務(wù)的發(fā)展從 All in One 環(huán)境就可以滿(mǎn)足業(yè)務(wù)需求(以Java來(lái)說(shuō),可能只是一兩個(gè)war包就解決了);發(fā)展到需要拆分多個(gè)應(yīng)用,并且采用MVC的方式分離前后端,加快開(kāi)發(fā)效率;在發(fā)展到服務(wù)越來(lái)越多,不得不將一些核心或共用的服務(wù)拆分出來(lái),其實(shí)發(fā)展到此階段,如果服務(wù)拆分的足夠精細(xì),并且獨(dú)立運(yùn)行,我覺(jué)得就可以將之理解為一個(gè)微服務(wù)了。
理想中的微服務(wù)架構(gòu)
沒(méi)有什么東西是完美的,網(wǎng)站架構(gòu)也是這樣的,只有「比之前好一點(diǎn)」的架構(gòu)或「目前最好的實(shí)現(xiàn)方式」,不存在理想中的架構(gòu),那么理想中微服務(wù)架構(gòu)應(yīng)該是怎么樣的呢,我覺(jué)得至少應(yīng)該有如下幾個(gè)特點(diǎn):
能支持當(dāng)前業(yè)務(wù)需求,當(dāng)然這只是最最基本的條件;
每個(gè)微服務(wù)都要去中心化,不存在單點(diǎn)故障;
每個(gè)微服務(wù)都要實(shí)現(xiàn)高可用、高負(fù)載,不會(huì)因?yàn)橐粋€(gè)服務(wù)不可用而影響了整套業(yè)務(wù)流;
每個(gè)微服務(wù)都要高度通用化,即多種終端都可調(diào)用,不分語(yǔ)言和平臺(tái);
服務(wù)部署或升級(jí)簡(jiǎn)單,不會(huì)消耗大量人力并且部署過(guò)程不易出現(xiàn)人為錯(cuò)誤;
微服務(wù)具有快速注冊(cè)與自動(dòng)發(fā)現(xiàn)功能(例如dubbo框架)
當(dāng)然,這只是其中能想到的幾點(diǎn),實(shí)際環(huán)境中用到的微服務(wù)框架有可能會(huì)根據(jù)實(shí)際業(yè)務(wù)需求優(yōu)化出更加個(gè)性化的功能,也可能有些功能是不需要的。還是那句話,架構(gòu)是服務(wù)于業(yè)務(wù)的,能快速方便的滿(mǎn)足業(yè)務(wù)需求的架構(gòu)才是好的架構(gòu),才是好的微服務(wù)架構(gòu)。
-
SOA
+關(guān)注
關(guān)注
1文章
282瀏覽量
27404 -
微服務(wù)
+關(guān)注
關(guān)注
0文章
131瀏覽量
7322
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論