楊驍 盧滌非



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