楊驍 盧滌非
摘要:根據(jù)互聯(lián)網(wǎng)行業(yè)發(fā)展和企業(yè)崗位需求,分析微服務(wù)人才必備的知識結(jié)構(gòu),以及技能和素質(zhì)要求,提出“分布式微服務(wù)”課程的主要內(nèi)容為Spring Cloud架構(gòu)及其技術(shù)?;赟pring Cloud開發(fā)框架,以企業(yè)級的電商后臺項目為載體,引入真實的企業(yè)軟件開發(fā)流程,實施企業(yè)項目化教學(xué),培養(yǎng)學(xué)生未來工作所需的能力及素質(zhì)。
關(guān)鍵詞:分布式微服務(wù);Spring Cloud;企業(yè)級電商后臺;軟件開發(fā);項目化教學(xué)
中圖分類號:G642.0 文獻標(biāo)識碼:A 文章編號:1006-8228(2020)08-91-04
0 引言
隨著互聯(lián)網(wǎng)業(yè)務(wù)規(guī)模的迅速發(fā)展,軟件服務(wù)和系統(tǒng)的復(fù)雜度也快速增長。由于傳統(tǒng)的單體架構(gòu)無法滿足快速迭代、持續(xù)交付、系統(tǒng)擴展性等需求,因此需要將原來的系統(tǒng)拆分為獨立的服務(wù)單元,形成多個微服務(wù)。而微服務(wù)之間難免會存在依賴關(guān)系,這就需要使用分布式技術(shù)來解決系統(tǒng)拆分后遇到的問題,因此,企業(yè)對分布式微服務(wù)人才的需求愈來愈迫切。分布式微服務(wù)課程旨在培養(yǎng)計算機網(wǎng)絡(luò)技術(shù)專業(yè)學(xué)生從事Java Web開發(fā)與應(yīng)用所需的技能。本文結(jié)合計算機網(wǎng)絡(luò)技術(shù)專業(yè)人才培養(yǎng)目標(biāo)和Java Web開發(fā)工程師資格標(biāo)準(zhǔn),探討分布式微服務(wù)課程開發(fā)路徑、內(nèi)容構(gòu)建及Spring Cloud在企業(yè)級項目教學(xué)中的應(yīng)用。
1 分布式微服務(wù)課程的開發(fā)思路
1.1 開發(fā)路徑
課程的開發(fā)與設(shè)計是教學(xué)的重點[1],從工作需要出發(fā)是課程開發(fā)的起點嘲。根據(jù)對計算機網(wǎng)絡(luò)技術(shù)專業(yè)畢業(yè)生的就業(yè)情況分析、市場調(diào)查和社會招聘需求分析,確定該課程對應(yīng)的職業(yè)崗位為Java Web后臺開發(fā)工程師,而這一崗位普遍提出了對分布式微服務(wù)技術(shù)的要求,其典型工作任務(wù)為需求分析、系統(tǒng)方案設(shè)計、軟件開發(fā)、系統(tǒng)調(diào)試、系統(tǒng)部署及維護,從而可以歸納出行動領(lǐng)域要求的相應(yīng)的專業(yè)能力、方法能力和社會能力,最后轉(zhuǎn)化為對課程教學(xué)內(nèi)容的選取和學(xué)習(xí)情境的設(shè)計。課程開發(fā)思路如圖1所示。
1.2 Java Web開發(fā)技術(shù)棧
專業(yè)技術(shù)棧是從事專業(yè)某個崗位(群)所需要掌握的一系列技能的組合。結(jié)合本課程對應(yīng)的以Java Web為核心的分布式微服務(wù)開發(fā)工程師的技術(shù)需求,可歸納出該職業(yè)崗位所需要的專業(yè)技術(shù)棧(如圖2所示)。
技術(shù)棧中的Java語言基礎(chǔ)、Java Web基礎(chǔ)知識、Java Web框架對應(yīng)的前導(dǎo)課程分別是“Java程序語言設(shè)計”、“Java Web開發(fā)”和“Java EE企業(yè)級應(yīng)用開發(fā)”。而Java分布式微服務(wù)技術(shù)就是“分布式微服務(wù)”這門課程所要培養(yǎng)的技能。
2 分布式微服務(wù)課程內(nèi)容的構(gòu)建
2.1 課程內(nèi)容構(gòu)建的原則
課程內(nèi)容的構(gòu)建是課程建設(shè)與改革的重點與難點。課程內(nèi)容的選取要以技術(shù)領(lǐng)域和職業(yè)崗位(群)的任職要求,參照相關(guān)職業(yè)資格標(biāo)準(zhǔn),重視其“針對性”和“適用性”;也要兼顧技術(shù)領(lǐng)域的更新和學(xué)生的可持續(xù)發(fā)展,突出其“發(fā)展性”。此外,課程內(nèi)容的組織應(yīng)以真實工作任務(wù)及其工作過程為依據(jù),或以典型項目為依托,以能力為主線,對學(xué)習(xí)情境(或項目、或主題單元)進行結(jié)構(gòu)化、系統(tǒng)化的設(shè)計,課程各模塊之間有合理的邏輯結(jié)構(gòu)[3],體現(xiàn)其“邏輯性”。
2.2 Spring Cloud架構(gòu)及其內(nèi)容
根據(jù)上述課程內(nèi)容構(gòu)建的原則要求,通過對主流的分布式微服務(wù)框架進行分析,從而將分布式微服務(wù)開發(fā)框架Spring Cloud及其相關(guān)技術(shù)明確為微服務(wù)課程的主要教學(xué)內(nèi)容。
當(dāng)系統(tǒng)由單體應(yīng)用拆分成分布式服務(wù)后,單體應(yīng)用中的各個模塊被劃分到了各個子系統(tǒng),各個模塊之間的相互調(diào)用變成子系統(tǒng)之間的網(wǎng)絡(luò)交互。Spring Cloud提供了一系列框架來進行分布式服務(wù)的構(gòu)建,如圖3所示:分布式注冊中心Eureka、負載均衡組件Ribbon、分布式網(wǎng)關(guān)Zuul、聲明式調(diào)用組件Feign和熔斷器Hystrix。
3 Spring Cloud在企業(yè)級項目化教學(xué)中的應(yīng)用
3.1 企業(yè)級電商后臺項目
面向企業(yè)真實生產(chǎn)環(huán)境的項目化教學(xué)模式是“引企入教”課程改革思想的生動實踐,有利于教學(xué)做一體化的實施,有利于提高學(xué)生的應(yīng)用能力和學(xué)習(xí)積極性。本課程選擇電商項目作為載體主要基于兩點考慮:首先,學(xué)生在生活中經(jīng)常使用過淘寶、京東等電商平臺,是電商產(chǎn)品的用戶,在業(yè)務(wù)理解上相對容易。其次,該電商項目由多個模塊組成,且各模塊之間有信息交互,具有一定的復(fù)雜度和綜合性,適合使用分布式微服務(wù)技術(shù)來構(gòu)建系統(tǒng)。
電商后臺可以拆分為商品中心、訂單中心、支付中心、會員中心等子系統(tǒng)。在一個完整的交易鏈路上,需要各個子系統(tǒng)之間相互交互,因此各個子系統(tǒng)都需要采用Spring Cloud來進行構(gòu)建。
3.2 企業(yè)軟件開發(fā)真實流程的引入
3.2.1 真實企業(yè)級項目引入教學(xué)的優(yōu)勢
傳統(tǒng)項目式教學(xué)的不足在于,學(xué)生往往實現(xiàn)的只是具體的某項功能;而在實際工作中,需面對的卻是現(xiàn)實生活中的各種需求;從現(xiàn)實需求到具體要實現(xiàn)的功能的轉(zhuǎn)化需要對業(yè)務(wù)的理解和抽象。引入企業(yè)級項目式教學(xué)模式,不僅在項目學(xué)習(xí)內(nèi)容上模擬企業(yè)級的軟件產(chǎn)品,而且在軟件開發(fā)流程上也與真實的企業(yè)環(huán)境保持一致,讓學(xué)生可以體驗到真實的工作場景,熟悉軟件開發(fā)流程,掌握各種實際工作所需的實用技術(shù)。
3.2.2 軟件開發(fā)的主要流程及其描述
基于軟件開發(fā)工作流程,分析崗位對應(yīng)的工作任務(wù)是分布式微服務(wù)課程開發(fā)的重要技術(shù)。這就要求在課程開發(fā)者有一定的企業(yè)工作經(jīng)歷,熟悉企業(yè)真實開發(fā)流程,同時能有效地根據(jù)工作任務(wù)重組課程內(nèi)容體系,從而有針對性地培養(yǎng)學(xué)生完成實際項目所需的各項技能及相應(yīng)的專業(yè)能力、方法能力和社會能力。下面分別從軟件開發(fā)流程的開發(fā)前、開發(fā)中和開發(fā)后三個階段進行描述(如圖4所示)。
開發(fā)前:在這里的企業(yè)級項目中,分配給學(xué)生的是需求而不是具體要實現(xiàn)的功能。首先引導(dǎo)學(xué)生進行需求分析,在準(zhǔn)確理解用戶和項目需求后,來確定系統(tǒng)需要實現(xiàn)的功能,從而培養(yǎng)學(xué)生的業(yè)務(wù)理解能力和抽象能力。在系統(tǒng)分析時明確當(dāng)前系統(tǒng)在整理系統(tǒng)中的位置和上下游依賴關(guān)系,劃分功能邊界,培養(yǎng)學(xué)生站在項目整體的高度去架構(gòu)系統(tǒng)的能力;此外,實現(xiàn)一個功能的方案通常有多種,引導(dǎo)學(xué)生通過系統(tǒng)分析權(quán)衡各種實現(xiàn)方案之間的適用場景和利弊,來選擇最優(yōu)的方案,從而培養(yǎng)學(xué)生的思維擴展能力和系統(tǒng)分析能力。在正式開發(fā)之前,需要先定義好與上下游系統(tǒng)進行的交互協(xié)議,并與對應(yīng)的負責(zé)人進行協(xié)議評審,確保協(xié)議的合理性和完整性。引導(dǎo)學(xué)生進行前后端協(xié)議文檔的書寫,可以培養(yǎng)學(xué)生的思維嚴(yán)密性和工程規(guī)范意識。開發(fā)前的最后一步是數(shù)據(jù)庫設(shè)計。由于電商后臺是重業(yè)務(wù)、重邏輯的后臺,數(shù)據(jù)庫設(shè)計的合理性和擴展性,在一定程度上就決定了系統(tǒng)本身的正確性和擴展性。引導(dǎo)學(xué)生進行數(shù)據(jù)庫的設(shè)計,可以鍛煉學(xué)生系統(tǒng)設(shè)計的能力。
開發(fā)中:在開發(fā)過程中,因為學(xué)生實現(xiàn)的子系統(tǒng)只是完整系統(tǒng)的一部分,必然需要依賴其他系統(tǒng)才能完成完整的功能,而在真實項目中,各個子系統(tǒng)之間的開發(fā)進度往往是并行的,因此需要自己去Mock依賴接口來完成開發(fā)中的自測。更進一步,可以引導(dǎo)學(xué)生設(shè)計完善的單元測試用例,之后進行測試驅(qū)動開發(fā),培養(yǎng)其良好的軟件開發(fā)習(xí)慣。在各個子系統(tǒng)開發(fā)完成之后,與別的同學(xué)進行系統(tǒng)聯(lián)調(diào),這個階段往往可以發(fā)現(xiàn)一些前面各個階段考慮不周引起的問題。通過相互協(xié)作解決這些問題的過程,可以培養(yǎng)學(xué)生的溝通能力、合作能力和處理問題的能力。在系統(tǒng)聯(lián)調(diào)之后,各組之間相互進行測試,列出出現(xiàn)的缺陷( bugs)。讓學(xué)生站在另一個角度去審視整個系統(tǒng),培養(yǎng)思維的嚴(yán)密性。通過代碼評審來發(fā)現(xiàn)代碼中存在的編碼規(guī)范問題、代碼結(jié)構(gòu)問題、實現(xiàn)問題等,引導(dǎo)學(xué)生進行代碼重構(gòu),提高代碼質(zhì)量。
開發(fā)后:在系統(tǒng)開發(fā)后,首先需要進行系統(tǒng)容量評估,確定系統(tǒng)的吞吐量、最大并發(fā)量等數(shù)據(jù),從而明確系統(tǒng)的性能瓶頸。然后引導(dǎo)學(xué)生將服務(wù)部署到云服務(wù)上。在服務(wù)部署后,還需要配置服務(wù)相關(guān)的監(jiān)控和告警,以便及時發(fā)現(xiàn)線上系統(tǒng)的問題,并能在系統(tǒng)出現(xiàn)問題后,對問題排查和修復(fù)。在開發(fā)后進行的對系統(tǒng)的容量評估、部署、監(jiān)控和維護工作可以提高學(xué)生實際的工程應(yīng)用能力、問題解決能力,培養(yǎng)學(xué)生的責(zé)任意識。
4 結(jié)束語
課程是教育供給社會的重要產(chǎn)品,課程建設(shè)是高等教育內(nèi)涵建設(shè)的核心[4],工作過程是課程開發(fā)與設(shè)計的起點,能力培養(yǎng)是課程開發(fā)的指向目標(biāo),企業(yè)要素是課程開發(fā)的關(guān)鍵元素[5],真實項目是課程開發(fā)的生動素材?;赟pring Cloud架構(gòu)的“分布式微服務(wù)”課程,源于企業(yè)真實項目,再現(xiàn)企業(yè)真實工作流程與場景,融合相關(guān)知識和技能,有效培養(yǎng)了學(xué)生的程序思維和應(yīng)用能力,為后續(xù)專業(yè)課程的學(xué)習(xí)和可持續(xù)發(fā)展打下了堅實基礎(chǔ)。由于課程學(xué)習(xí)質(zhì)量是課程開發(fā)的出發(fā)點和落腳點,本課程還需根據(jù)“崗證課融通”的原則,逐步完善其多元評價標(biāo)準(zhǔn)。
參考文獻(References):
[1]盧滌非.“互聯(lián)網(wǎng)+”時代的高職實訓(xùn)課程移動學(xué)習(xí)平臺探討[J].計算機時代,2019.12:79-80,84
[2]姜大源.世界職教課程改革的基本走勢及啟示[J].前沿,2008.11:4-10
[3]徐國慶.職業(yè)教育項目課程開發(fā)指南[M].華東師范大學(xué)出版社.2009.
[4]劉雪琪.實現(xiàn)內(nèi)涵發(fā)展要發(fā)揮專業(yè)建設(shè)作用[J].中國高等教育,2017. 21: 59-60
[5]覃川.I+X證書制度:促進類型教育內(nèi)涵發(fā)展的重要保障[J].中國高教研究,2020.1:104-108
基金項目:浙江省自然科學(xué)基金,浙江省基礎(chǔ)公益研究計劃項目(LGG19H180001)
作者簡介:楊驍(1990-),男,湖北南漳人,碩士研究生,工程師,主要研究方向:分布式技術(shù)與大數(shù)據(jù)。
通訊作者:盧滌非(1972-),男,浙江東陽人,博士研究生,教授,主要研究方向:圖形圖像技術(shù)和教學(xué)。