author:QYX
以前我們使用過單體架構,把多個系統放到一個容器中集體調用,這種模式開發簡單,適合小型應用但不利於擴展且代碼耦合,后來我們引入和垂直應用架構,系統間相互獨立,通過前端統一調用,雖然解決了高並發的問題,也可以針對水平擴展,但也存在着系統間相互獨立,且重復開發的缺點,現在我們就來認識最常用的架構模式:分布式架構和微服務架構。
分布式架構
SOA(面向服務的架構)
SOA全稱為Service-Oriented Architecture,即面向服務的架構,它可以根據需求通過網絡對松散耦合的粗粒度應用組件(服務)進行分布式部署、組合和使用,一個服務通常以獨立的形式存在與操作系統進程中。
站在功能的角度,把業務邏輯抽象成可復用、可組裝的服務,通過服務的編排實現業務的快速再生,目的:把原先固有的業務功能轉變為通用的業務服務,實習業務邏輯的快速復用
通過上面的描述可以發現SOA有如下幾個特點、分布式、可重用、擴展靈活、松耦合
當垂直應用越來越多,應用之間交互不可避免,將核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求
SOA
優點:
抽取公共的功能為服務,提高開發效率
對不同的服務進行集群化部署解決系統壓力
基於ESB/DUBBO減少系統耦合
缺點:
抽取的服務粒度較大
服務提供方與調用接口耦合度較高
SOA架構示意圖
微服務架構:
優點:
通過服務的原子化拆分(拆到不可再拆了),以及微服務的獨立打包,部署和升級,小團隊的交付周期將縮短,運維成本也將大幅度下降
微服務遵循單一原則,微服務之間采用Restful等輕量協議傳輸
缺點:
微服務過多,服務治理成本高,不利於系統維護
分布式系統開發的技術成本高(容錯、分布式事務等)
系統架構分析之遠程調用技術
流行的調用技術:RPC,http
分布式中的CAP原理
C 一致性(多節點下數據一致) A 可用性(保持服務可以用:多節點) P 分區容錯性(是否可以將數據存到多個地方)
一個系統中不可能同時滿足C、A、P
一般就是ac放棄分區容錯(物理數據庫) ap可以短暫允許數據的不一致(NoSQL數據庫的選擇,互聯網中用的較多) cp 放棄可用性()