聲明
通過(guò)對(duì)吳水成老師dubbo教程的學(xué)習(xí)膏燃,本人以理解學(xué)習(xí)的角度向大家分享灌具,希望能幫助到大家青团。本文中若存在不足,請(qǐng)大家積極留言互動(dòng)稽亏。源碼
介紹
當(dāng)項(xiàng)目達(dá)到一定的規(guī)模時(shí)壶冒,傳統(tǒng)的Web單工程項(xiàng)目實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)就顯得很臃腫缕题。若需要對(duì)業(yè)務(wù)進(jìn)行服務(wù)化的拆分截歉,那就需要使用分布式應(yīng)用系統(tǒng)開發(fā)。
Dubbo是阿里巴巴SOA服務(wù)化治理方案的核心框架烟零,每天為2,000+個(gè)服務(wù)提供3,000,000,000+次訪問(wèn)量支持瘪松,是一個(gè)分布式、高性能锨阿、透明化的RPC服務(wù)框架宵睦,提供服務(wù)自動(dòng)注冊(cè)、自動(dòng)發(fā)現(xiàn)等高效服務(wù)治理方案墅诡。
本文將從使用Dubbo對(duì)傳統(tǒng)工程進(jìn)行服務(wù)化改造的思路介紹壳嚎,最終形成一套可應(yīng)用于生產(chǎn)環(huán)境的高性能、高可用末早、高擴(kuò)展性的分布式系統(tǒng)架構(gòu)烟馅。希望幫助大家將Dubbo在實(shí)際項(xiàng)目中應(yīng)用起來(lái)。
本文中所用到的技術(shù):MyEclipse然磷、Maven郑趁、JDK7、Dubbo2.5.3姿搜、Struts2寡润、Spring3捆憎、MyBatis3.2、Druid梭纹、ActiveMQ躲惰、Tomcat7、MySQL5.6变抽、VMWare礁扮、CentOS6.5
項(xiàng)目架構(gòu)對(duì)比
1.傳統(tǒng)的單項(xiàng)目工程(oa-demo)
使用MVC架構(gòu)式的方式組織代碼結(jié)構(gòu),Model View Controller瞬沦,是模型(model)-視圖(view)-控制器(controller)太伊。
優(yōu)點(diǎn):分層,結(jié)構(gòu)清晰逛钻,耦合性低僚焦,大型項(xiàng)目代碼的復(fù)用性得到極大的提高,開發(fā)人員分工明確曙痘,提高了開發(fā)的效率芳悲,維護(hù)方便,降低了維護(hù)成本边坤。
缺點(diǎn):簡(jiǎn)單的小型項(xiàng)目名扛,使用MVC設(shè)計(jì)反而會(huì)降低開發(fā)效率,層和層雖然相互分離茧痒,但是之間關(guān)聯(lián)性太強(qiáng)肮韧,沒有做到獨(dú)立的重用。
2.改造成dubbo服務(wù)調(diào)用方式后的工程結(jié)構(gòu)(多工程模式)
oa-common-parent(Maven父配置)【java maven工程】
oa-facade(門面服務(wù)模式接口)【java maven工程】
oa-service(業(yè)務(wù)服務(wù)實(shí)現(xiàn))【java web maven工程】
oa-web(前端展示層)【java web maven工程】
使用dubbo是為了實(shí)現(xiàn)系統(tǒng)的分布式服務(wù)化旺订,具有以下特點(diǎn):
1)多個(gè)服務(wù)
2)多種類型的工程
3)工程間需要相互調(diào)用
4)實(shí)現(xiàn)工程間解耦(高內(nèi)聚弄企、低耦合)
5)工程該怎么樣拆分?(請(qǐng)思考)
6)如何對(duì)大量的工程進(jìn)行合理有效的管理区拳?(高級(jí)篇:持續(xù)集成)
項(xiàng)目改造思路
1.oa-demo中業(yè)務(wù)邏輯層以下的做成dubbo的服務(wù)接口拘领,供action層調(diào)用。
2.oa-web中的action不能直接訪問(wèn)oa-service中的實(shí)現(xiàn)樱调,只能引用oa-facade工程约素。
3.oa-facade對(duì)oa-service中的服務(wù)進(jìn)行包裝成facade接口。
4.oa-service對(duì)oa-facade中的接口進(jìn)行實(shí)現(xiàn)笆凌。調(diào)用業(yè)務(wù)邏輯biz接口圣猎。
5.oa-web引用oa-facade中的facade層接口。
6.mybatis的配置文件移動(dòng)到oa-service中菩颖。
7.spring的配置文件移動(dòng)到oa-service和oa-web中样漆。
基于dubbo進(jìn)行改造
1.在oa-service中添加spring-dubbo-provider.xml配置』奕颍【暴露服務(wù)】
2.在oa-web中添加dubbo-consumer.xml配置放祟△⒃梗【引用服務(wù)】