新聞中心
玩過(guò) Dubbo 的小伙伴應(yīng)該都有聽(tīng)說(shuō)過(guò)一個(gè)概念叫做 SOA,每當(dāng)我們說(shuō)起微服務(wù)的時(shí)候,很多人就會(huì)去糾結(jié)這和 SOA 有啥關(guān)系呀?感覺(jué)換湯不換藥呀。

創(chuàng)新互聯(lián)建站是一家專(zhuān)注于成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計(jì),松滋網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:松滋等地區(qū)。松滋做網(wǎng)站價(jià)格咨詢(xún):028-86922220
今天松哥來(lái)稍微和小伙伴們討論下這個(gè)話(huà)題,我們一起來(lái)看看 SOA 和微服務(wù)到底有何異同。
1. SOA
SOA,英文全稱(chēng)是 Service-Oriented Architecture (SOA) governance,單純從字面來(lái)看,是面向服務(wù)的架構(gòu)治理。但是小伙伴們?cè)诰W(wǎng)上應(yīng)該很難看到比較權(quán)威的關(guān)于 SOA 通俗易懂的解釋。我這里還是以 TienChin 項(xiàng)目為例,來(lái)和大家捋一捋 SOA。
假設(shè) TienChin 中有一個(gè)用戶(hù)注冊(cè)的功能,現(xiàn)在前端的注冊(cè)有三個(gè)端:
- 網(wǎng)頁(yè)
- 手機(jī) App
- 小程序
如果采用傳統(tǒng)的 JavaWeb 開(kāi)發(fā)方式,那么我可能得寫(xiě)三遍注冊(cè)功能,為三個(gè) Client 各自提供一個(gè)接口,然而小伙伴們稍微思考一下就會(huì)發(fā)現(xiàn),注冊(cè)邏輯其實(shí)都差不多,區(qū)別可能僅僅是接口返回的數(shù)據(jù)格式有差異而已。因此,我們可以將注冊(cè)功能抽取出來(lái),寫(xiě)成一個(gè)單獨(dú)的服務(wù),然后通過(guò)遠(yuǎn)程服務(wù)調(diào)用如 HTTP 或者 Socket 等,去調(diào)用這個(gè)注冊(cè)的功能模塊。這就是一個(gè)簡(jiǎn)單的 SOA 架構(gòu)設(shè)計(jì)。
然而看了這個(gè)很多小伙伴都懵了,這不就是微服務(wù)嗎?
接下來(lái)我們就來(lái)說(shuō)說(shuō) SOA 和微服務(wù)到底哪里不一樣。
2. SOA PK 微服務(wù)
2.1 服務(wù)間通信
首先第一點(diǎn),就是服務(wù)之間的通信方式不同。
玩過(guò) Dubbo 的小伙伴都知道,Dubbo 中常用的通信協(xié)議就是 Dubbo 協(xié)議,Dubbo 協(xié)議本質(zhì)上其實(shí)就是 socket 通信。在 SOA 中,服務(wù)之間的通信往往都是采用的重量級(jí)協(xié)議如 SOAP 等。
而我們常用的微服務(wù)框架 Spring Cloud,小伙伴們知道,這里的通信基本上都是 REST 這種輕量級(jí)協(xié)議,有時(shí)候我們甚至是基于消息來(lái)驅(qū)動(dòng)微服務(wù),無(wú)論哪一種,微服務(wù)中服務(wù)之間的通信協(xié)議都更加輕量級(jí)。
2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
在 SOA 中,一般來(lái)說(shuō)不太會(huì)進(jìn)行分庫(kù)設(shè)計(jì),也就是說(shuō)整個(gè)系統(tǒng)還是使用的一個(gè)庫(kù),系統(tǒng)可能會(huì)分為不同的服務(wù),但是不同的服務(wù)操作的都是同一個(gè)庫(kù)。
微服務(wù)則不同,昨天的文章中,松哥畫(huà)的下面這張圖,基本上是每一個(gè)服務(wù)都有一個(gè)自己的庫(kù),每個(gè)服務(wù)都是操作自己的庫(kù),合同管理中需要調(diào)用用戶(hù)管理的數(shù)據(jù),不能直接調(diào)用庫(kù),得通過(guò)用戶(hù)管理提供的 REST 接口去調(diào)用。
2.3 服務(wù)規(guī)模
第三點(diǎn)就是服務(wù)的規(guī)模不同了。
SOA 中的每一個(gè)服務(wù),整體上來(lái)說(shuō)還是一個(gè)比較大的單體項(xiàng)目,因?yàn)?SOA 一般不會(huì)分的很細(xì)。而微服務(wù)則不同,在微服務(wù)中,我們會(huì)將服務(wù)都劃分的很細(xì),每一個(gè)服務(wù)基本上都是只負(fù)責(zé)一個(gè)很小的功能模塊。
以前我們玩 SOA 的時(shí)候,基本上都還是傳統(tǒng)的 SSM 項(xiàng)目,小伙伴們知道,搭建一個(gè) SSM 項(xiàng)目就已經(jīng)很費(fèi)事了,所以能少搭建就少搭建。但是后來(lái)有了 Spring Boot 就不一樣了,利用 Spring Boot,我們可以非常方便快捷的創(chuàng)建一個(gè)項(xiàng)目,那么此時(shí)我們就有足夠的條件把服務(wù)劃分的比較細(xì)致了。
所以呢,整體上看,SOA 往往是幾個(gè)比較大型的服務(wù)組合在一起,而微服務(wù)則往往是幾十甚至上百個(gè)服務(wù)組成。
好啦,臨近放假,今天就聊點(diǎn)簡(jiǎn)單的不燒腦的哈哈~
網(wǎng)站名稱(chēng):SOA和微服務(wù)有何區(qū)別?
鏈接地址:http://www.dlmjj.cn/article/djiehej.html


咨詢(xún)
建站咨詢(xún)
