如今的架構不少,各類各樣的,如高併發架構、異地多活架構、容器化架構、微服務架構、高可用架構、彈性化架構等,還有和這些架構相關的管理型的技術方法,如 DevOps、應用監控、自動化運維、SOA 服務治理、去 IOE 等等,還有不少。數據庫
那什麼是分佈式系統?分佈式系統是支持分佈式處理的軟件系統,是由通訊網絡互聯的多處理機體系結構上執行任務的系統。包括分佈式操做系統、分佈式程序設計語言及其編譯系統、分佈式文件系統分佈式數據庫系統等,固然這些也是分佈式的關鍵技術。網絡
使用分佈式系統主要有:架構
1.增大系統容量。咱們的業務量愈來愈大,而要能應對愈來愈大的業務量,一臺機器的性能已經沒法知足了,咱們須要多臺機器才能應對大規模的應用場景。因此,咱們須要垂直或是水平拆分業務系統,讓其變成一個分佈式的架構。併發
2.增強系統可用。咱們的業務愈來愈關鍵,須要提升整個系統架構的可用性,這就意味着架構中不能存在單點故障。這樣,整個系統不會由於一臺機器出故障而致使總體不可用。因此,須要經過分佈式架構來冗餘系統以消除單點故障,從而提升系統的可用性。運維
3.由於模塊化,因此係統模塊重用度更高分佈式
4.由於軟件服務模塊被拆分,開發和發佈速度能夠並行而變得更快模塊化
5.系統擴展性更高微服務
6.團隊協做流程也會獲得改善高併發
分佈式系統的類型有三種:性能
1.分佈式處理,但只有一個總數據庫,沒有局部數據庫
2.分層式處理,每一層都有本身的數據庫
3.充分分散的分佈式網絡,沒有中央控制部分,各節點之間的聯繫方式又能夠有多種,如鬆散的聯接,緊密的聯接,動態的聯接,廣播通知式的聯接等
而後來對比一下單體應用和分佈式架構的優缺點:
1.從上面的表格能夠看到,分佈式系統雖然有一些優點,但也存在一些問題
2.架構設計變得複雜(尤爲是其中的分佈式事務)
3.部署單個服務會比較快,可是若是一次部署須要多個服務,部署會變得複雜
4.系統的吞吐量會變大,可是響應時間會變長
5.運維複雜度會由於服務變多而變得很複雜
6.架構複雜致使學習曲線變大
7.測試和查錯的複雜度增大
8.技術能夠不少樣,這會帶來維護和運維的複雜度
9.管理分佈式系統中的服務和調度變得困難和複雜
因此總結一下,分佈式系統架構的難點在於系統設計,以及管理和運維。因此分佈式系統架構在解決了一些問題的同時,也增長了其餘的問題,這就須要不斷的再用各類各樣的技術跟手段去解決這些新增的問題。後續會跟上分佈式系統架構的搭建以及使用。