十次服務(wù)開發(fā)v1.第1章_第1頁(yè)
十次服務(wù)開發(fā)v1.第1章_第2頁(yè)
十次服務(wù)開發(fā)v1.第1章_第3頁(yè)
十次服務(wù)開發(fā)v1.第1章_第4頁(yè)
十次服務(wù)開發(fā)v1.第1章_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1章-學(xué)習(xí)目標(biāo)了解十次方的需求分理解十次方的系統(tǒng)設(shè)計(jì)以及完成基礎(chǔ)微服務(wù)-CRUD的功能,掌握公共異常處理十次方名稱的由來:2的10次方為1024,程序員都懂如果你是一位技術(shù)大咖,那么趕快發(fā)布文章,增加知名度如果你是一名技術(shù),那么趕快到問答頻道尋求幫助的,這里高手如云哦如果你不想錯(cuò)過各種技術(shù)交流會(huì),那么請(qǐng)經(jīng)常關(guān)注活動(dòng)頻道吧~如果你還是單身,那么趕快到交友頻道找到你心儀的另一半。如果你有太多的苦惱,那么趕快吐個(gè)槽吧~如果你正在找工作或是想跳槽拿高薪,那么來招聘頻道淘金吧詳見:資源\文檔\十次方需求規(guī)格說明書《十次方》采用前后端分離的系統(tǒng)架構(gòu),后端架構(gòu) 我們把這種架構(gòu)也稱之為全家我們的十次方工程共分為18個(gè)子模塊(其中17個(gè)是微服務(wù) 模塊名模塊中文名公共模文章微服基礎(chǔ)微服交友微服活動(dòng)微服問答微服招聘微服用戶微服吐槽微服搜索微服前臺(tái)微服務(wù)網(wǎng)微服務(wù)網(wǎng)中配置中微服文章爬蟲微服用戶爬蟲微服人工智能微服我們這里采用的分庫(kù)分表設(shè)計(jì),每個(gè)業(yè)務(wù)模塊為1個(gè)獨(dú)立的數(shù)據(jù)tensquare_article文 tensquare_gathering活動(dòng)tensquare_qa問答tensquare_recruit招聘 詳見資源\文檔\十次方數(shù)據(jù)庫(kù)文檔API課程提供了前后端開發(fā)接口文檔(采用Swagr語(yǔ)言進(jìn)行編寫),并與Nin進(jìn)行了整合。雙擊Ninx執(zhí)行文件啟動(dòng)后,在地址欄輸入即可PI前后端約定的返回碼列表狀態(tài)描返回成失用戶名錯(cuò)權(quán)限不調(diào)用失重復(fù)操理解何為RESTfl架構(gòu),就是目前最流行的一種互聯(lián)網(wǎng)軟件架構(gòu)。它結(jié)構(gòu)清晰、符合標(biāo)準(zhǔn)、易于理解、擴(kuò)展方便,所以正得到越來越多的采用。RET這個(gè)詞,是RoyThmsFili在他00年的博士中.REST是RepresentationalStateTransfer的縮寫,翻譯是”表現(xiàn)層狀態(tài)轉(zhuǎn)化”以面向資源是RET最明顯的特征,對(duì)于同一個(gè)資源的一組不同的操作。資源是服務(wù)器上一個(gè)可命名的抽象概念,資源是以名詞為來組織的,首先關(guān)注的是名詞。RT要求,必須通過統(tǒng)一的接口來對(duì)資源執(zhí)行。對(duì)于每個(gè)資源只能執(zhí)行一組有限的操作。7個(gè)HTTP接口規(guī)我們?cè)陧?xiàng)目中用到了GET/POST/PUT/DELETE四種方法,現(xiàn)在介紹一下這四種

