day03項目介紹以及開發(fā)后臺系統(tǒng)講義版本_第1頁
day03項目介紹以及開發(fā)后臺系統(tǒng)講義版本_第2頁
day03項目介紹以及開發(fā)后臺系統(tǒng)講義版本_第3頁
day03項目介紹以及開發(fā)后臺系統(tǒng)講義版本_第4頁
day03項目介紹以及開發(fā)后臺系統(tǒng)講義版本_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、課程介紹項目介紹系統(tǒng)的前端系統(tǒng)搭建以及講解系統(tǒng)的微服務(wù)架構(gòu)講解Apache Dubbo 快速入門1、好客租房1.1、項目背景近幾年,我國的性發(fā)展速度大家有目共睹,農(nóng)村都在向發(fā)展,農(nóng)民都踴躍走鄉(xiāng)投身城市的建設(shè)中,因此也推動城市房地產(chǎn)和租賃行業(yè)的新發(fā)展時機。房屋租賃行業(yè)的發(fā)展離不屋租賃政策的支持。財政部、發(fā)改委曾發(fā)布通知稱,自2015年11月1日起,在統(tǒng)一取消和暫停征收包括房屋租賃手續(xù)費等在內(nèi)的37項行政事業(yè)性,以及自2016年1月1日起,取消人力保障等部門所屬公共就業(yè)和服務(wù)機構(gòu)收取的集體戶口管理服務(wù)費。取消和暫停征收上述后,有關(guān)部門及所屬事業(yè)依法履行管理職能資金投入量,安排合理在房屋租賃方面的財

2、政預(yù)算,保證工作順利完成,各級相關(guān)價格管理部門要加強對房地產(chǎn)市場的價格,消除不合理亂現(xiàn)象,堅決取締多于的公共事業(yè),升級行政體系使其精英化,嚴厲杜絕各種亂現(xiàn)象。廣地區(qū)的城市外來人口眾多,租房問題急需解決,租房供不應(yīng)求,根據(jù)數(shù)據(jù)分析,國內(nèi)的一線都市每年對房屋的需求高達650套,我國在進行第六次人口普及中,在廣和珠三角發(fā)達區(qū)域,外來人口戶數(shù)占據(jù)成熟人口接近一半的比重。2015年北京和上海平均家庭規(guī)模約為2 42人?;谒阉鞯某鲎夥吭磾?shù)據(jù),北京出租房平均合租戶數(shù)為2.04。如果按照一線城市標準,我屋租賃市場有著極大的發(fā)展前景。1.2、項目介紹好客租房是直接促成房東與租戶對接的生活,它包含房東發(fā)布房源,

3、租戶度尋找房源,智能匹配房源,近期行情等功能。減少中間環(huán)節(jié)產(chǎn)生的費用,提高房東與租戶匹配的率。好客租房項目采用SOA架構(gòu)思想進行設(shè)計,采用SpringBoot、SpringMVC、Mybaits、Dubbo等技術(shù)框架實現(xiàn),好客租房是直接促成房東與租戶對接的生活,他包含房東發(fā)布房源,租戶度尋找房源,智能匹配房源,近期行情等功能。減少中間環(huán)節(jié)產(chǎn)生的費用,提高房東與租戶匹配的率。好客租房項目融合了RPC、大數(shù)據(jù)等相技術(shù),如SpringBoot、SpringMVC、Mybaits、Dubbo、React.js、GraphQL、RocketMQ、Flume、ELK等技術(shù),實現(xiàn)了移動web應(yīng)用、1.3、技

4、術(shù)架構(gòu)后端架構(gòu):SpringBoot+StringMVC+Dubbo+Mybatis+ELK+小程序應(yīng)用、管理應(yīng)用等功能。前端架構(gòu):React.js+html5+1.4、系統(tǒng)架構(gòu)地圖+小程序北京市昌平區(qū)建材城西路龍辦公樓一層:2、系統(tǒng)搭建系統(tǒng)采用的是前后端分離開發(fā)模式,前端使用Ant Design Pro系統(tǒng)作為模板進行改造,后端采用的是SpringBoot+StringMVC+Dubbo+Mybatis的架構(gòu)進行開發(fā)。2.1、前端搭建根據(jù)前面的pro的入門知識,參考好客租房 PRD 文檔 V1.0.0beat.docx、好客租房的菜單、頁面等做改造。V1.0.0.rp,將系統(tǒng)北京市昌平區(qū)建材

