通俗易懂的讲SOA
<微服務(wù)設(shè)計(jì)>1.3節(jié):SOA是一種設(shè)計(jì)方法,其中包含多個(gè)服務(wù),而服務(wù)之間通過(guò)配合最終會(huì)提供一系列功能。一個(gè)服務(wù)通常以獨(dú)立的形式存在于操作系統(tǒng)進(jìn)程中。服務(wù)之間通過(guò)網(wǎng)絡(luò)調(diào)用,而非采用進(jìn)程內(nèi)調(diào)用的方式。?
通俗易懂的講SOA?
對(duì)SOA的粗暴理解:把系統(tǒng)按照實(shí)際業(yè)務(wù)進(jìn)行拆分,拆分成大小合適、獨(dú)立部署的模塊、每個(gè)模塊之間相互獨(dú)立。
比如現(xiàn)在有一個(gè)數(shù)據(jù)庫(kù),一個(gè)JavaWeb網(wǎng)站客戶端,一個(gè)IOS客戶端,一個(gè)安卓客戶端。
現(xiàn)在我要從這個(gè)數(shù)據(jù)庫(kù)中獲取用戶注冊(cè)列表,如果不用SAO設(shè)計(jì)理念,那么就會(huì)這樣:JavaWeb端網(wǎng)站里面寫一個(gè)查詢方法從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)然后現(xiàn)在在網(wǎng)頁(yè)上,IOS客戶端里面也寫一個(gè)查詢方法獲取數(shù)據(jù)顯示,IOS也是這樣。弊端就是,三個(gè)地方都有相同的業(yè)務(wù)代碼,如果要改的話,就要改三個(gè)地方,而且改的一模一樣,當(dāng)然,問(wèn)題可能不止這一個(gè)。
于是乎,出現(xiàn)了這樣的設(shè)計(jì)思想,比如用Java(或者其他語(yǔ)言皆可)單獨(dú)創(chuàng)建一個(gè)工廠部署在一臺(tái)單獨(dú)的服務(wù)器上,并且寫一個(gè)方法執(zhí)行查詢用戶注冊(cè)列表這個(gè)操作。然后其他人通過(guò)某種途徑(可以是http鏈接或者是基于socket的RPC)訪問(wèn)這個(gè)方法返回?cái)?shù)據(jù),返回的數(shù)據(jù)類型可以是xml,也可以是json。簡(jiǎn)單來(lái)說(shuō),就是把這個(gè)操作封裝到一個(gè)工程當(dāng)中去,然后暴露訪問(wèn)的方式,形成"服務(wù)"。所有增刪改查都通過(guò)這個(gè)服務(wù)進(jìn)行。
這樣一來(lái),JavaWeb可以訪問(wèn)這個(gè)服務(wù),IOS和安卓客戶端也可以訪問(wèn)這個(gè)服務(wù)。更重要的是如果要修改注冊(cè)業(yè)務(wù)的方法,只要改這個(gè)服務(wù)就可以了。同理,其他業(yè)務(wù),比如訂單,廣告都可以單獨(dú)形成服務(wù)部署在單獨(dú)的服務(wù)器上。
還有就是哪怕有一天一堆人要注冊(cè),假設(shè)這堆人僅僅是注冊(cè)不做其他事情,其他業(yè)務(wù),比如訂單、廣告什么的都不忙,唯獨(dú)這個(gè)注冊(cè)服務(wù)壓力很大,而原有的一臺(tái)服務(wù)器已經(jīng)承受不住這么高的并發(fā),這個(gè)時(shí)候就可以單獨(dú)集群部署注冊(cè)服務(wù),提供多臺(tái)服務(wù)器提供注冊(cè)服務(wù),如果其他服務(wù)不忙,就維持原樣。
當(dāng)然,好處肯定不止這些。
以上的描述還不能完全稱為SOA,還不夠完成,因?yàn)檫€缺少了服務(wù)治理這一環(huán)節(jié)。
什么是服務(wù)治理,就是當(dāng)服務(wù)越來(lái)越多,調(diào)用方也越來(lái)越多,他們之間的關(guān)系就變得非?;靵y,需要對(duì)這些關(guān)系進(jìn)行管理。還是上面的例子,一個(gè)用戶服務(wù),后來(lái)有上百個(gè)調(diào)用方,這個(gè)時(shí)候作為服務(wù)方,它只提供服務(wù),卻不知道為誰(shuí)提供了服務(wù)。對(duì)于開(kāi)發(fā)者來(lái)說(shuō),知道這N多服務(wù)方之間的關(guān)系非常重要。所以這個(gè)時(shí)候就需要服務(wù)治理的框架,比如dubbo+zookeeper,比如Spring Cloud,有了服務(wù)治理功能,我們就可以清晰的看到服務(wù)被誰(shuí)調(diào)用了,誰(shuí)調(diào)用了哪些服務(wù),哪些服務(wù)是熱點(diǎn)服務(wù),需要配置服務(wù)器集群,而對(duì)這個(gè)服務(wù)器集群的負(fù)載均衡也是服務(wù)治理的可以完成的重要功能之一。
這個(gè)時(shí)候就是更加完善一點(diǎn)的SOA了,當(dāng)然,還可以更進(jìn)一步,加上服務(wù)監(jiān)控跟蹤等等。
?
?
?
總結(jié)
- 上一篇: JQuery Datatables 数据
- 下一篇: 微信公众号——永久素材的上传