(轉)漫談SOA(面向服務架構)

http://blog.csdn.net/luohuacanyue/article/details/12521699java

    面向服務架構的思想在整個軟件的架構中已經不是什麼新鮮的東西。我簡單的認爲服務化是模塊化的延伸,因此服務化有着和模塊化相似的優勢和缺點。這裏再也不討論這些服務定義服務與服務之間的通訊協議(像WSDL等等),我並不認爲這是服務化的本質所在。即便Java語言用RMI進行服務與服務之間的通訊也仍然不違背服務化的宗旨。架構

一.爲何須要面向服務架構分佈式

        1.我以爲面向服務的根本好處是便於管理,也是應用大到必定時候的必然產物。這每每和組織架構之間相契合。其實不合理的服務劃分也會帶來服務之間的混亂。模塊化

        2.面向服務是一個解耦的過程,鬆耦合下降了服務之間的依賴,也意味着服務一個服務出現故障的時候不容易引發連鎖反應,也能更好的控制服務與服務之間的關係與優先級。性能

        3.不一樣語言之間的通訊。優化

二.面向服務架構的好處網站

        在爲何要面向服務架構裏面已經講到了這樣的好處。這裏再舉一些簡單的例子來闡述。好比說一個應用部署在一臺機器上,然而無論如何優化單機是沒法撐起整個應用。這時候有兩種思路。.net

        水平擴展,即整個應用做爲一個總體,而後水平擴展到多臺機器上。blog

圖A部署

 

        服務拆分,這是解耦的過程,也符合軟件工程中「高內聚,低耦合」的思想。每每第一步會進行模塊化。這樣作可能還不夠,咱們須要讓它們可以獨立生存。這樣一個大的服務「分裂」成一個一個比較小可以獨立生成的服務,這裏的關鍵是能夠獨立生存,意味着它們能夠部署在不一樣的機器上,必定程度上達到了「分佈式」的效果。

圖B

 

三.總結

        上面從兩個維度講到了機器擴展。這二者在系統的拆分中會同時存在。從純性能的角度講應該採用第一種方案。兩第二種方案並不看成解決性能的整體方案。而主要從軟件管理的角度來說進行拆分。這種拆分使得整個業務的粒度愈來愈細,也會愈來愈好控制,保證每一個服務的高內聚,有清晰的邊界。

        面向服務架構是一種思想,固然對於大系統而言其利必大於弊,而系統比較小的時候盲目的拆分和服務化其實會致使整個維護成本上升。系統架構並無一層不變的套路,也沒必要徹底遵循某種模式。一切都在實際應用中結合具體的應用場景。應該說是「方法論」的具體產物。

相關文章
相關標籤/搜索