5、城西路龍辦公樓一層:2.1.1、創(chuàng)建工程第一步,將資料文件中的itcast-haoke-manage-web.zip解壓到指定目錄(是F:codeitcast-haoke);第二步,導入到Idea中北京市昌平區(qū)建材城西路龍辦公樓一層:第三步,執(zhí)行命令導入相關(guān)的依賴:北京市昌平區(qū)建材城西路龍辦公樓一層:1 tyarn install #安裝相關(guān)依賴2 tyarn start #啟動服務(wù)2.1.2、修改logo以及將logo部分修改為:信息全局的布局文件在這:打開看代碼,發(fā)現(xiàn),左側(cè)的菜單是自定義組件:北京市昌平區(qū)建材城西路龍辦公樓一層:打開/components/Sider文件:在Footer.j

6、s文件中修權(quán)信息:北京市昌平區(qū)建材城西路龍辦公樓一層:12345678910import React, Fragment from 'react' import Layout, Icon from 'antd'import GlobalFooter from '/components/GlobalFooter'const Footer = Layout; const FooterView = () => (<Footer style= padding: 0 ><GlobalFooter copyright=<Frag

7、ment>1 isTop && !isMobile ? null : (2 <Sider3 logo=logo4 Authorized=Authorized5 theme=navTheme6 onCollapse=this.handleCollapse7 Data=Data8 isMobile=isMobile9 .ps 10/>11)12 /導入13 import Siderfrom '/components/Sider'效果:2.1.3、編寫左側(cè)菜單根據(jù)需求,修改左側(cè)的菜單:/房源管理path: name:icon:1234

8、567891011121314151617181920212223242526272829303132'/house','house','home',routes: path: '/house/ esource', name: 're ource',component: './haoke/House/Resource',p th: '/h use/addResource', na e: 'addResource',comp nent: ./haoke/House/Ad

9、dResource',pat : '/house/kanfang', name: 'kanfang',component: './haoke/House/KanFang',path: '/house/zufang', name: 'zufang',component: './haoke/House/ZuFang',/房東管理path: name:icon:'/fangdong', 'fangdong','key',北京市昌平區(qū)建材城西路龍辦公樓

10、一層:1112131415161718Copyright <Icon type="copyright" /> 2018程序員 博學谷</Fragment>/></Footer>);export default FooterView;北京市昌平區(qū)建材城西路龍辦公樓一層:3334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485routes: path: '/fangdong/

11、list', name: 'list',component: './haoke/FangDong/List', /用戶管理path: '/users', name: 'users',icon: 'user', routes: path: '/users/list', name: 'list',component: './haoke/Users/List', /合約管理path: '/heyue', name: 'heyue',

12、icon: 'file-text', routes: path: '/heyue/list name: 'list',component: ' /haoke/HeYue/Li t', /資訊管理pat : '/news',name: 'news', icon: 'm ssage', routes: path: '/news/list', name: 'list',component: './haoke/News/List', /問答管理path

13、: '/qa',name: 'qa',icon: 'question-circle', routes: 8687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133path: '/news/list', name: 'list',component: './haoke/News/List',/財務(wù)管理p

14、ath: name:icon:'/finance', 'finance','money-collect',routes: path: '/finance/bill', name: 'bill',component: './haoke/Finance/Bill',path: '/finance/tixian', name: 'tixian',component: './haoke/Finance/TiX an,/系統(tǒng)管理path: name:icon:'

15、/system', 'system','laptoproutes: path: /system/interface , name: 'interface',component: './haoke/System/Interface',path: '/system/dict', name 'dict',component: './haoke/System/Dict',path: '/system/contract', name: 'contract',co

