SOA淺談

SOA是什么?SOA全英文是Service-Oriented Architecture,中文意思是中文面向服務編程,是一種思想,一種方法論,一種分布式的服務架構(具體可以百度)。

用途:SOA解決多服務凌亂問題,SOA架構解決數(shù)據(jù)服務的復雜程度,同時SOA又有一個名字,叫做服務治理。

通過一個系統(tǒng)我們看一下架構的演變過程(由統(tǒng)一到分布式):

image

當我們的項目比較小時,我們只有一個系統(tǒng),并且把他們寫到一起,放在一個服務器上,但是隨著平臺越來越大,數(shù)據(jù)量越來越大,我們不得不通過分庫,把多個模塊的數(shù)據(jù)庫分別放在對應得服務器上,每個模塊調(diào)用自己的子系統(tǒng)即可。

image

隨著我們系統(tǒng)的進一步復雜度的提示,我們不得不進一步對系統(tǒng)的性能進行提升,我們將多個模塊分成多個子系統(tǒng),多個子系統(tǒng)直接互相調(diào)用(因為SOA一般用于大型項目,比較復雜,所以一般總系統(tǒng)不會再集成,會拆分多個,分別做成服務,相互調(diào)用)。當我們的電商UI進行一個下訂單的任務時,多個服務直接互相調(diào)用,系統(tǒng)通過數(shù)據(jù)總線,分別調(diào)用對于的子系統(tǒng)即可。
企業(yè)數(shù)據(jù)總線:企業(yè)數(shù)據(jù)總線不是對多個子模塊的集成,他在這里充當數(shù)據(jù)通道的作用,數(shù)據(jù)總線不關心業(yè)務,數(shù)據(jù)總線根據(jù)給的地址和協(xié)議去調(diào)服務,上端不關心服務在哪里是什么,只找數(shù)據(jù)總線。
上面幾個圖應該算是比較清楚了,隨著業(yè)務的深入,我們不得不對系統(tǒng)進行調(diào)整,分別是對數(shù)據(jù)和業(yè)務的拆分,最后每個子系統(tǒng)對面提供服務。
還要提的一點就是下面那個圖,下面的IP庫以及幾個子系統(tǒng)是公共服務,分別向上提供功能,也是SOA方法論的一部分。

二、SOA主要的使用場景,如下圖:

image

通過上面的圖我們可以看出,多個子系統(tǒng)直接相互交互,相互調(diào)用非常凌亂,這樣我們就很不爽,所以我們就用到了我們的SOA架構,SOA又叫服務治理,SOA就是幫助我們把服務之間調(diào)用的亂七八糟的關系給治理起來,然后提供一個統(tǒng)一的標準,把我們的服務治理成下圖所示,以前我們的服務是互相交互,現(xiàn)在是只對數(shù)據(jù)總線進行交互,這樣系統(tǒng)就變得統(tǒng)一起來。

image

統(tǒng)一標準:各系統(tǒng)的協(xié)議、地址、交互方式。
新的交互方式:各個系統(tǒng)分別根據(jù)統(tǒng)一標準向數(shù)據(jù)總線進行注冊,各子系統(tǒng)調(diào)用其他子系統(tǒng)時,我們并不關心如果找到其他子系統(tǒng),我們只招數(shù)據(jù)總線,數(shù)據(jù)總線再根據(jù)統(tǒng)一標準找其他子系統(tǒng),所以數(shù)據(jù)總線在這里充當一個只路人的作用。

SOA的好處:

1、降低用戶成本,用戶不需要關心各服務之間是什么語言的、不需要知道如果調(diào)用他們,只要通過統(tǒng)一標準找數(shù)據(jù)總線就可以了。
2、程序之間關系服務簡單
3、識別哪些程序有問題(掛掉)
缺點:提示了系統(tǒng)的復雜程度,性能有相應影響。

三、數(shù)據(jù)總線是什么?

image

數(shù)據(jù)總線是起到調(diào)度服務的作用,數(shù)據(jù)總線不是集成服務,數(shù)據(jù)總線更新一個調(diào)度框架,每個服務需要根據(jù)約定向數(shù)據(jù)總線注冊服務,那么如何注冊那?其實數(shù)據(jù)總線就像一個字典結(jié)構,

數(shù)據(jù)總線里面一個key對于一個value,key指的是服務名,value則是服務的調(diào)度方式,還有一點需要說明的是,數(shù)據(jù)總線只是指路人,服務是不經(jīng)過數(shù)據(jù)總線的,如上圖的黃色線的路徑。

數(shù)據(jù)總線通過域名解析實現(xiàn):一個域名綁定多臺服務器,ajax也可以,dns也可以,解析域名嘛。

其實數(shù)據(jù)總線還有一些高級應用,比如心跳檢測,實現(xiàn)負載均衡等等,就不細說了,目前應用數(shù)據(jù)總線的有阿里的dubbo,還有zookeeper。

基本上SOA的架構體系我的理解就是這樣,上面配合圖基本上也算清晰,如果哪里有不對的地方,歡迎大牛指出,大家可以互相探討,相互學習。
原文: 深入淺出SOA

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

  • 關于Mongodb的全面總結(jié) MongoDB的內(nèi)部構造《MongoDB The Definitive Guide》...
    中v中閱讀 32,012評論 2 89
  • 第九章 軟件架構設計 9.1 軟件架構概述 9.1.1 軟件架構的定義 定義1:軟件或計算機系統(tǒng)的軟件架構是該系統(tǒng)...
    步積閱讀 4,845評論 0 17
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,890評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,150評論 25 708
  • 2016年6月的一天,我突然病倒了,由于事情來得突然,全家人都手足無措,六神無主。我生病了,開始出現(xiàn)囈語,失眠癥狀...
    訥訥1234閱讀 432評論 0 2