回覆列表
  • 1 # 豁然開朗56258852

    得看你有怎樣的軟體行業基礎?如果你是剛入門軟體剛也,那麼先把java和資料庫學好了,為什麼要先學這兩樣呢?因為這兩樣是基礎吧,如果這兩樣都不懂的話,你就根本不知道java分散式應用的優勢在哪兒。如果說你是有java基礎的話,你可以現在先學spring boot,然後就可以學基於spring boot的分散式框架,這些可以去網上搜影片來看,應該還是挺簡單的。關鍵是你要用手實際去操作一遍,這樣的話印象更深刻一些。

  • 2 # 此生唯一

    1,what:分散式是什麼?相對於把所有服務,功能在一臺機器(或者一個叢集)進行統一部署的整合系統,分散式採用了拆分的方式,將不同的服務部署在不同的節點上,彼此之間透過某種方式進行通訊,對外表現出高度透明和內聚性,讓使用者感覺到是一個統一的整體!

    2,why:為什麼要使用分散式?①整合系統程式碼耦合嚴重,難以擴充套件②而且隨著業務需求越來越多,就算是使用叢集也很難達到高併發,低延遲的要求③整合系統對於單個伺服器的要求很高,很容易出現記憶體溢位,CPU佔滿的情況!使用分散式系統能將服務粒度變小,防止業務耦合,同時對於單個服務水平擴充套件更加容易!

    3,who和when:什麼場景該使用分散式呢?在單一系統無法滿足效能需求的時候(阿里巴巴雙十一幾十億的訪問可不是蓋的,是幾萬臺伺服器堆起來的),在業務耦合太嚴重的時候,都應該考慮將整合系統拆成分散式系統,通常來說所有公司都可以使用分散式系統,但是涉及到更多的開發資源,更多的運維成本,所以小公司可以選擇使用!

    4,how:怎麼玩轉分散式?先來看下JAVA中有哪些涉及分散式的技術,首先需要拆分服務,所以需要微服務架構(springcloud和dubbo),服務之間相互呼叫使用rpc或者服務註冊與發現中心(eureka,zookeeper),如果服務異常了,需要進行熔斷,防止雪崩(hystrix等),服務之間要通訊,所以需要訊息佇列保證資料傳輸(redis,kafka,activemq等),資料庫效能跟不上,需要進行分庫分表(多臺資料庫分佈在不同的伺服器節點上),業務程式碼連線分庫分表的資料庫需要透過中介軟體服務(mycat,sharding-jdbc等),高併發,秒殺系統,資料庫IO速度還是跟不上,就不得不引入快取(redis,memcache等),資料庫之間或者和快取之間不可避免的需要進行資料同步(canal等),單個服務如果還有效能問題,可以使用反向代理和負載均衡(nginx等)!

    總之,分散式技術不是簡簡單單的一門技術,而是涉及到服務的拆分,服務的通訊,服務的相互呼叫等一系列的高難度問題!

    同時,由於系統是分佈的,對於分散式事務(使用TCC,多階段提交等方式保證資料一致性),分散式快取,分散式訊息佇列,分散式鎖,資料一致性,訊息丟失,全域性唯一ID等問題都是迫切需要注意的難點!

  • 中秋節和大豐收的關聯?
  • 這個世界上有沒有神和鬼?鬼和神有什麼不同?