16、mponent: './haoke/System/Contract',在src/pages目錄下創(chuàng)建haoke文件夾,項目中的頁面代碼均放在此目錄中:北京市昌平區(qū)建材城西路龍辦公樓一層:修改,進入系統(tǒng)后,默認打源管理頁面:北京市昌平區(qū)建材城西路龍辦公樓一層:2.2 、新增房源2.2.1 、數(shù)據(jù)結(jié)構(gòu)參考資料中的前后端開發(fā)接口文檔.md文檔:北京市昌平區(qū)建材城西路龍辦公樓一層:北京市昌平區(qū)建材城西路龍辦公樓一層:2.2.2、編寫頁面根據(jù)需求文檔以及數(shù)據(jù)結(jié)構(gòu),進行編寫頁面。頁面效果如下:北京市昌平區(qū)建材城西路龍辦公樓一層:、form組件form組件文檔:北京市昌平區(qū)建材

17、城西路龍辦公樓一層:在頁面中,通過Form.create()對頁面進行了包裝,包裝之后,會在ps中增加form對象,該對象將包含有 豐富的功能,如下:在from表單中,需要通過getFieldDecorator(表單數(shù)據(jù)雙向綁定)方法進行包裝用法:,才能獲取到其值。經(jīng)過性)getFieldDecorator 包裝的控件,表單控件會自動添加 value (或 valuePropName 指定的其他屬onChange (或 trigger 指定的其他屬性),數(shù)據(jù)同步將被 Form 接管,這會導致以下結(jié)果:1. 你不再需要也不應(yīng)該用 onChange 來做同步,但還是可以繼續(xù)onCh

18、ange 等。北京市昌平區(qū)建材城西路龍辦公樓一層:1 <FormItem .form temLayout label="支付方式">2 getFieldDecorator('paymentMethod',initialValue: 1',rules: required: true, message:"此項為必填項" ) 3(4 <Select style= width: '50%' >5 <Option value="1">付一押一</Option>

19、;6 <Option value="2">付三押一</Option>7 <Option value="3">付六押一</Option>8 <Option value="4">年付押一</Option>9 <Option value="5">其它</Option>10 </Select>11)12</FormItem>2. 你不能用控件的 value defaultValue 等屬性來設(shè)置表單域的值

20、,默認值可以用getFieldDecorator 里的 initialValue 。3. 你不應(yīng)該用 setState ,可以使用特別注意來動態(tài)改變表單值。ps.form.setFieldsValue1. getFieldDecorator 不能用于裝飾純函數(shù)組件。2. 如果使用的是 react<15.3.0 ,則 getFieldDecorator調(diào)用不能位函數(shù)組件中:/react/pull/6534校驗:在getFieldDecorator的參數(shù)中可以增加校驗規(guī)則:其它的校驗規(guī)則如下:、表單提交表單的提交通過submit按鈕完成,通過onSubmit方法

21、進行處理。北京市昌平區(qū)建材城西路龍辦公樓一層:1 initialValue:'1',rules: required: true, message:"此項為必填項" )提交方法:12345678910111213141516handleSubmit = e => const dispatch, form = ps; e.preventDefault();form.validateFieldsAndScroll(err, values) => if (!err) if(values.faci ities)values.faciliti

22、es = values.facilities.join(",");if values.floor_1 && values.floor_2)values.f oor =values.floor_1 + "/" +values.floor_2;"室" + values.houseType_2 +values.houseType=values.houseType_1 +"廳"+ "衛(wèi)" + values.houseType_4 +17+ values.houseType_3"

23、廚"+ "陽臺"1819202122232425262728+ values.houseType_2 values.floor_1;values.floor_2; values.houseType_1; values.houseType_2; values.houseType_3; values.houseType_4;values.houseType_5;delete delete delete delete delete deletedelete北京市昌平區(qū)建材城西路龍辦公樓一層:通過form.validateFieldsAndScroll()對表單進行校驗,

