到底什麼是分佈式系統?

java那些事2019-01-11 21:20:32

分佈式系統背景

說分佈式系統必須要說集中式系統,集中式系統中整個項目就是一個獨立的應用,整個應用也就是整個項目,所有的東西都在一個應用裡面。

如下圖所示

如一個網站就是一個應用,最後是多個增加多臺服務器或者多個容器來達到負載均衡的避免單點故障的目的,當然,數據庫是可以分開部署的。

集中式很明顯的優點就是開發測試運維會比較方便,不用為考慮複雜的分佈式環境。

集中式很明顯的弊端就是不易擴展,每次更新都必須更新所有的應用。而且,一個有問題意味著所有的應用都有問題。當系統越來越大,集中式將是系統最大的瓶頸。

什麼是分佈式系統?

分佈式系統是若干獨立計算機的集合,這計算機對用戶來說就像單個相關係統。

以上定義摘自<<分佈式系統原理與範型>>一書。

也就是說分佈式系統背後是由一系列的計算機組成的,但用戶感知不到背後的邏輯,就像訪問單個計算機一樣。

說的有點繞,我們可以來簡單看下分佈式系統圖。

分佈式系統利弊

在分佈式系統中:

1、應用可以按業務類型拆分成多個應用,再按結構分成接口層、服務層;我們也可以按訪問入口分,如移動端、PC端等定義不同的接口應用;

2、數據庫可以按業務類型拆分成多個實例,還可以對單表進行分庫分表;

3、增加分佈式緩存、搜索、文件、消息隊列、非關係型數據庫等中間件;

很明顯,分佈式系統可以解決集中式不便擴展的弊端,我們可以很方便的在任何一個環節擴展應用,就算一個應用出現問題也不會影響到別的應用。

隨著微服務Spring Cloud & Docker的大熱,及國內開源分佈式Dubbo框架的重生,分佈式技術發展非常迅速。

分佈式系統雖好,也帶來了系統的複雜性,如分佈式事務、分佈式鎖、分佈式session、數據一致性等都是現在分佈式系統中需要解決的難題,雖然已經有很多成熟的方案,但都不完美。分佈式系統也增加了開發測試運維成本,工作量增加,分佈式系統管理不好反而會變成一種負擔。

如果你對分佈式技術有更好的見解,或者對本文有異議,歡迎在下方留言。

福利:活動:月末送書福利|抽獎

如果對你有用,歡迎分享到朋友圈

目前已有10000+程序猿加入我們

       

       

長按關注,更多精彩!

戳原文,更多技術乾貨!
https://weiwenku.net/d/109858451