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