24、通過values獲取表單中輸入的值。通過dispatch()調(diào)用m中定義的方法。、自動完成文檔:樓盤的數(shù)據(jù)通過自動完成實現(xiàn):實現(xiàn)代碼:北京市昌平區(qū)建材城西路龍辦公樓一層:12345678910111213141516/數(shù)據(jù)const estateMap = new Map('中遠兩灣城','1001|上海市,上海市,普陀區(qū),遠景路97弄','上海康城','1002|上海市,上海市,閔行區(qū),莘松路958弄','西子灣','1003|上海市,上海市,松江區(qū),廣富林路1188弄','

25、萬科城市花園','1004|上海市,上海市,閔行區(qū),七莘路3333弄2區(qū)-15區(qū)', '上海陽城','1005|上海市,上海市,閔行區(qū),羅錦路888弄');<AutoCompletestyle= width: '100%' dataSource=this.state.estateDataSource placeholder="搜索樓盤"onSelect=(value, option)=>let v = estateMap.get(value); this.setState(293031323

26、33435dispatch(type: 'form/submitRegularForm', payload: values,););、圖片上傳圖片上傳通過自定義組件PicturesWall完成,在PicturesWall中,通過Upload組件實現(xiàn)。 效果:北京市昌平區(qū)建材城西路龍辦公樓一層:1718192021222324252627282930313233343536373839404142434445464748estateAddress: v.substring(v.indexOf('|')+1), estateId : v.substri

