怎樣入門Java分布式應用?

小姐自然醒


我接觸分佈式系統有很長的時間了,也算小有心得,下面從what,why,who,when和how幾方面來分別討論!

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等問題都是迫切需要注意的難點!

具體的分佈式實現不是三言兩語就能說清的,一定要在實際的項目中多加實踐,才能深切的掌握這項技術,更多在項目實操上遇到的問題,可以聯繫筆者進行研究討論,更多技術分享,敬請關注。。。


謝逅架構


Java分佈式架構,主要從四個方面考慮:

一、分佈式架構的原理

  • 分佈式架構的演化過程

  • 如何把應用從單機擴展到分佈式

  • CDN加速靜態文件訪問

  • 系統監控、容災、存儲動態擴容

  • 架構設計及業務驅動的劃分

二、分佈式架構的策略

  • 分佈式架構網絡通信原理

  • 通訊協議中的序列化和反序列化

  • 基於框架的RPC、webservice等

  • Dubbo管理中心及監控平臺的部署

  • 基於Dubbo分佈式系統架構的實戰

  • Dubbo容錯機制及高擴展性分析

三、分佈式架構中間件

  • 分佈式消息通信Kafka/RabbitMQ/ActiveMQ

  • redis主從複製原理及無磁盤複製分析

  • MongoDB企業級集群解決方案

  • MongoDB數據分片、轉存、恢復策略

  • Nginx反向代理、負載均衡

  • 基於Netty實現Dubbo多協議通訊支持

  • Netty無鎖化串行設計和高併發處理機制

四、分佈式架構實戰

  • 分佈式事務解決方案


  • 分佈式服務降級、限流

  • 分佈式架構下的分佈式定時調度等

當然,除此之外患有很多技術有待我們研究學習,就不一一列舉,上面提到的內容,也不是入門級別的,其中任何幾項,只要學好了,你就是大牛,加油!!!

IT全棧工程師


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


豁然開朗56258852


java分佈式應用入門很簡單,但學精不容易,首先你的程序能分成多份 ,供外界調用,就是分佈式,但多份後,如何調用,這就是請求路由了,就要看負載均衡了,那麼如果其中一份,保存了狀態,而外部請求又被路由到另一份了,狀態如何同步呢


分享到:


相關文章: