【java】架構演變學習

宋榮凱發表於2018-01-03

【前言】

      之前專案上用的是dubbo的框架,不知道為什麼。 最近學習宜立方商城這個專案,視訊的老師有講。 在此總結記錄一下。

【正文】

1.傳統架構

 適用於併發量小的情況下。

2.1000併發的時候


一臺tocat伺服器預設支援併發量為150,理論上能達到最大併發量250,所以此時我們要設定tomcat叢集,但是tomcat叢集會隨著節點數量的增加,服務能力先增加後下降。所以增加叢集中節點數量不能成為解決併發問題的不二法門。 一般節點為5個左右

3.10000併發時

        出現了分佈時架構,把系統按照功能點拆分,單獨為某一個節點新增伺服器。需要系統之間配合才能完成整個業務邏輯。

         分散式架構:多個子系統相互協作才能完成業務流程。系統之間需要進行通訊。

        叢集:同一個工程部署到多臺伺服器上。

         分散式架構:

        把系統按照模組拆分成多個子系統。

      優點:

      1、把模組拆分,使用介面通訊,降低模組之間的耦合度。

      2、把專案拆分成若干個子專案,不同的團隊負責不同的子專案。

      3、增加功能時只需要再增加一個子專案,呼叫其他系統的介面就可以。

     4、可以靈活的進行分散式部署。

 

      缺點:

      1、系統之間互動需要使用遠端通訊,介面開發增加工作量。

      2、各個模組有一些通用的業務邏輯無法共用。




4.基於soa的架構


     SOAService Oriented Architecture面向服務的架構。也就是把工程拆分成服務層、表現層兩個工程。服務層中包含業務邏輯,只需要對外提供服務即可。表現層只需要處理和頁面的互動,業務邏輯都是呼叫服務層的服務來實現。



因為表現層和服務層成為了不同的工程,所以要實現一個功能就需要兩個系統間進行通訊。那麼遠端通訊有哪幾種方式呢?

             1Webservice:效率不高基於soap協議。專案中不推薦使用。

             2、使用restful形式的服務:http+json。很多專案中應用。如果服務太多,服務之間呼叫關係混亂,需要治理服務。

            3使用dubbo。使用rpc協議進行遠端呼叫,直接使用socket通訊。傳輸效率高,並且可以統計出系統之間的呼叫關係、呼叫次數



例項:宜立方商城的架構圖:


【總結】

           事物之間是存在普遍聯絡的,發展是個長期的過程。

相關文章