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

下載本文檔

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

文檔簡介

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

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

3、租戶度尋找房源,智能匹配房源,近期行情等功能。減少中間環(huán)節(jié)產(chǎn)生的費(fèi)用,提高房東與租戶匹配的率。好客租房項(xiàng)目采用SOA架構(gòu)思想進(jìn)行設(shè)計(jì),采用SpringBoot、SpringMVC、Mybaits、Dubbo等技術(shù)框架實(shí)現(xiàn),好客租房是直接促成房東與租戶對(duì)接的生活,他包含房東發(fā)布房源,租戶度尋找房源,智能匹配房源,近期行情等功能。減少中間環(huán)節(jié)產(chǎn)生的費(fèi)用,提高房東與租戶匹配的率。好客租房項(xiàng)目融合了RPC、大數(shù)據(jù)等相技術(shù),如SpringBoot、SpringMVC、Mybaits、Dubbo、React.js、GraphQL、RocketMQ、Flume、ELK等技術(shù),實(shí)現(xiàn)了移動(dòng)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)作為模板進(jìn)行改造,后端采用的是SpringBoot+StringMVC+Dubbo+Mybatis的架構(gòu)進(jìn)行開發(fā)。2.1、前端搭建根據(jù)前面的pro的入門知識(shí),參考好客租房 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);第二步,導(dǎo)入到Idea中北京市昌平區(qū)建材城西路龍辦公樓一層:第三步,執(zhí)行命令導(dǎo)入相關(guān)的依賴:北京市昌平區(qū)建材城西路龍辦公樓一層:1 tyarn install #安裝相關(guān)依賴2 tyarn start #啟動(dòng)服務(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 /導(dǎo)入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程序員 博學(xué)谷</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',/財(cái)務(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文件夾,項(xiàng)目中的頁面代碼均放在此目錄中:北京市昌平區(qū)建材城西路龍辦公樓一層:修改,進(jìn)入系統(tǒng)后,默認(rèn)打源管理頁面:北京市昌平區(qū)建材城西路龍辦公樓一層:2.2 、新增房源2.2.1 、數(shù)據(jù)結(jié)構(gòu)參考資料中的前后端開發(fā)接口文檔.md文檔:北京市昌平區(qū)建材城西路龍辦公樓一層:北京市昌平區(qū)建材城西路龍辦公樓一層:2.2.2、編寫頁面根據(jù)需求文檔以及數(shù)據(jù)結(jié)構(gòu),進(jìn)行編寫頁面。頁面效果如下:北京市昌平區(qū)建材城西路龍辦公樓一層:、form組件form組件文檔:北京市昌平區(qū)建材

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

18、ange 等。北京市昌平區(qū)建材城西路龍辦公樓一層:1 <FormItem .form temLayout label="支付方式">2 getFieldDecorator('paymentMethod',initialValue: 1',rules: required: true, message:"此項(xiàng)為必填項(xiàng)" ) 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、,默認(rèn)值可以用getFieldDecorator 里的 initialValue 。3. 你不應(yīng)該用 setState ,可以使用特別注意來動(dòng)態(tài)改變表單值。ps.form.setFieldsValue1. getFieldDecorator 不能用于裝飾純函數(shù)組件。2. 如果使用的是 react<15.3.0 ,則 getFieldDecorator調(diào)用不能位函數(shù)組件中:/react/pull/6534校驗(yàn):在getFieldDecorator的參數(shù)中可以增加校驗(yàn)規(guī)則:其它的校驗(yàn)規(guī)則如下:、表單提交表單的提交通過submit按鈕完成,通過onSubmit方法

21、進(jìn)行處理。北京市昌平區(qū)建材城西路龍辦公樓一層:1 initialValue:'1',rules: required: true, message:"此項(xiàng)為必填項(xiàng)" )提交方法: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、廚"+ "陽臺(tái)"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()對(duì)表單進(jìn)行校驗(yàn),

24、通過values獲取表單中輸入的值。通過dispatch()調(diào)用m中定義的方法。、自動(dòng)完成文檔:樓盤的數(shù)據(jù)通過自動(dòng)完成實(shí)現(xiàn):實(shí)現(xiàn)代碼:北京市昌平區(qū)建材城西路龍辦公樓一層:12345678910111213141516/數(shù)據(jù)const estateMap = new Map('中遠(yuǎn)兩灣城','1001|上海市,上海市,普陀區(qū),遠(yuǎn)景路97弄','上??党?#39;,'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組件實(shí)現(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進(jìn)行動(dòng)態(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、碼實(shí)現(xiàn)中,需要解決的問題是:父組件如何獲取子組件中的數(shù)據(jù)解決思路:父組件通過屬性的方式進(jìn)行子組件,在bind方法中改變th s的ps獲取傳入的函數(shù),進(jìn)行調(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ù)治理框架,對(duì)外接口采用RESTful和GraphQL接口方式。3.2 、dubbo快速入門3.2.1

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

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

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

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

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

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

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

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

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

39、慮到微服務(wù)節(jié)點(diǎn)的部署,以及后續(xù)的集群擴(kuò)展的便捷性。環(huán)境:ubuntu-16.04.3 + docker 17.03.2-ce參考資料中的VMware Workstation 中安裝 Ubuntu16.04 虛擬機(jī).docx文檔進(jìn)行安裝,統(tǒng)一環(huán)境。測(cè)試: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 #啟動(dòng)容器8 docker start zk 9北京市昌平

40、區(qū)建材城西路龍辦公樓一層:、導(dǎo)入依賴在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測(cè)試-><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對(duì)象1234567891011121314151617181920212223242526272829package cn.itcast.dubbo.pojo;/ 使用dubbo要求傳輸?shù)膶?duì)象必須實(shí)現(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項(xiàng)目-><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實(shí)現(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配置文件、編寫啟動(dòng)類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;) /這是一個(gè)dubbo服務(wù)public class UserServiceImpl implements UserService /* 實(shí)現(xiàn),這里做模擬實(shí)現(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;啟動(dòng)后查看zk信息:發(fā)現(xiàn),UserService服務(wù)已經(jīng)3.2.5 、編寫服務(wù)消費(fèi)方 、創(chuàng)建工程到z中了北京市昌平區(qū)建材城西路龍辦公

溫馨提示

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

評(píng)論

0/150

提交評(píng)論