27、ng(0,v.indexOf('|');onSearch=this.handleSearch filterOption=(inputValue, option) =>ps.children.toUpperCase().indexOf(inputValue.toUpperCase() != -1/>/ 通過onSearch進行動態(tài)設(shè)置數(shù)據(jù)源,這里使用的數(shù)據(jù)是靜態(tài)數(shù)據(jù)handleSearch = (value)=> let arr = new Array(); if(value.length > 0 )estateMap.forEach(

28、v, k) => if(k.startsWith(value)arr.push(k););this.setState( estateDataSource: arr); ;/ 通過onSelect設(shè)置,選擇中樓盤數(shù)據(jù)后,在樓盤地址中填寫地址數(shù)據(jù)onSelect=(value, option)=>let v = estateMap.get(valu ); this.setState(estateAddress: .substring(v.indexOf('|')+1), estateId : v.substri g(0,v.indexOf('|');在代

29、碼實現(xiàn)中,需要解決的問題是:父組件如何獲取子組件中的數(shù)據(jù)解決思路:父組件通過屬性的方式進行子組件,在bind方法中改變th s的ps獲取傳入的函數(shù),進行調(diào)用,即可把數(shù)據(jù)傳遞到父組件中。父組件:為父組件,在子組件中,通過子組件:父組件中的方法,獲取數(shù)據(jù):3、系統(tǒng)服務(wù)北京市昌平區(qū)建材城西路龍辦公樓一層:前端系統(tǒng)已經(jīng)搭建完成,需要系統(tǒng)為其提供接口服務(wù)。如:新增房源、房源列表、房東列表等。3.1、架構(gòu)說明:在服務(wù)的架構(gòu)中,采用了RPC+微服務(wù)的架構(gòu)思想,RPC采用dubbo框架作為服務(wù)治理框架,對外接口采用RESTful和GraphQL接口方式。3.2 、dubbo快速入門3.2.1

30、、什么是dubbo?Apache Dubbo (incubating)是一款高性能Java RPC框架。官網(wǎng):北京市昌平區(qū)建材城西路龍辦公樓一層:dubbo是由阿里團隊開發(fā)的一款優(yōu)秀的RPC框架。目前dubbo在Apache中孵化,預(yù)計很快會畢業(yè)。早期的介紹:DUBBO是一個分布式服務(wù)框架,致力于提供高性能和透明化的RPC服務(wù)調(diào)用方案,是阿里巴巴SOA服務(wù)量支持,并被廣泛應(yīng)用于阿里巴巴化治理方案的框架,每天為2,000+個服務(wù)提供3 000,000,000+次的各成員站點。Dubbo是Alibaba開源的分布式服務(wù)框架,它最大的特點是按照分層的方式來架構(gòu),使用這種方式可以使各個 層之間解耦合(

31、或者最大限度地松耦合)。從服務(wù)模型的角度來看,Dubbo采用的是一種非常簡單的模型, 要么是提供方提供服務(wù),要么是消費方消費服務(wù),所以基于這一點可以抽象出服務(wù)提供方(Provider)和服務(wù)消費方(Consumer)兩個什么是RPC?。關(guān)于中心、協(xié)議支持、服務(wù)等內(nèi)容。北京市昌平區(qū)建材城西路龍辦公樓一層:3.2.2 、框架說明 、背景隨著互聯(lián)網(wǎng)的發(fā)展,應(yīng)用的規(guī)模不斷擴大,常規(guī)的垂直應(yīng)用架構(gòu)已無法應(yīng)對,分布式服務(wù)架構(gòu)以及計算架構(gòu)勢在必行,亟需一個確保架構(gòu)有條不紊的演進。單一應(yīng)用架構(gòu)流量很小時,只需一個應(yīng)用,將所有功能都部署在一起 以減少部署節(jié)點和成本。此時,用于簡化增刪改查當工作量的

32、數(shù)據(jù)框架(ORM)是關(guān)鍵。垂直應(yīng)用架構(gòu)當量逐漸增大,單一應(yīng)用增加帶來的度越來越小,將應(yīng)用拆成互不相干的幾個應(yīng)用,以提升效率。此時,用于前端頁面開發(fā)的Web框架(MVC)是關(guān)鍵。分布式服務(wù)架構(gòu)當垂直應(yīng)用越來越多,應(yīng)用之間交互不可避免,將業(yè)務(wù)抽取出來,作為的服務(wù),逐漸形成穩(wěn)定的服務(wù)中心,使前端應(yīng)用能更快速的響應(yīng)多變的市場需求。此時,用于提高業(yè)務(wù)復用及整合的分布式服務(wù)框架(RPC)是關(guān)鍵。計算架構(gòu)當服務(wù)越來越多,容量的評估 小服務(wù)的浪費等問題逐漸顯現(xiàn),此時需增加一個調(diào)度中心基于實時管理集群容量,提高集群利用率。此時,用于提高、需求利用率的調(diào)度和治理中心(SOA)是關(guān)鍵。北京市昌平區(qū)建材

33、城西路龍辦公樓一層:在大規(guī)模服務(wù)化之前,應(yīng)用可能只是通過 RMI 或 Hessian 等工具 簡單的URL地址進行調(diào)用,通過 F5 等硬件進行負載均衡。和服務(wù),通過配置服務(wù)的當服務(wù)越來越多時,服務(wù) URL 配置管理變得非常,F(xiàn)5 硬件負載均衡器的單點也越來越大。 此時需要一個服務(wù)中心,動態(tài)的和發(fā)現(xiàn)服務(wù),使服務(wù)的位置透明。并通過在消費方獲取服務(wù)提供方地址列表,實現(xiàn)軟負載均衡和 Failover,降低對 F5 硬件負載均衡器的依賴,也能減少部分成本。當進一步發(fā)展,服務(wù)間依賴關(guān)系變得錯蹤復雜,甚至分不清哪個應(yīng)用要在哪個應(yīng)用之前啟動,架構(gòu)師都不能完整的 描述應(yīng)用的架構(gòu)關(guān)系。 這時,需要自動畫出應(yīng)用間的

34、依賴關(guān)系圖,以幫助架構(gòu)師理關(guān)系。接著,服務(wù)的調(diào)用量越來越大,服務(wù)的容量問題就出來,這個服務(wù)需要多少支撐?什么時候該加? 為了解決這些問題,第一步,要將服務(wù)現(xiàn)在每天的調(diào)用量,響應(yīng)時間,都統(tǒng)計出來,作為容量的參考指標。其次,要可以動態(tài)調(diào)整權(quán)重,上,將某臺的權(quán)重一直加大,并在加大的過程中響應(yīng)時間的變化,直到響應(yīng)時間到達閾值,此時的量,再以此量乘以數(shù)反推總?cè)萘俊R陨鲜?Dubbo 最基本的幾個需求。、架構(gòu)北京市昌平區(qū)建材城西路龍辦公樓一層:節(jié)點說明調(diào)用關(guān)系說明1. 服務(wù)容器負責啟動,加載,運行服務(wù)提供者。2. 服務(wù)提供者在啟動時,向3. 服務(wù)消費者在啟動時 向中心中心訂閱提供的服務(wù)。所需

35、的服務(wù)。4.中心返回服務(wù)提供者地址列表給消費者,如果有變更,中心將基于長連接推送變更數(shù)據(jù)給消費者。5. 服務(wù)消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調(diào)用,如果調(diào)用失敗,再選另一臺調(diào)用。6. 服務(wù)消費者和提供者,在內(nèi)存中累計調(diào)用次數(shù)和調(diào)用時間,定時每分鐘一次統(tǒng)計數(shù)據(jù)到中心。Dubbo 架構(gòu)具有以下幾個特點,分別是連通性、健壯性、伸縮性、以及介紹參見:架構(gòu)的升級性。3.2.3、中心dubbo支持多種y/introduction.html中心,推薦使用ZooKeeper。北京市昌平區(qū)建材城西路龍辦公樓一層:節(jié)點說明Provider服務(wù)的服務(wù)提供方Consumer調(diào)用服務(wù)的服務(wù)

36、消費方Registry服務(wù)與發(fā)現(xiàn)的中心Monitor統(tǒng)計服務(wù)的調(diào)用次數(shù)和調(diào)用時間的中心Container服務(wù)運行容器Zookeeper 是 Apacahe Hadoop 的子項目,是一個的目錄服務(wù),支持變更推送適合作為 Dubbo 服務(wù)的注冊中心,工業(yè)強度較高,可用于生產(chǎn)環(huán)境,并推薦使用。流程說明:服務(wù)提供者啟動時: 向的 URL 地址目錄下寫入/dubbo/com.foo.BarService/providers服務(wù)消費者啟動時 訂閱目錄下的提供者 URL 地址。并向/dubbo/.foo.BarService/providers目錄下寫入的 URL 地址/dubbo/com.foo.Ba

37、Service/consumers中心啟動時: 訂閱支持以下功能:目錄下的所有提供者和消費者 URL 地址。當提供者出現(xiàn)斷電等異常停機時,中心能自動刪除提供者信息數(shù)據(jù),以及訂閱請求當中心重啟時,能自動恢復當會話過期時,能自動恢復數(shù)據(jù),以及訂閱請求當設(shè)置可通過可通過支持 *時,失敗和訂閱請求,定時重試<dubbo:registrycheck="false" />設(shè)置 zookeeper 登錄信息<dubbo:registryusername="admin" password="1234" />設(shè)置 zookeep

38、er 的根節(jié)點,不設(shè)置將使用無根樹<dubbo:registrygroup="dubbo" /><dubbo:reference group="*" version="*" /> ,可訂閱服務(wù)的所有分組和所有版本號通配符的提供者使用docker部署ZooKeeper北京市昌平區(qū)建材城西路龍辦公樓一層:/d bbo/com.foo.BarService在本套課程中,使用docker容器化技術(shù)進行部署和開發(fā),如果對docker不熟悉的同學可以采用傳統(tǒng)的部署方式, 效果是一樣的。之所以采用docker部署的形式,是考

39、慮到微服務(wù)節(jié)點的部署,以及后續(xù)的集群擴展的便捷性。環(huán)境:ubuntu-16.04.3 + docker 17.03.2-ce參考資料中的VMware Workstation 中安裝 Ubuntu16.04 虛擬機.docx文檔進行安裝,統(tǒng)一環(huán)境。測試:3.2.4 、編寫服務(wù)提供方 、創(chuàng)建工程北京市昌平區(qū)建材城西路龍辦公樓一層:1 #拉取zk鏡像2 docker pull zookeeper:3.5 34 #創(chuàng)建容器5 docker create -name zk -p 2181:2181 zookeeper:3.5 67 #啟動容器8 docker start zk 9北京市昌平

40、區(qū)建材城西路龍辦公樓一層:、導入依賴在itcast-dubbo工程中編寫pom.xml文件:北京市昌平區(qū)建材城西路龍辦公樓一層:12345678910111213141516171819<?xml version="1 0" encoding="UTF-8 ?><project mlns="h tp:/m /POM/4.0.0" xmlns:xsi="http /"xs :schemaLocati""><mVersion>4.0

41、.0</mVersion><!-添加SpringBoot parent支持-><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.0.RELEASE</version></parent><groupId>cn.itcast.dubbo</groupId><artifact

42、Id>itcast-dubbo</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>itcast-dubbo-service</module>itcast-dubbo-service依賴:1234<?xml version="1.0 encoding="UTF-8"?><projectxmlns=" xmlns:xsi

43、="xsi:schemaLocation="""">567891011121314<parent><artifactId>itcast-dubbo</artifactId><groupId>cn.itcast.dubbo</groupId><version>1.0-SNAPSHOT</version></parent><mVersion>4.0.0</mVersion><artifactId>itcast-d

44、ubbo-service</artifactId><dependencies>北京市昌平區(qū)建材城西路龍辦公樓一層:2021222324252627282930313233343536373839404142434445464748495051525354</modules><dependencies><!-添加SpringBoot測試-><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-bo

45、ot-starter-test</artifactId><scope>test</scope></dependency><!-添加dubbo的springboot依賴-><dependency><groupId>com.alibaba.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>0.2.0</version></dependency><

46、;!-添加dubbo依賴-><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.4</version></dependency></dependencies><build><plugins><!-添加springboot的mav n插件-><plugin><groupId>org.spr ngframewo

47、rk.boot</groupId><artifa tId>spring-boot maven-plugin</artifactId></plugin></plugins></build></project、創(chuàng)建User對象1234567891011121314151617181920212223242526272829package cn.itcast.dubbo.pojo;/ 使用dubbo要求傳輸?shù)膶ο蟊仨殞崿F(xiàn)序列化接口public class User implements java.io.Ser

48、ializable privatestatic fina lo g e ialVersionUID=-7L;privateLong id;privateString username;privateString assword;privateInte er age;public Long getId() return id;public void setId(Long id) this.id = id;public String getUsername() return username;public void setUsername(String username) this.usernam

49、e = username;北京市昌平區(qū)建材城西路龍辦公樓一層:15161718192021222324252627282930313233<!-添加springboot依賴,非web項目-><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.apache.zookeep

50、er</groupId><artifactId>zookeeper</artifactId><version>3.4.13</version></dependency><dependency><groupId>com.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version></dependency></dependencies&g

51、t;</project>3031323334353637383940414243444546474849public String getPassword() return password;public void setPassword(String password) this.password = password;public Integer getAge() return age;public void setAge(Integer age) this.age = age;、創(chuàng)建UserService(接口)提供服務(wù)、創(chuàng)建UserService

52、Impl實現(xiàn)類北京市昌平區(qū)建材城西路龍辦公樓一層:123456789package cn.itcast.dubbo.service.impl;import java.util.ArrayList; import java.util.List;import cn.itcast.dubbo.pojo.User;import cn.itcast.dubbo.service.UserService;import com.alibaba.dubbo.config.annotation.Service;1 package cn.itcast.dubbo.service; 23 import cn.itca

53、st.dubbo.pojo.User; 45 import java.util.List; 67 public interface UserService 89/*10*所有的用戶數(shù)據(jù)11*12* return13*/14List<User> queryAll(); 1516 、編寫perties配置文件、編寫啟動類1234package cn.itcast.dubbo;import org.springframework.boot.WebApplicationType;import org.springframewor

54、k.boot.autoconfigure.SpringBootApplication;北京市昌平區(qū)建材城西路龍辦公樓一層:1 # Spring boot application2 = itcast-dubbo-serv ce3 server.port = 9090 45 # Service version6 dubbo.service.version = 1.0.0 78 # 服務(wù)的掃描包9 dubbo.scan.baseP ckages = cn.itcast.dubbo.service1011 # 應(yīng)用名稱12 dubbo.applicati

55、 = dubbo-provider-demo1314 # 協(xié)議以及端口15 = dubbo16 tocol.port = 20880 1718 # zk中心19 dubbo.registry.address = zookeeper:/85:218120 dubbo.registry.client = zkclient10111213141516171819202122232425262728293031Service(version = "$dubbo.service.version&quo

56、t;) /這是一個dubbo服務(wù)public class UserServiceImpl implements UserService /* 實現(xiàn),這里做模擬實現(xiàn),不做具體的數(shù)據(jù)庫*/public List<User> queryAll() List<User> list = new ArrayList<User>(); for (int i = 0; i < 10; i+) User user = new User(); user.setAge(10 + i); user.setId(Long.valueOf(i + 1); user.setPassword("123456"); user.setUsername("username_" + i); list.add(user);return list;啟動后查看zk信息:發(fā)現(xiàn),UserService服務(wù)已經(jīng)3.2.5 、編寫服務(wù)消費方 、創(chuàng)建工程到z中了北京市昌平區(qū)建材城西路龍辦公

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論