來自:
前一陣換了份工作,來到新公司,恰好新同事問起soa是什麼,我隨口說了幾點,其實自己以前研究過,不過並沒有詳細的整理過,說的比較模糊,恰好週末,拿出點時間整理下以前對soa的認知。
用途:soa解決多服務凌亂問題,soa架構解決資料服務的複雜程度,同時soa又有乙個名字,叫做服務治理。
通過乙個系統我們看一下架構的演變過程(由統一到分布式):
當我們的專案比較小時,我們只有乙個系統,並且把他們寫到一起,放在乙個伺服器上,但是隨著平台越來越大,資料量越來越大,我們不得不通過分庫,把多個模組的資料庫分別放在對應得伺服器上,每個模組呼叫自己的子系統即可。
隨著我們系統的進一步複雜度的提示,我們不得不進一步對系統的效能進行提公升,我們將多個模組分成多個子系統,多個子系統直接互相呼叫(因為soa一般用於大型專案,比較複雜,所以一般總系統不會再整合,會拆分多個,分別做成服務,相互呼叫)。當我們的電商ui進行乙個下訂單的任務時,多個服務直接互相呼叫,系統通過資料匯流排,分別呼叫對於的子系統即可。
上面幾個圖應該算是比較清楚了,隨著業務的深入,我們不得不對系統進行調整,分別是對資料和業務的拆分,最後每個子系統對面提供服務。
還要提的一點就是下面那個圖,下面的ip庫以及幾個子系統是公共服務,分別向上提供功能,也是soa方**的一部分。
二、soa主要的使用場景,如下圖:
通過上面的圖我們可以看出,多個子系統直接相互互動,相互呼叫非常凌亂,這樣我們就很不爽,所以我們就用到了我們的soa架構,soa又叫服務治理,soa就是幫助我們把服務之間呼叫的亂七八糟的關係給治理起來,然後提供乙個統一的標準,把我們的服務治理成下圖所示,以前我們的服務是互相互動,現在是只對資料匯流排進行互動,這樣系統就變得統一起來。
新的互動方式:各個系統分別根據統一標準向資料匯流排進行註冊,各子系統呼叫其他子系統時,我們並不關心如果找到其他子系統,我們只招資料匯流排,資料匯流排再根據統一標準找其他子系統,所以資料匯流排在這裡充當乙個只路人的作用。
soa的好處:
1、降低使用者成本,使用者不需要關心各服務之間是什麼語言的、不需要知道如果呼叫他們,只要通過統一標準找資料匯流排就可以了。
2、程式之間關係服務簡單
3、識別哪些程式有問題(掛掉)
缺點:提示了系統的複雜程度,效能有相應影響。
三、資料匯流排是什麼?
其實我在上面寫了,資料匯流排是起到排程服務的作用,資料匯流排不是整合服務,資料匯流排更新乙個排程框架,每個服務需要根據約定向資料匯流排註冊服務,那麼如何註冊那?其實資料匯流排就像乙個字典結構,
資料匯流排裡面乙個key對於乙個value,key指的是服務名,value則是服務的排程方式,還有一點需要說明的是,資料匯流排只是指路人,服務是不經過資料匯流排的,如上圖的黃色線的路徑。
資料匯流排通過網域名稱解析實現:乙個網域名稱繫結多台伺服器,ajax也可以,dns也可以,解析網域名稱嘛。
其實資料匯流排還有一些高階應用,比如心跳檢測,實現負載均衡等等,就不細說了,目前應用資料匯流排的有阿里的dubbo,還有zookeeper。
深入淺出SOA
前一陣換了份工作,來到新公司,恰好新同事問起soa是什麼,我隨口說了幾點,其實自己以前研究過,不過並沒有詳細的整理過,說的比較模糊,恰好週末,拿出點時間整理下以前對soa的認知。用途 soa解決多服務凌亂問題,soa架構解決資料服務的複雜程度,同時soa又有乙個名字,叫做服務治理。通過乙個系統我們看...
深入淺出SOA
前一陣換了份工作,來到新公司,恰好新同事問起soa是什麼,我隨口說了幾點,其實自己以前研究過,不過並沒有詳細的整理過,說的比較模糊,恰好週末,拿出點時間整理下以前對soa的認知。用途 soa解決多服務凌亂問題,soa架構解決資料服務的複雜程度,同時soa又有乙個名字,叫做服務治理。通過乙個系統我們看...
深入淺出SOA
前一陣換了份工作,來到新公司,恰好新同事問起soa是什麼,我隨口說了幾點,其實自己以前研究過,不過並沒有詳細的整理過,說的比較模糊,恰好週末,拿出點時間整理下以前對soa的認知。用途 soa解決多服務凌亂問題,soa架構解決資料服務的複雜程度,同時soa又有乙個名字,叫做服務治理。通過乙個系統我們看...