SOA和微服務(wù)到底是什么關(guān)系?
說實(shí)話,我確實(shí)不明白SOA和微服務(wù)到底有什么本質(zhì)上的區(qū)別,兩者說到底都是對(duì)外提供接口的一種架構(gòu)設(shè)計(jì)方式。我倒覺得微服務(wù)其實(shí)就是隨著互聯(lián)網(wǎng)的發(fā)展,復(fù)雜的平臺(tái)、業(yè)務(wù)的出現(xiàn),導(dǎo)致SOA架構(gòu)向更細(xì)粒度、更通過化程度發(fā)展,就成了所謂的微服務(wù)了。以這種說法做為根據(jù),我覺得SOA與微服務(wù)的區(qū)別在于如下幾個(gè)方面:
微服務(wù)相比于SOA更加精細(xì),微服務(wù)更多的以獨(dú)立的進(jìn)程的方式存在,互相之間并無影響;
微服務(wù)提供的接口方式更加通用化,例如HTTP RESTful方式,各種終端都可以調(diào)用,無關(guān)語言、平臺(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ā)展圖和說明:
單一應(yīng)用架構(gòu)
當(dāng)網(wǎng)站流量很小時(shí),只需一個(gè)應(yīng)用,將所有功能都部署在一起,以減少部署節(jié)點(diǎn)和成本。
此時(shí),用于簡化增刪改查工作量的 數(shù)據(jù)訪問框架(ORM) 是關(guān)鍵。
垂直應(yīng)用架構(gòu)
當(dāng)訪問量逐漸增大,單一應(yīng)用增加機(jī)器帶來的加速度越來越小,將應(yīng)用拆成互不相干的幾個(gè)應(yīng)用,以提升效率。
此時(shí),用于加速前端頁面開發(fā)的 Web框架(MVC) 是關(guān)鍵。
分布式服務(wù)架構(gòu)
當(dāng)垂直應(yīng)用越來越多,應(yīng)用之間交互不可避免,將核心業(yè)務(wù)抽取出來,作為獨(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ù)越來越多,容量的評(píng)估,小服務(wù)資源的浪費(fèi)等問題逐漸顯現(xiàn),此時(shí)需增加一個(gè)調(diào)度中心基于訪問壓力實(shí)時(shí)管理集群容量,提高集群利用率。
此時(shí),用于提高機(jī)器利用率的 資源調(diào)度和治理中心(SOA) 是關(guān)鍵。
平臺(tái)隨著業(yè)務(wù)的發(fā)展從 All in One 環(huán)境就可以滿足業(yè)務(wù)需求(以Java來說,可能只是一兩個(gè)war包就解決了);發(fā)展到需要拆分多個(gè)應(yīng)用,并且采用MVC的方式分離前后端,加快開發(fā)效率;在發(fā)展到服務(wù)越來越多,不得不將一些核心或共用的服務(wù)拆分出來,其實(shí)發(fā)展到此階段,如果服務(wù)拆分的足夠精細(xì),并且獨(dú)立運(yùn)行,我覺得就可以將之理解為一個(gè)微服務(wù)了。
理想中的微服務(wù)架構(gòu)
沒有什么東西是完美的,網(wǎng)站架構(gòu)也是這樣的,只有「比之前好一點(diǎn)」的架構(gòu)或「目前最好的實(shí)現(xiàn)方式」,不存在理想中的架構(gòu),那么理想中微服務(wù)架構(gòu)應(yīng)該是怎么樣的呢,我覺得至少應(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)用,不分語言和平臺(tái);
服務(wù)部署或升級(jí)簡單,不會(huì)消耗大量人力并且部署過程不易出現(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ù)的,能快速方便的滿足業(yè)務(wù)需求的架構(gòu)才是好的架構(gòu),才是好的微服務(wù)架構(gòu)。
-
SOA
+關(guān)注
關(guān)注
1文章
295瀏覽量
27596 -
微服務(wù)
+關(guān)注
關(guān)注
0文章
143瀏覽量
7444
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
OptiSystem應(yīng)用:寬帶SOA特性
NVIDIA 發(fā)布保障代理式 AI 應(yīng)用安全的 NIM 微服務(wù)
微服務(wù)容器化部署好處多嗎?
容器化能替代微服務(wù)嗎?兩者有何區(qū)別
OptiSystem應(yīng)用:SOA波長變換器(XGM)
寶藏級(jí)微服務(wù)架構(gòu)工具合集
SSR與微服務(wù)架構(gòu)的結(jié)合應(yīng)用
微服務(wù)架構(gòu)與容器云的關(guān)系與區(qū)別
入門級(jí)攻略:如何容器化部署微服務(wù)?
理解在高輸出電流和溫度下工作的SOA曲線
![<b class='flag-5'>理解</b>在高輸出電流和溫度下工作的<b class='flag-5'>SOA</b>曲線](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
NVIDIA NIM微服務(wù)帶來巨大優(yōu)勢(shì)
采用OpenUSD和NVIDIA NIM微服務(wù)創(chuàng)建精準(zhǔn)品牌視覺
全新 NVIDIA NeMo Retriever微服務(wù)大幅提升LLM的準(zhǔn)確性和吞吐量
![全新 NVIDIA NeMo Retriever<b class='flag-5'>微服務(wù)</b>大幅提升LLM的準(zhǔn)確性和吞吐量](https://file1.elecfans.com/web2/M00/FE/A1/wKgZomajFTOAPHuKAAAbwwpa0vg402.png)
評(píng)論