怎樣入門Java分布式應用?
網(wǎng)友解答: 我接觸分布式系統(tǒng)有很長的時間了,也算小有心得,下面從what,why,who,when和how幾方面來分別討論!1,what:分布式是什么?相對于把所有服務,功能在一臺機器(
我接觸分布式系統(tǒng)有很長的時間了,也算小有心得,下面從what,why,who,when和how幾方面來分別討論!
1,what:分布式是什么?相對于把所有服務,功能在一臺機器(或者一個集群)進行統(tǒng)一部署的集成系統(tǒng),分布式采用了拆分的方式,將不同的服務部署在不同的節(jié)點上,彼此之間通過某種方式進行通信,對外表現(xiàn)出高度透明和內(nèi)聚性,讓使用者感覺到是一個統(tǒng)一的整體!
2,why:為什么要使用分布式?①集成系統(tǒng)代碼耦合嚴重,難以擴展②而且隨著業(yè)務需求越來越多,就算是使用集群也很難達到高并發(fā),低延遲的要求③集成系統(tǒng)對于單個服務器的要求很高,很容易出現(xiàn)內(nèi)存溢出,CPU占滿的情況!使用分布式系統(tǒng)能將服務粒度變小,防止業(yè)務耦合,同時對于單個服務水平擴展更加容易!
3,who和when:什么場景該使用分布式呢?在單一系統(tǒng)無法滿足性能需求的時候(阿里巴巴雙十一幾十億的訪問可不是蓋的,是幾萬臺服務器堆起來的),在業(yè)務耦合太嚴重的時候,都應該考慮將集成系統(tǒng)拆成分布式系統(tǒng),通常來說所有公司都可以使用分布式系統(tǒng),但是涉及到更多的開發(fā)資源,更多的運維成本,所以小公司可以選擇使用!
4,how:怎么玩轉(zhuǎn)分布式?先來看下JAVA中有哪些涉及分布式的技術,首先需要拆分服務,所以需要微服務架構(springcloud和dubbo),服務之間相互調(diào)用使用rpc或者服務注冊與發(fā)現(xiàn)中心(eureka,zookeeper),如果服務異常了,需要進行熔斷,防止雪崩(hystrix等),服務之間要通信,所以需要消息隊列保證數(shù)據(jù)傳輸(redis,kafka,activemq等),數(shù)據(jù)庫性能跟不上,需要進行分庫分表(多臺數(shù)據(jù)庫分布在不同的服務器節(jié)點上),業(yè)務代碼連接分庫分表的數(shù)據(jù)庫需要通過中間件服務(mycat,sharding-jdbc等),高并發(fā),秒殺系統(tǒng),數(shù)據(jù)庫IO速度還是跟不上,就不得不引入緩存(redis,memcache等),數(shù)據(jù)庫之間或者和緩存之間不可避免的需要進行數(shù)據(jù)同步(canal等),單個服務如果還有性能問題,可以使用反向代理和負載均衡(nginx等)!
總之,分布式技術不是簡簡單單的一門技術,而是涉及到服務的拆分,服務的通信,服務的相互調(diào)用等一系列的高難度問題!
同時,由于系統(tǒng)是分布的,對于分布式事務(使用TCC,多階段提交等方式保證數(shù)據(jù)一致性),分布式緩存,分布式消息隊列,分布式鎖,數(shù)據(jù)一致性,消息丟失,全局唯一ID等問題都是迫切需要注意的難點!
具體的分布式實現(xiàn)不是三言兩語就能說清的,一定要在實際的項目中多加實踐,才能深切的掌握這項技術,更多在項目實操上遇到的問題,可以聯(lián)系筆者進行研究討論,更多技術分享,敬請關注。。。
網(wǎng)友解答:Java分布式架構,主要從四個方面考慮:
一、分布式架構的原理
分布式架構的演化過程
如何把應用從單機擴展到分布式
CDN加速靜態(tài)文件訪問
系統(tǒng)監(jiān)控、容災、存儲動態(tài)擴容
架構設計及業(yè)務驅(qū)動的劃分
二、分布式架構的策略
分布式架構網(wǎng)絡通信原理
通訊協(xié)議中的序列化和反序列化
基于框架的RPC、webservice等
Dubbo管理中心及監(jiān)控平臺的部署
基于Dubbo分布式系統(tǒng)架構的實戰(zhàn)
Dubbo容錯機制及高擴展性分析
三、分布式架構中間件
分布式消息通信Kafka/RabbitMQ/ActiveMQ
redis主從復制原理及無磁盤復制分析
MongoDB企業(yè)級集群解決方案
MongoDB數(shù)據(jù)分片、轉(zhuǎn)存、恢復策略
Nginx反向代理、負載均衡
基于Netty實現(xiàn)Dubbo多協(xié)議通訊支持
Netty無鎖化串行設計和高并發(fā)處理機制
四、分布式架構實戰(zhàn)
分布式事務解決方案
分布式服務降級、限流
分布式架構下的分布式定時調(diào)度等
當然,除此之外患有很多技術有待我們研究學習,就不一一列舉,上面提到的內(nèi)容,也不是入門級別的,其中任何幾項,只要學好了,你就是大牛,加油!??!