1. 程式人生 > >dubbo入門學習 一SOA

dubbo入門學習 一SOA

 

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

     用途:SOA解決多服務凌亂問題,SOA架構解決資料服務的複雜程度,同時SOA又有一個名字,叫做服務治理。

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

   

        當我們的專案比較小時,我們只有一個系統,並且把他們寫到一起,放在一個伺服器上,但是隨著平臺越來越大,資料量越來越大,我們不得不通過分庫,把多個模組的資料庫分別放在對應得伺服器上,每個模組呼叫自己的子系統即可。

     

     隨著我們系統的進一步複雜度的提示,我們不得不進一步對系統的效能進行提升,我們將多個模組分成多個子系統,多個子系統直接互相呼叫(因為SOA一般用於大型專案,比較複雜,所以一般總系統不會再整合,會拆分多個,分別做成服務,相互呼叫)。當我們的電商UI進行一個下訂單的任務時,多個服務直接互相呼叫,系統通過資料匯流排,分別呼叫對於的子系統即可。

     企業資料匯流排:企業資料匯流排不是對多個子模組的整合,他在這裡充當資料通道的作用,資料匯流排不關心業務,資料匯流排根據給的地址和協議去調服務,上端不關心服務在哪裡是什麼,只找資料匯流排。

     上面幾個圖應該算是比較清楚了,隨著業務的深入,我們不得不對系統進行調整,分別是對資料和業務的拆分,最後每個子系統對面提供服務。

     還要提的一點就是下面那個圖,下面的IP庫以及幾個子系統是公共服務,分別向上提供功能,也是SOA方法論的一部分。

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

   

通過上面的圖我們可以看出,多個子系統直接相互互動,相互呼叫非常凌亂,這樣我們就很不爽,所以我們就用到了我們的SOA架構,SOA又叫服務治理,SOA就是幫助我們把服務之間呼叫的亂七八糟的關係給治理起來,然後提供一個統一的標準,把我們的服務治理成下圖所示,以前我們的服務是互相互動,現在是隻對資料匯流排進行互動,這樣系統就變得統一起來。

統一標準:各系統的協議、地址、互動方式。

新的互動方式:各個系統分別根據統一標準向資料匯流排進行註冊,各子系統呼叫其他子系統時,我們並不關心如果找到其他子系統,我們只招資料匯流排,資料匯流排再根據統一標準找其他子系統,所以資料匯流排在這裡充當一個只路人的作用。

SOA的好處:

  1、降低使用者成本,使用者不需要關心各服務之間是什麼語言的、不需要知道如果呼叫他們,只要通過統一標準找資料匯流排就可以了。

 2、程式之間關係服務簡單

 3、識別哪些程式有問題(掛掉)

缺點:提示了系統的複雜程度,效能有相應影響。

三、資料匯流排是什麼?

      其實我在上面寫了,資料匯流排是起到排程服務的作用,資料匯流排不是整合服務,資料匯流排更新一個排程框架,每個服務需要根據約定向資料匯流排註冊服務,那麼如何註冊那?其實資料匯流排就像一個字典結構,

      資料匯流排裡面一個key對於一個value,key指的是服務名,value則是服務的排程方式,還有一點需要說明的是,資料匯流排只是指路人,服務是不經過資料匯流排的,如上圖的黃色線的路徑。

     資料匯流排通過域名解析實現:一個域名繫結多臺伺服器,ajax也可以,dns也可以,解析域名嘛。

     其實資料匯流排還有一些高階應用,比如心跳檢測,實現負載均衡等等,就不細說了,目前應用資料匯流排的有阿里的dubbo,還有zookeeper。

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

 轉載自:https://www.cnblogs.com/renzhitian/p/6853289.html