版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1項(xiàng)目的功能構(gòu)架受互聯(lián)網(wǎng)+概念的催化,中國教育市場的發(fā)展可謂是百花齊放、如火如荼。按照市場領(lǐng)域細(xì)分為:學(xué)前教育、K12教育、高等教育、留學(xué)教育、職業(yè)教育、語言教育、教育以及綜合平臺(tái),其中,職業(yè)教育和語言教育的市場優(yōu)勢突出。根據(jù)ysys易觀發(fā)布的數(shù)據(jù)顯示,預(yù)計(jì)年中國互聯(lián)網(wǎng)教育市場規(guī)模將達(dá)到億元,未來三年互聯(lián)網(wǎng)教育市場規(guī)模保持高速增長。學(xué)成借鑒了MOOC(大型開放式網(wǎng)絡(luò)課程,即MOOC(massiveopenonlinecourses))的設(shè)計(jì)思想,是個(gè)提供IT職業(yè)課程學(xué)習(xí)的平臺(tái),它為即將和已經(jīng)加入IT領(lǐng)域的技術(shù)人才提供學(xué)習(xí)服務(wù),用戶通過學(xué)習(xí)、當(dāng)前市場的教育模式多種多樣,包括:B2C、CC、B2B2C等業(yè)務(wù)模式,學(xué)成采用B2B2C業(yè)務(wù)模式,即向企業(yè)或個(gè)人提供教育平臺(tái)提供教學(xué)服務(wù),老師和學(xué)生通過平臺(tái)完成整個(gè)教學(xué)和學(xué)習(xí)的過程,市場上類似的平臺(tái)有:網(wǎng)易云課堂、騰訊課堂等,學(xué)成的特點(diǎn)是IT職業(yè)課程教學(xué)。功能模塊教學(xué)管理系統(tǒng)管理通過項(xiàng)目原型進(jìn)一步了解項(xiàng)目的功能,包括:門戶首頁、課程搜索頁、學(xué)習(xí)頁面、個(gè)人中心等參考“項(xiàng)目原型”。2、系統(tǒng)應(yīng)用CDN技術(shù),對(duì)一些、CSS、等資源從CDN調(diào)度1用戶層描述了本系統(tǒng)所支持的用戶類型包括:pc用戶、app用戶、h5用戶。pc用戶通過瀏覽器系統(tǒng)、app用戶通過ndid、is系統(tǒng),H5用戶通過h5頁面系統(tǒng)。2N全稱ContentDelveryNetork,即內(nèi)容分發(fā)網(wǎng)絡(luò),本系統(tǒng)所有靜態(tài)資源全部通過N加速來提高速度。系統(tǒng)靜態(tài)資源包括:ml頁面、s文件、css文件、image圖片、pdfppt及doc教學(xué)文檔、 等。3系統(tǒng)的CDN層、I層、服務(wù)層及數(shù)據(jù)層均設(shè)置了負(fù)載均衡服務(wù),上圖僅在UI層前邊標(biāo)注了負(fù)載均衡。每一層的負(fù)載均衡會(huì)根據(jù)系統(tǒng)的需求來確定負(fù)載均衡器的類型,系統(tǒng)支持4層負(fù)載均衡+7層負(fù)載均衡結(jié)合的方式,4層負(fù)載均衡是指在網(wǎng)絡(luò)傳輸層進(jìn)行流程轉(zhuǎn)發(fā),根據(jù)IP和端口進(jìn)行轉(zhuǎn)發(fā),7層負(fù)載均衡完成TTP協(xié)議負(fù)載均衡及反向的功能,根據(jù)url進(jìn)行請求轉(zhuǎn)發(fā)。4I層描述了系統(tǒng)向pc用戶、app用戶、h5用戶提供的產(chǎn)品界面。根據(jù)系統(tǒng)功能模塊特點(diǎn)確定了UI層包括如下產(chǎn)品界面類型:1)面向pc用戶的門戶系統(tǒng)、學(xué)習(xí)中心系統(tǒng)、教學(xué)管理系統(tǒng)、系統(tǒng)。2)面向h5用戶的門戶系統(tǒng)、學(xué)習(xí)中心系統(tǒng)。3)面向app用戶的門戶系統(tǒng)、學(xué)習(xí)中心系統(tǒng)未在上圖標(biāo)注,在app項(xiàng)目中有詳細(xì)說明。5用戶提供學(xué)習(xí)服務(wù)。后端服務(wù):主要為管理用戶提供教學(xué)管理服務(wù)。系統(tǒng)服務(wù):公共服務(wù),為系統(tǒng)的所有微服務(wù)提供公共服務(wù)功能。服務(wù)網(wǎng)關(guān):提供服務(wù)路由、負(fù)載均衡、6數(shù)據(jù)層描述了系統(tǒng)的數(shù)據(jù)的內(nèi)容類型,持久化的業(yè)務(wù)數(shù)據(jù)使用MySQL和MongoDB保存,其中MongoDB中主要保存系統(tǒng)日志信息。消息隊(duì)列:系統(tǒng)服務(wù)間通信的消息,本身提供消息存取服務(wù),與微服務(wù)層的系統(tǒng)服務(wù)連接。庫程信的索引信息,本身提供索引及搜索的服務(wù),與微服務(wù)層的系統(tǒng)服務(wù)連接。系統(tǒng)的緩存服務(wù),課程信息、分類信息、用戶信息等,與微服務(wù)層的所有服務(wù)連接。文件:提供系統(tǒng)靜態(tài)資源文件的分布式服務(wù),文件服務(wù)器作為CDN服務(wù)器的數(shù)據(jù)來源,N上的靜態(tài)資源將最終在文件服務(wù)器上保存多份。流服務(wù):作為流服務(wù)器,所有的流文件。7 QQ、的賬號(hào)和即可登錄本系統(tǒng)。2) 4)接口,本系統(tǒng)與第平臺(tái)對(duì)接發(fā)送接口。5)郵件接口,本系統(tǒng)需要連接第的smpt郵件服務(wù)器對(duì)外發(fā)送電子郵件。6),本系統(tǒng)與平臺(tái)接口,用戶通過H5頁面。7)點(diǎn)播、,前期點(diǎn)播與采用務(wù)。8)OSS,前期靜態(tài)資源文件的采用第服務(wù)方式,本系統(tǒng)與第提上。9)CDN,本系統(tǒng)與第CDN服務(wù)對(duì)接,使用CDN加速服務(wù)來提高本系統(tǒng)的8vOps(英文vlpmnt和Opeations的組合)是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進(jìn)開發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運(yùn)營和(A)部門之間的溝通、協(xié)作與整合。本項(xiàng)目供了許多開發(fā)、運(yùn)營、支撐的系統(tǒng),包括:Eueka服務(wù)治理中心:提供服務(wù)治理服務(wù),包括:服務(wù)、服務(wù)獲取等。SprigClodC?g服務(wù)配置:提供服務(wù)配置管理服務(wù),包括:配置文件更新、配置文件下發(fā)等。HystrixDashboa服務(wù)熔斷:熔斷的請求響應(yīng)時(shí)間、成功率等。Zpkin服務(wù)追蹤監(jiān)控:服務(wù)調(diào)用鏈路健康情況。Jenkis持續(xù)集成服務(wù):提供系統(tǒng)持續(xù)集成服務(wù)。Gt/GtLab代碼管理服務(wù):提供gt代碼管理服務(wù)。ELK日志分析服務(wù):提供elk日志分析服務(wù),包括系統(tǒng)運(yùn)行日志分析、告務(wù)。Docer容器化部署服務(wù):將本系統(tǒng)所有服務(wù)采用容器化部署方式。Maven項(xiàng)目管理工具:提供管理項(xiàng)目所有的Java打包服務(wù)。學(xué)成服務(wù)端基于SpringBoot構(gòu)建,采用SpringCloud微服務(wù)框架。數(shù)據(jù)層:使用SpringDataJPA、Mybatis、SpringDataMongodb業(yè)務(wù)層:SpringIOC、Aop事務(wù)控制、SpringTask任務(wù)調(diào)度、Feign、Ribbon、SpringAMQP、SpringData控制層:SpringMVC、FastJSON、RestTemte、SpringSecurityOauth2+JWT等微服務(wù)治理:Eureka、Zuul、Hystrix、SpringCloudCon?g等項(xiàng)目是基于前后端分離的架構(gòu)進(jìn)行開發(fā),前后端分離架構(gòu)總體上包括前端和服務(wù)端,通常是多人協(xié)作并行開發(fā),開發(fā)步驟如下:CMS(ContentManagementSystem)即內(nèi)容管理系統(tǒng),不同的項(xiàng)目對(duì)CMS的定位不同,比如:一個(gè)教育站,有些公司認(rèn)為CMS系統(tǒng)是對(duì)所有的課程資源進(jìn)行管理,而在早期剛開始盛行時(shí)很多公司的業(yè)務(wù)是制作,上邊也談到每個(gè)公司對(duì)每個(gè)項(xiàng)目的MS定位不同,CMS基本上分為:針對(duì)數(shù)據(jù)內(nèi)容的管理、針對(duì)前端頁面的管理、針對(duì)樣式風(fēng)格的管理等。比如:一個(gè)給企業(yè)做的公司,其MS系統(tǒng)主要是頁面管理及樣式風(fēng)格的管理。本項(xiàng)目作為一個(gè)大型的教育平臺(tái),對(duì)CMS系統(tǒng)的定位是對(duì)各各(子站點(diǎn))頁面的管理,主要管理由于運(yùn)營本項(xiàng)目CMS是對(duì)頁面進(jìn)行管理,對(duì)頁面如何進(jìn)行管理呢?我們首先搭建學(xué)成網(wǎng)的靜態(tài)門戶工程,根據(jù)門戶的頁面結(jié)構(gòu)來分析頁面的管理方案。本nginx- : ssion;ssi_silent_errorson;location/{ index}}F:/teach/xcEdu/xcEduUI/xc-ui-pc-static-portal/ 即為門戶的 本的開發(fā)環(huán)境使用Windows7,修改C:\Windows\System32\drivers\etc\hosts文將頁面拆分成一個(gè)一個(gè)的小頁面,通過cms去管理這些小頁面,當(dāng)要更改部分頁面內(nèi)容時(shí)只需要更改具體某個(gè)小頁面即可。ssi包含類似于jp頁面中的incluce指令,si是在we服務(wù)端將include指定的頁面包含在網(wǎng)頁中,渲染tml。ix、ace等多數(shù)web容器都支持SI指令。 ssion;ssi_silent_errorson;ss的配置參數(shù)如下:ssion:開啟ss支持ssi_sil_rrorson:默認(rèn)為o?,設(shè)置為on則在處理I出錯(cuò)息ssi_tyes認(rèn)為ssi_tyestext/html,如果需要支持shtml(服務(wù)器執(zhí)行,類似于jsp)則需要設(shè)置為ss_tyestext/stml一個(gè)有很多子站點(diǎn),比如:學(xué)成有主門戶、學(xué)習(xí)中心、問答系統(tǒng)等子站點(diǎn)。具體的哪個(gè)頁面是歸屬于具體的站點(diǎn),所以要管理頁面,先要管理頁面所屬的站點(diǎn)。頁面如何創(chuàng)建呢?比如的商品詳情頁面,每個(gè)頁面的內(nèi)容布局、板式是相同的,不同的只是內(nèi)容,這個(gè)頁面的布局、板式就是頁面模板,模板+數(shù)據(jù)就組成一個(gè)完整的頁面,最終要?jiǎng)?chuàng)建一個(gè)頁面文件需要先定義此頁面的模板,最終拿到頁面的數(shù)據(jù)再結(jié)合模板就拼裝成一個(gè)完整的頁面。頁面預(yù)覽是頁面發(fā)布前的一項(xiàng)工作,頁面預(yù)覽使用靜態(tài)化技術(shù)根據(jù)頁面模板和數(shù)據(jù)生成頁面內(nèi)容,并通過瀏覽器預(yù)覽頁面。頁面發(fā)布前進(jìn)行頁面預(yù)覽的目是為了保證頁面發(fā)布后的正確性。頁面發(fā)布成功,用戶即可在瀏覽器瀏覽到發(fā)布的頁面,整個(gè)頁面添加、發(fā)布的過程由于軟件自動(dòng)執(zhí)行,無需人工登錄服務(wù)器操作。 idea可以自動(dòng)優(yōu)化導(dǎo)入包,但是有多個(gè)同名的類調(diào)用不同的包,必須自己手動(dòng)At+Entr設(shè)置idea導(dǎo)入包-Xms1024m-Xmx4096m-XX:MaxPermSize=1024m-XX:2、點(diǎn)擊ImportModel,選擇parent 安裝1、Mongodb是非關(guān)系型數(shù)據(jù)庫,Json格式數(shù)據(jù),數(shù)據(jù)格式靈活。參考“mongodb安裝.md”安裝MongodbServer及Studio3T使用Studio3T軟件導(dǎo)入cms數(shù)據(jù)庫2、導(dǎo)入cms打開窗口,選擇第一個(gè)json在梳理完用戶需求后就要去定義前后端的接口,接口定義后前端和后端就可以依據(jù)接口去開發(fā)功能了。本次定義頁面查詢接口,本接口供前端請求查詢頁面列表,支持分頁及自定義條件查詢方式。3、接口基于HttpGet請求,響應(yīng)Json數(shù)據(jù) publicclassCmsPage{ privateStringprivateStringprivateStringprivateStringprivateStringprivateStringprivateStringprivateStringprivateDateprivateStringtemprivateList<CmsPageParam> privateStringtemprivateStringprivateString}多個(gè)頁面可以使用相同的模板,比如:商品信息模板,每個(gè)商品就是一個(gè)頁面,所有商品使用同一個(gè)商品信息模板注解說明:@Data、@ToString、@注解表示什么意思 5.2.3Lombok是一個(gè)實(shí)用的java工具,使用它可以消除java代碼的臃腫,Lombok提供一系列的注解,使用這些注解可以不用定義gett/sterequals、構(gòu)造方法等,它會(huì)在編譯時(shí)在字節(jié)碼文件自動(dòng)生成這些通用的方法,簡化開發(fā)人員的工作。項(xiàng)目地址比如上節(jié)創(chuàng)建的Usrest模型,Dta注解可以自動(dòng)生成gett/settr方法,@oString生成tostring使用方法:1、定義請求模型QueryPageRequestRequestData類型。packagepackageimportimportpublicclassQueryPageRequestextendsRequestDataprivateStringprivateStringprivateStringprivateStringprivateString }publicpublicinterfaceCmsPageControllerApipublicQueryResponseResultfindList(intpage,intsize,QueryPageRequestqueryPageRequest)}創(chuàng)建maven工程,CMS工程的名稱為xc-service-manage-cms,父工程為xc-framework-parent。<?xml<?xmlversion="1.0"<projectinstance""‐<artifactId>spring‐boot‐starter‐由于cms工程要連接mongodb所以需要在在cms項(xiàng)目使用springdatamongdb操作mnob數(shù)據(jù)庫 name:uri:mongodb://root:123@localhost:27017database:xc_cms4、SpringBootSpringBoot應(yīng)用需要?jiǎng)?chuàng)建一個(gè)應(yīng)用啟動(dòng)類,啟動(dòng)過程中會(huì)掃描Bean并注入spring容器注意:此類創(chuàng)建在本工程com.xuecheng.manage_cms包下:publicclassManageCmsApplication{publicstaticvoidmain(String[]{}}測試packagepackageimportimportcom.xuecheng.framework. importcom.xuecheng.framework.model.response.QueryResponseResult;importcom.xuecheng.manage_cms.service.PageService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.RestController;publicclassCmsPageControllerimplementsCmsPageControllerApi publicQueryResponseResultfindList(@PathVariable("page")intpage,@PathVariable("size")intsize,QueryPageRequestqueryPageRequest){QueryResultqueryResult=newQueryResult();Listlist=newArrayList();CmsPagecmsPage=newCmsPage();return}}輸入:查詢第1頁,每頁顯示10條記錄本項(xiàng)目使用SpringDataMongodb完成Mongodb數(shù)據(jù)庫的查詢,SpringDataMongodb提供一套快捷操作publicpublicinterfaceCmsPageRepositoryextendsMongoRepository<CmsPage,String>}測試程序使用@SpringBootest和@RunWith(SprngRunner.cass)注解,啟動(dòng)測試類會(huì)從main下找springBot啟動(dòng)類,加載spring容器。packagepackageimportimportimportimportimportorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importorg.springframework.data. importpublicclassCmsPageRepositoryTestCmsPageRepositoryCmsPageRepository}publicvoid{intpage=0;//從0開始intsize10;//每頁記錄數(shù)Pageablepageable=PageRequest.of(page,size);}oMMy中定義了很多現(xiàn)成的方法,如ee等,通過下邊的代碼來測試這里父類方法。publicvoid cmsPage.setPageCreateTime(newDate());List<CmsPageParam>cmsPageParams=newArrayList<>();CmsPageParamcmsPageParam=newCmsPageParam();}publicvoid{}publicvoidtestUpdate()Optional<CmsPage>optional=cmsPageRepository.findOne("5b17a34211fe5e2ee8c116c9");CmsPagecmsPage=optional.get();}}Oinl是jdk1.8引入的類型,Oil是一個(gè)容器對(duì)象,它包括了我們需要的對(duì)象,使用isPesetisPeset方法返回false則表示Oinl包含對(duì)象為空,否則可以使用get()取出對(duì)象進(jìn)行操作。同SpringDataJPA一樣SpringDatamongodbpublicpublicinterfaceCmsPageRepositoryextendsMongoRepository<CmsPage,String>CmsPagefindByPageName(StringCmsPagefindByPageNameAndPageType(StringpageName,StringintcountBySiteIdAndPageType(StringsiteId,StringPage<CmsPage>findBySiteIdAndPageType(StringsiteId,StringpageType,Pageable}packageimportcom.xuecheng.framework.importcom.xuecheng.framework..cms.request.QueryPageRequest;importcom.xuecheng.framework. importcom.xuecheng.framework.model.response.QueryResponseResult;importcom.xuecheng.framework.model.response.QueryResult;importcom.xuecheng.manage_cms.dao.CmsPageRepository;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.data..Page;importorg.springframework.data..PageRequest;importorg.springframework.data..Pageable;importorg.springframework.stereotype.Service;publicclass{CmsPageRepository@paramsize@paramqueryPageRequest@returnqueryPageRequest){if(queryPageRequest==null){queryPageRequest=new}if(page<={page=}pagepage1;//為了適應(yīng)mongodb的接口將頁碼減1if(size<=0){size=}Pageablepageable=newPageRequest(page,Page<CmsPage>all=cmsPageRepository.findAll(pageable);returnnew}}packagepackageimportimportcom.xuecheng.framework. importcom.xuecheng.framework.model.response.QueryResponseResult;importcom.xuecheng.manage_cms.service.PageService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.RestController;publicclassCmsPageControllerimplements{@AutowiredPageServicepageService; intsize,QueryPageRequestqueryPageRequest){return}}輸入:查詢第1頁,每頁顯示10條記錄 2、t請求時(shí),可以提交form表單數(shù)據(jù)(aplicatin/x-www-frm-urlncded)和Json數(shù)據(jù)(Ctet-ype=appation/json),文件等多部件類型(mutiprt/frm-data)三種數(shù)據(jù)格式,pringM接收J(rèn)son使用@RqestBdy注解解析請求的json數(shù)據(jù)。1、@PathVariable統(tǒng)一指定參數(shù)名稱,如:@PathVariable("id")2、@RequestParam統(tǒng)一指定參數(shù)名稱,如:上邊的代碼是基于服務(wù)端編寫接口,如果前端人員等待服務(wù)端人員將接口開發(fā)完畢再去開發(fā)前端內(nèi)容這樣做效率是非常低下的,所以當(dāng)接口定義完成,可以使用工具生成接口文檔,前端人員查看接口文檔即可進(jìn)行前端開發(fā),這樣前端和服務(wù)人員并行開發(fā),大大提高了生產(chǎn)效率。OpenAPI規(guī)范(OpenAPISpeci?cation簡稱OAS)是Linux的一個(gè)項(xiàng)目,試圖通過定義一種用來描述API格
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版建筑材料知識(shí)產(chǎn)權(quán)保護(hù)銷售合同樣本3篇
- 二零二五年度車場租賃與停車場環(huán)境美化合同4篇
- 教育領(lǐng)域的時(shí)間管理研究進(jìn)展與展望
- 家庭教育環(huán)境的智能化改造方案
- 二零二五年度草原生態(tài)修復(fù)與種植合作合同3篇
- 2025版施工安全責(zé)任免除協(xié)議書(全新升級(jí))3篇
- 甘肅2025年甘肅民族師范學(xué)院招聘博士研究生59人筆試歷年參考題庫附帶答案詳解
- 二零二五年度新能源高速公路車輛通行費(fèi)結(jié)算合同2篇
- 網(wǎng)絡(luò)世界安全為先家庭教育的必修課
- 2025年度農(nóng)業(yè)綜合開發(fā)項(xiàng)目土地承包種植合同4篇
- 《電力用直流電源系統(tǒng)蓄電池組遠(yuǎn)程充放電技術(shù)規(guī)范》
- 《哪吒之魔童降世》中的哪吒形象分析
- 信息化運(yùn)維服務(wù)信息化運(yùn)維方案
- 汽車修理廠員工守則
- 六年級(jí)上冊數(shù)學(xué)應(yīng)用題100題
- 個(gè)人代賣協(xié)議
- 公安交通管理行政處罰決定書式樣
- 10.《運(yùn)動(dòng)技能學(xué)習(xí)與控制》李強(qiáng)
- 冀教版數(shù)學(xué)七年級(jí)下冊綜合訓(xùn)練100題含答案
- 1神經(jīng)外科分級(jí)護(hù)理制度
- 場館惡劣天氣處置應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論