變更時(shí)獲取表示(緩存200(OK)表示已在響應(yīng)中204(無內(nèi)容)-資源有空表301(MovedPermanently)-資源的URI已被更303(SeeOther)-其他(如,負(fù)載均衡)(notmodified)-資源未更改(緩存400(badrequest)-指代壞請(qǐng)求(如,參數(shù)錯(cuò)誤404(notfound)-406(notacceptable)-服務(wù)端不支持500(internalservererror)-503(ServiceUnavailable)-服務(wù)端當(dāng)前無法處理不安全且不冪

部分更新資如果沒有被修改,則不過更新資源(樂觀鎖200(OK)如果現(xiàn)有資源已被更改(created)-如果新資源被創(chuàng) 已接受處理請(qǐng)求但尚未完成(異步處理301(MovedPermanently)-資源的URI被更新303(SeeOther)-其他(如,負(fù)載均衡)400(badrequest)-指代壞請(qǐng)求404(notfound)-406(notacceptable)-服務(wù)端不支持409 )通用412(PreconditionFailed)-前置條件失敗(如執(zhí)行條件更新時(shí)的415(unsupportedmediatype)500(internalservererror)-503(ServiceUnavailable)-服務(wù)當(dāng)前無法處理不安全但冪如果未被修改,則更新資源(樂觀鎖200(OK)-如果已存在資源被201(created)如果新資源被創(chuàng)建(MovedPermanently)-資源的URI已更改303(SeeOther)其他(如,負(fù)載均衡)400(badrequest)-指代壞請(qǐng)求404(notfound)-406(notacceptable)-服務(wù)端不支持409 )通用412(PreconditionFailed)-前置條件失?。ㄈ鐖?zhí)行條件更新時(shí)的415(unsupportedmediatype)500(internalservererror)-503(ServiceUnavailable)-服務(wù)當(dāng)前無法處理200(OK)-資源已被刪301(MovedPermanently)-資源的URI303(SeeOther)其他,如負(fù)載均衡400(badrequest)-指代壞請(qǐng)求404(notfound)-資源不存在409 )通用500(internalservererror)-503(ServiceUnavailable)-服務(wù)端當(dāng)前無法處理數(shù)據(jù)庫(kù)mysqldocker版本VMwareWorkstationPro注:十次方課程所有的環(huán)境都是基于docker的,所以我們?cè)谫Y料中提供了安裝了docker的centos7鏡像,并已經(jīng)了課程中使用的mysql等常用docker鏡像。將centos7鏡像掛載到VMwareWorkstation,修改內(nèi)存為8G。MYSQL建庫(kù)建表(容器我們的mysql使用的是docker環(huán)境(1)鏡像(此步可省略dockerdockerpull創(chuàng)建容dockerdockerrun‐di‐‐name=tensquare_mysql‐p3306:3306MYSQL_ROOT_PASSWORD=123456SQLyog連接MYSQL,并執(zhí)行建表 詳見配套資測(cè)試工具Postman中文版是postman這款強(qiáng)大網(wǎng)頁(yè)調(diào)試工具的windows客戶端,提供功能強(qiáng)大的WebAPI&HTTP請(qǐng)求調(diào)試。軟件功能非常強(qiáng)大,界面簡(jiǎn)潔明晰、操作方便快捷,設(shè)計(jì)得很人性化。Postman中文版能夠發(fā)送任何類型的HTTP請(qǐng)求(GET,HEAD,POST,PUT..),課程配套資源中提供了Postman的安裝文"資源\微服務(wù)相關(guān)\配套軟件\Postman-win64-6.0.10-默認(rèn)安裝即安(2)賬IDEA詳 “資源\微服務(wù)相關(guān)\擴(kuò)展文檔\IDEA配置選擇菜單file-new ,彈出窗口中左側(cè)菜單選擇 ,點(diǎn)擊next按填寫GroupId和ArtifacetId,點(diǎn)擊next按點(diǎn)擊Finish完刪除src文件修改 添加以下配置(資源已提供 資源\配置文件 當(dāng)IDEA右下角彈出提示,點(diǎn)擊EnableAuto- 自動(dòng)導(dǎo)入依搭建子模塊搭建公共子模 (1)工程,彈出菜單選擇New- 彈出窗口選擇Maven,點(diǎn)擊next按點(diǎn)擊創(chuàng)建返回結(jié)果實(shí)新建entity下創(chuàng)建類Result,用于控制器類返回結(jié)packageentity;publicclassResult{privatebooleanflag;//是否成功privateIntegercode;//返回碼privateStringmessage;//返回信息privateObjectdata;//返回?cái)?shù)據(jù)publicResult(booleanflag,Integercode,Stringmessage,Objectdata){this.flag=flag;this.code=this.message=message;this.data=data;}publicResult()}publicResult(booleanflag,Integercode,Stringmessage){this.flag=this.code=code;this.message=message;}publicbooleanisFlag(){returnflag;}publicvoidsetFlag(booleanflag){this.flag=flag;}publicIntegergetCode(){returncode;}publicvoidsetCode(Integercode){this.code=code;}publicpublicStringgetMessage(){returnmessage;}publicvoidsetMessage(Stringmessage){this.message=message;}publicObjectgetData(){returndata;}publicvoidsetData(Objectdata){this.data=data;}}提示:IDEA生成getterandsetter的快捷鍵是返回碼詳見設(shè)計(jì)文創(chuàng)建類PageResult,用于返回分頁(yè)@parampublicclassPageResult<T>ongist<T>publicPageResult(Longtotal,List<T>rows)this.total=total;this.rows=rows;}//getterandsetter}返回碼定義packagepackage*publicclassStatusCodepublicstaticfinalintOK=20000;//成功publicstaticfinalintERROR20001;//失敗publicstaticfinalintLOGINERROR=20002;//用戶名或 publicstaticfinalintACCESSERROR=20003;//權(quán)限不足publicstaticfinalintREMOTEERROR=20004;// publicstaticfinalintREPERROR=20005;//重復(fù)操作}分布式ID由于我們的數(shù)據(jù)庫(kù)在生產(chǎn)環(huán)境中要分片部署(MyCat),所以我們不能使用數(shù)據(jù)庫(kù)本身的自增功能來產(chǎn)生主鍵值,只能由程序來生成唯一的主鍵值。我們采用的是開源的(非中文慣稱:.是國(guó)外的一個(gè),是一個(gè)社交網(wǎng)絡(luò)及務(wù))snowflake(雪花)算法默認(rèn)情況下41bit的時(shí)間戳可以支持該算法使用到82年,10bit的工作機(jī)器id可以支持24臺(tái)機(jī)器,序列號(hào)支持1毫秒產(chǎn)生406個(gè)自增序列id.SnwFlake的優(yōu)點(diǎn)是,整體上按照時(shí)間自增排序,并且整個(gè)分布式系統(tǒng)內(nèi)不會(huì)產(chǎn)生D碰撞(由數(shù)據(jù)中心D和機(jī)器作區(qū)分),并且效率較高,經(jīng)測(cè)試,SnwFlake每秒能夠產(chǎn)生6萬(wàn)ID左右我們課程中已經(jīng)提供了分布式資源\微服務(wù)相關(guān)\工具類mon工程創(chuàng)建util包,將 直接拷貝 工程的util基礎(chǔ)微服務(wù)-搭建基礎(chǔ)微服務(wù)模塊tensquare_base,pom.xml引入 創(chuàng)建啟動(dòng)packagepackageimportimportorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.context.annotation.Bean;import*Createdby37269onpublicclassBaseApplicationpublicstaticvoidmain(String[]args){}publicIdWorkeridWorker(){returnnew}提示:IDEA創(chuàng)建main方法的快捷鍵是在resources下創(chuàng)建nametensquare‐base#driverClassName:url:username:rootpassword:123456database:MySQLshow‐sql:truegenerate‐ddl:true管理-表結(jié)構(gòu)分表名稱字段名字段含字段類備文名文狀文0:無效1:有使用數(shù)整關(guān)注整是否推文0:不推薦1:推CRUD的實(shí)(1)實(shí)體創(chuàng)建com.tensquare.base下創(chuàng)建pojo ,包下創(chuàng)建實(shí)體類packageimportorg.springframework.boot.autoconfigure. importjavax.persistence.Entity;importjavax.persistence.Id; publicclassLabel{privateStringprivateString privateStringstate;//狀態(tài) ongcount;//使用數(shù)量 ongfans;//關(guān)注數(shù)private publicStringgetId(){returnid;}publicvoidsetId(Stringid){this.id=id;}publicStringgetLabelname(){returnlabelname;}publicvoidsetLabelname(Stringlabelname){this.labelname=labelname;}publicStringgetState(){returnstate;}publicpublicvoidsetState(Stringstate)this.state=}publicLonggetCount()return}publicvoidsetCount(Longcount)this.count=}publicLonggetFans()return}publicvoidsetFans(Longfans)this.fans=}public}mend()publicmend)mend }}創(chuàng)建數(shù)據(jù)接com.tensquare.base包下創(chuàng)建dao下創(chuàng)建LabelDao接packagepackageimportimportimport*publicinterfaceLabelDao}業(yè)務(wù)邏輯com.tensquare.base包下創(chuàng)建service下創(chuàng)建LabelService類。在這個(gè)類中,我們packagecom.tensquare.base.service;importcom.tensquare.base.pojo.Label;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importutil.IdWorker; publicclassLabelService abelDaoprivateIdWorkerpublicList<Label>findAll(){return}publicLabelfindById(Stringid){return}@parampublicvoidadd(Labellabel.setIdidWorker.nextId()+);//設(shè)置ID}@parampublicvoid label){}@parampublicvoiddeleteById(String}}控制器com.tensquare.user包下創(chuàng)建controller包,創(chuàng)建packagecom.tensquare.base.controller;importcom.tensquare.base.pojo.Label;importcom.tensquare.base.service.LabelService;importentity.Result;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.*;import publicclassLabelController{ abelService (method=RequestMethod.GET)publicResult<List>findAll(){returnnewResult<>(true,StatusCode.OK,"查詢成功",labelService.findAll());}@param (value="/{id}",method=RequestMethod.GET)publicResult<Label>findById(@PathVariableStringid){returnnewResult<>(true,StatusCode.OK,"查詢成}@param (method=RequestMethod.POST)publicResultadd(@RequestBodyLabellabel){returnnewResult(true,StatusCode.OK,"增加成功}

@param (value="/{id}",method=publicResultupdate(@RequestBodyLabella

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論