摘 "要:高考志愿填報(bào)作為每位考生必須面對(duì)的環(huán)節(jié),其重要性不言而喻。針對(duì)當(dāng)前高考志愿填報(bào)推薦系統(tǒng)不易擴(kuò)展、難以應(yīng)對(duì)高并發(fā)、維護(hù)效率低等問(wèn)題,提出一種基于微服務(wù)架構(gòu)的新高考志愿填報(bào)推薦系統(tǒng)。研究首先對(duì)系統(tǒng)的整體微服務(wù)技術(shù)架構(gòu)進(jìn)行描述,詳細(xì)闡述各層的設(shè)計(jì)思想和中間基礎(chǔ)件的構(gòu)成及其作用;其次對(duì)系統(tǒng)的總體功能模塊進(jìn)行說(shuō)明,并以應(yīng)用關(guān)系圖的方式展示各模塊之間的聯(lián)系和前后邏輯;最后從構(gòu)建微服務(wù)、微服務(wù)統(tǒng)一管理、負(fù)載均衡、服務(wù)網(wǎng)關(guān)以及自動(dòng)化部署等方面對(duì)微服務(wù)的核心架構(gòu)進(jìn)行設(shè)計(jì)。研究結(jié)果表明,采用基于微服務(wù)架構(gòu)的高考志愿填報(bào)推薦系統(tǒng)能最大程度地提升應(yīng)用系統(tǒng)的性能和靈活性,滿(mǎn)足用戶(hù)對(duì)高并發(fā)和業(yè)務(wù)擴(kuò)展的現(xiàn)實(shí)需求。
關(guān)鍵詞:微服務(wù);高考志愿;高性能;擴(kuò)展性;設(shè)計(jì)原則
中圖分類(lèi)號(hào):TP302 " " "文獻(xiàn)標(biāo)志碼:A " " " " "文章編號(hào):2095-2945(2025)10-0028-06
Abstract: College applicationform filling is a step facing every candidate, and its importance is self-evident. In view of the problems that the current \"Recommendation System for College Application Form Filling\" is not easy to extend, difficult to cope with high concurrency, and of low maintenance efficiency, a new Recommendation System is proposed. This research first describes the overall microservice technical architecture of the system, and expounds in detail the design ideas of each layer and the composition and role of the intermediate infrastructure; then explains the overall functional modules of the system, and displays the connection and logic between each module in an application diagram; finally, the core architecture of the microservice is designed from the aspects of building microservices, unified management of microservices, load balancing, service gateway and automated deployment. The research results show that adopting the Recommendation System for College Application Form Filling based on the microservice architecture can maximize the performance and flexibility of the application system and meet the actual needs of users for high concurrency and business expansion.
Keywords: microservice; college application; high-performance; extensibility; design principles
隨著我國(guó)經(jīng)濟(jì)的不斷發(fā)展,社會(huì)對(duì)人才也提出了新的要求。為適應(yīng)變化,國(guó)家和地方教育管理部門(mén)相繼出臺(tái)了一系列的高考改革政策和措施。為體現(xiàn)高考志愿的公平性原則,我國(guó)已有多省份實(shí)行了“專(zhuān)業(yè)+學(xué)?!钡钠叫兄驹改J剑ㄋ椎刂v就是“分高先投檔”,這種以專(zhuān)業(yè)為導(dǎo)向的志愿填報(bào)模式,不但凸顯了考生的興趣,而且徹底改變了傳統(tǒng)的“學(xué)校+專(zhuān)業(yè)”的志愿填報(bào)模式。“專(zhuān)業(yè)+學(xué)?!钡钠叫兄驹改J酱蟠鬁p少了“高分低錄”的現(xiàn)象,提高了分?jǐn)?shù)的利用率,對(duì)大部分考生來(lái)說(shuō)更加公平。新高考改革的另一亮點(diǎn),便是采取“3+3”的科目設(shè)置方式,即打破原有的文理分科模式,由學(xué)生根據(jù)自己的興趣愛(ài)好、學(xué)業(yè)成績(jī)來(lái)自主選擇科目,賦予學(xué)生更多的“選擇權(quán)”。
志愿填報(bào)作為高考過(guò)后的重要一環(huán),牽動(dòng)著廣大考生和家長(zhǎng)的心。志愿填報(bào)是否合理不僅關(guān)系到考生是否能被心儀高校的理想專(zhuān)業(yè)錄取,也關(guān)系到高校對(duì)人才的合理選拔。經(jīng)調(diào)查發(fā)現(xiàn),專(zhuān)心備戰(zhàn)的考生對(duì)高考志愿填報(bào)政策了解甚少,加之部分家長(zhǎng)缺乏志愿填報(bào)的專(zhuān)業(yè)知識(shí),并且每個(gè)省份的志愿填報(bào)可能存在不同,對(duì)文字的解讀也存在一定的偏差。如何讓沒(méi)有多少高考志愿填報(bào)專(zhuān)業(yè)知識(shí)的考生能最大程度地利用考生高考分?jǐn)?shù),并結(jié)合自身的興趣愛(ài)好填報(bào)心儀的院校和專(zhuān)業(yè),是當(dāng)前志愿填報(bào)最實(shí)際、最現(xiàn)實(shí)的問(wèn)題。為解決盲目填報(bào)高考志愿導(dǎo)致的“高分低就”“高分不就”及“興趣與專(zhuān)業(yè)不符”等問(wèn)題,實(shí)現(xiàn)精準(zhǔn)報(bào)考,做到“簡(jiǎn)單輸入基礎(chǔ)信息,智能輸出最優(yōu)志愿”,國(guó)內(nèi)已有不少專(zhuān)家學(xué)者對(duì)高考志愿填報(bào)推薦系統(tǒng)進(jìn)行了相關(guān)研究。2020年,孫彥幫等[1]設(shè)計(jì)了一款能幫助考生填報(bào)志愿的APP,通過(guò)對(duì)考生進(jìn)行特征分析,為適合的考生推薦錄取率較高的院校及專(zhuān)業(yè)。2021年,洪濤等[2]采用微信小程序,根據(jù)用戶(hù)行為偏好,基于大數(shù)據(jù)分析技術(shù),推薦適合考生的學(xué)校和專(zhuān)業(yè)。2022年,劉明奇等[3]通過(guò)Java Web完成了高考志愿智能推薦系統(tǒng)的開(kāi)發(fā)與實(shí)現(xiàn)。測(cè)試結(jié)果顯示,系統(tǒng)具有較好的易用性和實(shí)用性。2023年,李慧靜等[4]開(kāi)發(fā)了一款基于B/S的軟件系統(tǒng),旨在服務(wù)考生填報(bào)志愿,實(shí)現(xiàn)分?jǐn)?shù)與院校專(zhuān)業(yè)的合理匹配,案例分析表明,該軟件系統(tǒng)實(shí)現(xiàn)了基于數(shù)據(jù)驅(qū)動(dòng)的高考志愿決策。2024年,胡志超等[5]設(shè)計(jì)與開(kāi)發(fā)了招生信息管理系統(tǒng),并根據(jù)新高考改革省份錄取系統(tǒng)特點(diǎn),進(jìn)行了系統(tǒng)的優(yōu)化設(shè)計(jì)與分析。
隨著高考人數(shù)的逐年攀升,高并發(fā)訪(fǎng)問(wèn)無(wú)疑給高考志愿填報(bào)推薦系統(tǒng)的運(yùn)行帶來(lái)了巨大的挑戰(zhàn),同時(shí)為適應(yīng)高考的深化改革,部分業(yè)務(wù)流程和邏輯也會(huì)不斷變更,高可擴(kuò)展性也成為高考志愿填報(bào)推薦系統(tǒng)需要考慮的問(wèn)題。通過(guò)梳理相關(guān)文獻(xiàn),發(fā)現(xiàn)現(xiàn)有的高考志愿填報(bào)推薦系統(tǒng)一般注重功能的設(shè)計(jì)或者推薦算法的優(yōu)化,而很少注重推薦系統(tǒng)本身性能的提升和針對(duì)業(yè)務(wù)的擴(kuò)展性研究。因此,本文提出將微服務(wù)架構(gòu)應(yīng)用到高考志愿填報(bào)推薦系統(tǒng)中,利用其強(qiáng)大的業(yè)務(wù)劃分功能和快速部署能力,高度整合各業(yè)務(wù)模塊,從系統(tǒng)性能、業(yè)務(wù)可擴(kuò)展性、部署靈活性等方面提出了具體的解決方案,以期達(dá)到更好的用戶(hù)體驗(yàn)和應(yīng)用價(jià)值,本研究在助力考生填報(bào)志愿方面具有重要的現(xiàn)實(shí)意義。
1 "系統(tǒng)整體微服務(wù)技術(shù)架構(gòu)
早期的信息系統(tǒng)一般采用單體架構(gòu),如圖1所示,即所有的功能模塊全都耦合在一塊,代碼量大,后期維護(hù)困難,存儲(chǔ)方式單一,這種架構(gòu)會(huì)隨著業(yè)務(wù)復(fù)雜度和數(shù)據(jù)量的增加而變得效率低下、擴(kuò)展性差,即使應(yīng)用緩存服務(wù)器和負(fù)載均衡技術(shù)也很難解決其內(nèi)生問(wèn)題。
隨著信息技術(shù)的快速發(fā)展和高考改革的不斷深入,各垂直領(lǐng)域的信息平臺(tái)也相繼出現(xiàn)。為實(shí)現(xiàn)數(shù)據(jù)共享,數(shù)據(jù)和信息交流變得日益頻繁和復(fù)雜,多數(shù)據(jù)源已成為現(xiàn)代大型系統(tǒng)的一個(gè)重要特征,加之用戶(hù)數(shù)量的不斷增加,孤立的系統(tǒng)已無(wú)法滿(mǎn)足現(xiàn)實(shí)的需求,建立開(kāi)放、高可擴(kuò)展、技術(shù)異質(zhì)的架構(gòu)變得越來(lái)越重要[6],這既是外部業(yè)務(wù)需求的驅(qū)使,也是軟件技術(shù)發(fā)展到一定階段的要求。為了解決傳統(tǒng)單體架構(gòu)應(yīng)用在現(xiàn)代軟件開(kāi)發(fā)和運(yùn)維中所面臨的諸多挑戰(zhàn),微服務(wù)技術(shù)應(yīng)運(yùn)而生。本研究基于SpringCloud微服務(wù)架構(gòu)體系搭建新高考志愿填報(bào)推薦系統(tǒng),微服務(wù)架構(gòu)(Microservice Architecture)是一種將單體應(yīng)用拆分成一系列細(xì)粒度、獨(dú)立的服務(wù)單元的架構(gòu)模式。每個(gè)服務(wù)單元運(yùn)行在獨(dú)立的進(jìn)程中,并通過(guò)超文本傳輸協(xié)議(Hyper Text Transfer Protocol,HTTP)、遠(yuǎn)程過(guò)程調(diào)用等輕量級(jí)通信機(jī)制進(jìn)行數(shù)據(jù)交互,可以部署在不同的服務(wù)器上獨(dú)立運(yùn)行。這種架構(gòu)能提升系統(tǒng)的靈活性、可擴(kuò)展性、可維護(hù)性和可靠性。近年來(lái),隨著自動(dòng)化運(yùn)維工具和容器技術(shù)的成熟,微服務(wù)架構(gòu)的部署和管理也變得更加方便,這進(jìn)一步推動(dòng)了其在實(shí)際項(xiàng)目中的應(yīng)用。本系統(tǒng)的微服務(wù)整體技術(shù)架構(gòu)如圖2所示,分為持久層、中間件基礎(chǔ)層、微服務(wù)集群層、服務(wù)網(wǎng)關(guān)集群層、負(fù)載均衡層和應(yīng)用層。
圖1 "單體架構(gòu)圖
持久層負(fù)責(zé)將數(shù)據(jù)存儲(chǔ)到各類(lèi)數(shù)據(jù)庫(kù)中,為不同業(yè)務(wù)系統(tǒng)提供數(shù)據(jù)支撐,該層包含關(guān)系型數(shù)據(jù)庫(kù)MySQL集群、非關(guān)系型數(shù)據(jù)庫(kù)MongoDB和Redis分布式緩存以及HDFS分布式文件存儲(chǔ)系統(tǒng)。通過(guò)本層的精心設(shè)計(jì),微服務(wù)架構(gòu)能提供可靠、靈活和可擴(kuò)展的數(shù)據(jù)存儲(chǔ)解決方案。
中間件基礎(chǔ)層主要提供各類(lèi)中間件服務(wù)。當(dāng)服務(wù)提供者啟動(dòng)時(shí)會(huì)向注冊(cè)中心Eureka注冊(cè)自己的信息,服務(wù)消費(fèi)者則通過(guò)注冊(cè)中心獲取相應(yīng)的服務(wù)列表并進(jìn)行調(diào)用。SpringCloud Config配置中心為微服務(wù)架構(gòu)中的服務(wù)提供集中的外部配置支持,允許開(kāi)發(fā)人員將應(yīng)用程序的配置信息從代碼中分離出來(lái),并在運(yùn)行時(shí)動(dòng)態(tài)獲取應(yīng)用程序配置。Sleuth追蹤用于記錄請(qǐng)求的耗時(shí)、網(wǎng)絡(luò)延遲等,是一個(gè)分布式跟蹤系統(tǒng)。認(rèn)證服務(wù)作為處理用戶(hù)授權(quán)和認(rèn)證的關(guān)鍵部分,通過(guò)Spring Security等安全框架來(lái)實(shí)現(xiàn)權(quán)限的控制。RabbitMQ是消息中間件,用于在各分布式系統(tǒng)中傳遞數(shù)據(jù),達(dá)到了解耦和擴(kuò)展的目的。ELK能將不同服務(wù)器的日志進(jìn)行集中化管理,提升運(yùn)維人員的工作效率。
微服務(wù)集群層由各個(gè)拆分后的獨(dú)立微服務(wù)單元構(gòu)成,采用Docker容器技術(shù)以服務(wù)集群的方式部署在服務(wù)器上,各微服務(wù)之間通過(guò)輕量級(jí)通信方式進(jìn)行調(diào)用,它們都有自己獨(dú)立的進(jìn)程。從外部來(lái)看,這些微服務(wù)共同構(gòu)成一個(gè)完整的應(yīng)用系統(tǒng)[7]。該層主要為外部提供各種服務(wù),如含一分一段微服務(wù)、志愿填報(bào)微服務(wù)等。
服務(wù)網(wǎng)關(guān)集群層是系統(tǒng)的入口,負(fù)責(zé)接收和轉(zhuǎn)發(fā)所有外部請(qǐng)求,客戶(hù)端無(wú)須和微服務(wù)直接交互。這樣既簡(jiǎn)化了客戶(hù)端與服務(wù)之間的交互過(guò)程,也可以通過(guò)鑒權(quán)機(jī)制保證了后臺(tái)服務(wù)的安全性。
負(fù)載均衡層通過(guò)一定的均衡策略,將請(qǐng)求進(jìn)行轉(zhuǎn)發(fā),避免某個(gè)實(shí)習(xí)空閑而其他實(shí)例過(guò)載的情形,這有助于提升系統(tǒng)的吞吐量和整體性能。負(fù)載均衡層能將出現(xiàn)故障的實(shí)例從服務(wù)列表中刪除,將請(qǐng)求轉(zhuǎn)發(fā)至其他健康實(shí)例上,以提升系統(tǒng)的可用性。
應(yīng)用層是指各業(yè)務(wù)系統(tǒng)前端部分,其允許用戶(hù)通過(guò)多種方式訪(fǎng)問(wèn)各類(lèi)服務(wù),該層通過(guò)調(diào)用、組合與編排,協(xié)調(diào)多個(gè)微服務(wù)完成復(fù)雜的業(yè)務(wù)操作。通過(guò)將微服務(wù)提供的數(shù)據(jù)以適合不同前端需要的形式進(jìn)行轉(zhuǎn)換,提升了用戶(hù)的體驗(yàn)度。
2 "系統(tǒng)總體設(shè)計(jì)原則
新高考志愿填報(bào)系統(tǒng)總體設(shè)計(jì)應(yīng)遵循以下原則。①單一職責(zé)原則:每個(gè)微服務(wù)按照業(yè)務(wù)進(jìn)行拆分,使得每個(gè)微服務(wù)只負(fù)責(zé)某一個(gè)特定的業(yè)務(wù)功能,后期可根據(jù)需要增加或者刪除微服務(wù)。②輕量化協(xié)議通信原則:微服務(wù)架構(gòu)中,微服務(wù)之間需要進(jìn)行通信。Restful API 作為一種簡(jiǎn)單、通用的標(biāo)準(zhǔn)接口,可實(shí)現(xiàn)微服務(wù)之間低帶寬、跨平臺(tái)、跨語(yǔ)言的輕量級(jí)通信。③高內(nèi)聚低耦合原則:微服務(wù)內(nèi)部應(yīng)當(dāng)具有高度聚合的特性,即服務(wù)內(nèi)部之間的元素應(yīng)緊密關(guān)聯(lián)、密切配合,而微服務(wù)之間的依賴(lài)關(guān)系應(yīng)當(dāng)盡量松散,彼此之間的依賴(lài)性要小,可以根據(jù)業(yè)務(wù)進(jìn)行快速擴(kuò)展,同時(shí)不會(huì)影響整個(gè)系統(tǒng)的穩(wěn)定性。④容器化部署原則:現(xiàn)代大型應(yīng)用已經(jīng)變得越來(lái)越復(fù)雜,如何進(jìn)行高效管理和靈活部署已成為一個(gè)重要話(huà)題。容器化技術(shù)可以將微服務(wù)打包成一個(gè)容器,采用Docker 和 Kubernetes進(jìn)行管理,快速實(shí)現(xiàn)容器的增加和刪除,從而達(dá)到程序自動(dòng)化管理、靈活部署的目標(biāo)。⑤高可用性和容錯(cuò)性原則:微服務(wù)應(yīng)具有較高的可用性和容錯(cuò)性,以減少系統(tǒng)停機(jī)時(shí)間,保證系統(tǒng)的持續(xù)、穩(wěn)定運(yùn)行??赏ㄟ^(guò)如下幾種方式實(shí)現(xiàn)高可用,即負(fù)載均衡、冗余設(shè)計(jì)、預(yù)警機(jī)制、故障轉(zhuǎn)移和自動(dòng)化恢復(fù)等。⑥統(tǒng)一管理原則:需要對(duì)系統(tǒng)中的所有模塊進(jìn)行統(tǒng)一管理。每個(gè)微服務(wù)都應(yīng)當(dāng)被監(jiān)控,可以使用日志記錄工具來(lái)監(jiān)控可用性、性能、響應(yīng)時(shí)間和錯(cuò)誤率等指標(biāo)。通過(guò)配置中心對(duì)微服務(wù)的配置進(jìn)行統(tǒng)一管理,以利于實(shí)現(xiàn)配置的集中管理和動(dòng)態(tài)更新,降低配置的復(fù)雜性和錯(cuò)誤率。⑦SpringBoot和SpringCloud相整合的原則:SpringBoot內(nèi)置了很多常用的庫(kù)、組件以及依賴(lài)集合,讓開(kāi)發(fā)者快速搭建、部署和運(yùn)行微服務(wù)。SpringCloud作為構(gòu)建分布式應(yīng)用的成熟框架,可以實(shí)現(xiàn)微服架構(gòu)的各種功能。⑧多技術(shù)棧原則:微服務(wù)架構(gòu)允許不同的服務(wù)、不同的團(tuán)隊(duì)使用不同的技術(shù)棧,這有利于充分利用各種技術(shù)優(yōu)勢(shì),提升系統(tǒng)的靈活性,開(kāi)發(fā)技術(shù)??梢訨AVA體系為主,同時(shí)兼容其他技術(shù)棧以利于團(tuán)隊(duì)的整合[8]。
3 "系統(tǒng)總體功能模塊說(shuō)明
高考志愿填報(bào)推薦系統(tǒng)主要包含登錄/注冊(cè)、首頁(yè)、查專(zhuān)業(yè)、查學(xué)校、志愿填報(bào)和MBIT性格測(cè)試6大模塊,每個(gè)一級(jí)模塊下分別包含多個(gè)二級(jí)模塊,其系統(tǒng)模塊應(yīng)用關(guān)系如圖3所示。圖3中的實(shí)線(xiàn)表示一種包含關(guān)系,圖中的虛線(xiàn)表示有前后邏輯關(guān)系。
當(dāng)游客進(jìn)入首頁(yè)時(shí),即可了解最新資訊、熱門(mén)專(zhuān)業(yè)、熱門(mén)大學(xué)、省控線(xiàn)、一分一段和院校排行等信息。以一分一段功能為例,系統(tǒng)將根據(jù)所在地區(qū)、錄取年份以及考生類(lèi)別,分段顯示一分一段信息。數(shù)據(jù)將用2種方式呈現(xiàn),一種為普通的列表,另外一種為可視化折線(xiàn)圖。
進(jìn)入查學(xué)校模塊后,考生可以根據(jù)所屬省份、院校類(lèi)型、院校性質(zhì)等對(duì)院校進(jìn)行查找,了解指定高校的畢業(yè)生簽約情況以及就業(yè)單位性質(zhì)、專(zhuān)業(yè)就業(yè)率、錄取分?jǐn)?shù)、錄取概率和學(xué)校專(zhuān)業(yè)等信息。在查專(zhuān)業(yè)模塊中,系統(tǒng)默認(rèn)按照專(zhuān)業(yè)代碼進(jìn)行排序,用戶(hù)也可以根據(jù)專(zhuān)業(yè)門(mén)類(lèi)和專(zhuān)業(yè)層次進(jìn)行精準(zhǔn)查找。MBTI,全稱(chēng)為邁爾斯-布里格斯類(lèi)型指標(biāo),是一種基于人格類(lèi)型理論發(fā)展起來(lái)的性格評(píng)估工具和自我報(bào)告問(wèn)卷,其測(cè)試量表有4個(gè)人格維度,即注意方向、認(rèn)知方式、判斷方式和生活方式。通過(guò)排列組合將人的心理活動(dòng)規(guī)律和性格劃分成了16種類(lèi)型。本系統(tǒng)將MBTI測(cè)試應(yīng)用于高考志愿填報(bào),輔助考生選擇專(zhuān)業(yè),挖掘考生的興趣和愛(ài)好。
志愿填報(bào)將為考生提供院校和專(zhuān)業(yè)的智能推薦,系統(tǒng)將性格參數(shù)、高考成績(jī)、生源地和選科情況等數(shù)據(jù)進(jìn)行綜合運(yùn)算,將符合條件的志愿推薦結(jié)果按錄取概率進(jìn)行排序,以方便考生和家長(zhǎng)做出選擇。
4 "系統(tǒng)微服務(wù)核心架構(gòu)設(shè)計(jì)
4.1 "微服務(wù)設(shè)計(jì)
系統(tǒng)按業(yè)務(wù)進(jìn)行微服務(wù)劃分,采用SpringBoot開(kāi)發(fā)單個(gè)微服務(wù)應(yīng)用,通過(guò)SpringCloud相關(guān)組件實(shí)現(xiàn)服務(wù)調(diào)用和統(tǒng)一管理,這種細(xì)粒度的服務(wù)劃分和基于REST的通信方式能顯著提升系統(tǒng)的擴(kuò)展性。
4.1.1 "構(gòu)建微服務(wù)
為提升代碼的復(fù)用度和簡(jiǎn)化系統(tǒng)開(kāi)發(fā),微服務(wù)分為基礎(chǔ)微服務(wù)和業(yè)務(wù)微服務(wù)??蓪⑾到y(tǒng)多處用到的功能封裝成基礎(chǔ)服務(wù),其為其他業(yè)務(wù)微服務(wù)提供必要支撐。為保證Restful風(fēng)格的實(shí)現(xiàn),需在項(xiàng)目中創(chuàng)建公共子項(xiàng)目,以定義所有業(yè)務(wù)微服務(wù)之間的訪(fǎng)問(wèn)接口標(biāo)準(zhǔn)與傳輸類(lèi)別,方便微服務(wù)之間的互相調(diào)用與數(shù)據(jù)傳遞。業(yè)務(wù)微服務(wù)在整個(gè)志愿填報(bào)推薦系統(tǒng)中起著重要的作用,這些業(yè)務(wù)微服務(wù)組件相互協(xié)作,為上層提供業(yè)務(wù)接口。下面以高考資訊微服務(wù)為例來(lái)說(shuō)明微服務(wù)的設(shè)計(jì)步驟:①在父項(xiàng)目中建立高考資訊子模塊,且在父項(xiàng)目中增加框架依賴(lài)配置,為微服務(wù)配置獨(dú)立的數(shù)據(jù)庫(kù)、連接池等。②在資訊子模塊的pom.xml中加入公共依賴(lài)和框架依賴(lài),并在application.yml文件中配置微服務(wù)的訪(fǎng)問(wèn)端口。③定義業(yè)務(wù)層接口子類(lèi)InforService以實(shí)現(xiàn)具體的業(yè)務(wù)功能,同時(shí)定義REST控制類(lèi)。④定義資訊子模塊的啟動(dòng)類(lèi),完成該微服務(wù)的構(gòu)建。其他業(yè)務(wù)微服務(wù)構(gòu)建以此類(lèi)推。
4.1.2 "微服務(wù)統(tǒng)一管理設(shè)計(jì)
高考志愿填報(bào)推薦系統(tǒng)包含眾多微服務(wù),其目標(biāo)是實(shí)現(xiàn)各功能模塊的高度整合和統(tǒng)一管理。為提升整合效率,方便不同微服務(wù)之間的相互調(diào)用,本項(xiàng)目采用Eureka組件來(lái)構(gòu)建注冊(cè)中心并對(duì)微服務(wù)進(jìn)行統(tǒng)一管理。當(dāng)服務(wù)實(shí)例啟動(dòng)時(shí),會(huì)向Eureka Server注冊(cè)自己的信息,包括IP、端口號(hào)、服務(wù)名稱(chēng)等。服務(wù)調(diào)用方會(huì)自動(dòng)在注冊(cè)中心拉取服務(wù)列表,通過(guò)在接口類(lèi)上加@FeignClient注解即可實(shí)現(xiàn)Feign接口的定義,采用公共方法暴露的方式來(lái)形成接口,供其他服務(wù)使用。為了讓調(diào)用者獲取完整的服務(wù)信息,應(yīng)在每個(gè)微服務(wù)的application.yml中使用eureka.instance.metadata-map 配置相關(guān)注冊(cè)信息。同時(shí)還可以通過(guò)啟用發(fā)現(xiàn)功能對(duì)無(wú)用的微服務(wù)進(jìn)行清除,實(shí)現(xiàn)對(duì)有效微服務(wù)的動(dòng)態(tài)管理。
針對(duì)單體應(yīng)用,一般通過(guò)修改profile項(xiàng)切換環(huán)境配置參數(shù),即可更新服務(wù)配置。但對(duì)于高考志愿填報(bào)推薦系統(tǒng)這種多微服務(wù)應(yīng)用,則需要根據(jù)環(huán)境進(jìn)行不同的配置,使系統(tǒng)具有動(dòng)態(tài)調(diào)整能力。實(shí)現(xiàn)動(dòng)態(tài)更新需要使用SpringCloud config組件,通過(guò)修改客戶(hù)端微服務(wù)的bootsrap.yml,并將其在注冊(cè)中心注冊(cè),可為其他微服務(wù)提供統(tǒng)一的配置管理服務(wù)。
4.2 "負(fù)載均衡設(shè)計(jì)
為滿(mǎn)足系統(tǒng)高可用需求,應(yīng)從架構(gòu)層面出發(fā),在設(shè)計(jì)階段就要充分考慮負(fù)載均衡。當(dāng)前微服架構(gòu)的主流負(fù)載均衡算法有輪詢(xún)算法、最快響應(yīng)時(shí)間算法、最少連接算法等等。在服務(wù)調(diào)用中,負(fù)載均衡通過(guò)設(shè)定閾值并根據(jù)當(dāng)前負(fù)載情況來(lái)選擇集群中合適的實(shí)例來(lái)處理請(qǐng)求,當(dāng)負(fù)載達(dá)到峰值時(shí),采用放棄服務(wù)的方式來(lái)確保系統(tǒng)的可用性。在本項(xiàng)目中,對(duì)注冊(cè)中心、客戶(hù)端和服務(wù)端均采用負(fù)載均衡技術(shù)。注冊(cè)中心作為微服務(wù)架構(gòu)的核心樞紐,為保證其高可用,必須部署多個(gè)Eureka Server實(shí)例到多臺(tái)可靠物理主機(jī),通過(guò)修改Eureka項(xiàng)目的pom.xml,并讓多副本之間相互注冊(cè)來(lái)實(shí)現(xiàn)??蛻?hù)端負(fù)載均衡是微服務(wù)架構(gòu)的一個(gè)重要特性,在SpringCloud中,可以使用@LoadBalanced注解的RestTemplate或WebClient來(lái)實(shí)現(xiàn)客戶(hù)端負(fù)載均衡。在Eureka配合下,Ribbon可以從注冊(cè)中心獲取服務(wù)列表,并采用其內(nèi)置的負(fù)載策略分配一個(gè)服務(wù)提供者實(shí)例供客戶(hù)端調(diào)用。服務(wù)端負(fù)載均衡通常由Nginx來(lái)承擔(dān),在接收到客戶(hù)端請(qǐng)求后,根據(jù)預(yù)設(shè)的均衡算法將請(qǐng)求分發(fā)到后端多個(gè)服務(wù)實(shí)例上。本項(xiàng)目中,需在網(wǎng)關(guān)集群前加入Nginx反向代理,通過(guò)在Nginx中添加服務(wù)網(wǎng)關(guān)端口集群,來(lái)保證服務(wù)網(wǎng)關(guān)的穩(wěn)定運(yùn)行[9]。
4.3 "服務(wù)網(wǎng)關(guān)設(shè)計(jì)
服務(wù)網(wǎng)關(guān)是高考志愿填報(bào)推薦系統(tǒng)的入口,充當(dāng)連接客戶(hù)端和后臺(tái)服務(wù)的中介[10],起到將內(nèi)外系統(tǒng)隔離的作用。服務(wù)網(wǎng)關(guān)將所有對(duì)外提供的服務(wù)以API接口的方式進(jìn)行統(tǒng)一管理,降低了客戶(hù)端調(diào)用的難度,使得客戶(hù)端只用關(guān)心與網(wǎng)關(guān)的交互,而不用關(guān)心后端具體的微服務(wù)。服務(wù)網(wǎng)關(guān)最主要的功能是請(qǐng)求過(guò)濾和路由轉(zhuǎn)發(fā),請(qǐng)求過(guò)濾則是通過(guò)token、白名單、緩存的綜合使用來(lái)實(shí)現(xiàn)。路由轉(zhuǎn)發(fā)能確保數(shù)據(jù)按照正確的路徑進(jìn)行傳輸,通過(guò)在spring.cloud.gateway.routes屬性中配置路由規(guī)則來(lái)實(shí)現(xiàn)。本項(xiàng)目采用Zuul作為網(wǎng)關(guān)組件,具有良好的可擴(kuò)展性和靈活性,支持動(dòng)態(tài)路由和過(guò)濾器,能夠?qū)φ?qǐng)求進(jìn)行鑒權(quán)、認(rèn)證、監(jiān)控、限流和日志收集等操作。
4.4 "自動(dòng)化部署設(shè)計(jì)
高考志愿填報(bào)推薦系統(tǒng)的運(yùn)行往往伴隨著需求的變更,為了能夠快速適應(yīng)需求變化,本項(xiàng)目采用持續(xù)集成的方式實(shí)現(xiàn)軟件的自動(dòng)化構(gòu)建與部署。綜合使用版本控制工具,項(xiàng)目管理工具(如Jenkins)和容器技術(shù)(如Docker),可實(shí)現(xiàn)自動(dòng)化構(gòu)建、測(cè)試和部署。自動(dòng)化部署提高了軟件發(fā)布和開(kāi)發(fā)的效率,做到了發(fā)布新配置不必重新部署,降低了人力成本,弱化了系統(tǒng)維護(hù)對(duì)用戶(hù)使用的影響,為項(xiàng)目實(shí)施提供了有力的保障。
5 "結(jié)束語(yǔ)
本文通過(guò)對(duì)當(dāng)前高考志愿填報(bào)推薦系統(tǒng)的現(xiàn)狀進(jìn)行分析,指出傳統(tǒng)單體架構(gòu)業(yè)務(wù)擴(kuò)展性差、性能低、維護(hù)困難等問(wèn)題,結(jié)合微服務(wù)架構(gòu)的優(yōu)點(diǎn)和設(shè)計(jì)原則,提出了基于微服務(wù)架構(gòu)的新高考志愿填報(bào)推薦系統(tǒng)。為闡述業(yè)務(wù)微服務(wù)的設(shè)計(jì)過(guò)程和思想,以高考資訊微服務(wù)為例進(jìn)行了說(shuō)明,強(qiáng)調(diào)了微服務(wù)在設(shè)計(jì)時(shí)需要重點(diǎn)考慮的幾個(gè)方面,探索了多個(gè)微服務(wù)組件在高考志愿填報(bào)推薦系統(tǒng)中的綜合應(yīng)用。項(xiàng)目整體采用SpringBoot和SpringCloud相結(jié)合的原則,充分發(fā)揮各自的技術(shù)優(yōu)勢(shì),快速開(kāi)發(fā)基于微服務(wù)架構(gòu)的應(yīng)用。系統(tǒng)各微服務(wù)實(shí)例獨(dú)立開(kāi)發(fā),采用輕量級(jí)通信方式進(jìn)行相互協(xié)作,提高了系統(tǒng)的可擴(kuò)展性、可維護(hù)性和可重用性,自動(dòng)化部署又提升了軟件開(kāi)發(fā)和部署效率,做到了發(fā)布新配置不必重新部署,降低了系統(tǒng)維護(hù)對(duì)用戶(hù)使用的影響。集群設(shè)計(jì)通過(guò)運(yùn)行微服務(wù)實(shí)例的多個(gè)副本,降低了單模塊故障對(duì)整個(gè)系統(tǒng)的影響。
本系統(tǒng)以可擴(kuò)展、模塊化和靈活性為特點(diǎn),為高考志愿填報(bào)提供了一種有效的手段,提高了系統(tǒng)性能和自動(dòng)化程度,為考生和家長(zhǎng)的高考志愿填報(bào)提供了一種高可用、可擴(kuò)展的解決方案,同時(shí)也為類(lèi)似項(xiàng)目的開(kāi)發(fā)和運(yùn)維提供了參考。
參考文獻(xiàn):
[1] 孫彥幫,賀裕,王林,等.基于Android的高考志愿推薦App設(shè)計(jì)[J].計(jì)算機(jī)時(shí)代,2020(2):39-42.
[2] 洪濤,楊亦足,徐宏宇,等.大數(shù)據(jù)啟發(fā)的高考志愿輔助填報(bào)系統(tǒng)[J].信息系統(tǒng)工程,2021(5):13-14.
[3] 劉明奇,程江珂,陳曉蘭.高考志愿填報(bào)輔助決策系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代信息科技,2022,6(17):38-40,44.
[4] 李慧靜,姚海霞.基于數(shù)據(jù)驅(qū)動(dòng)的陽(yáng)光高考志愿決策軟件設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī),2023,29(22):89-93,103.
[5] 胡志超,王淑慧.新高考改革模式下的高校招生信息管理系統(tǒng)設(shè)計(jì)與分析[J].數(shù)字通信世界,2024(1):64-66,79.
[6] 鄭旭,范紅杰,柳軍飛.基于微服務(wù)的預(yù)分配額度限流設(shè)計(jì)研究[J].計(jì)算機(jī)科學(xué),2024,51(6):346-353.
[7] 王歡,趙成嶸,張?chǎng)?基于微服務(wù)和中臺(tái)架構(gòu)的智慧校園基礎(chǔ)平臺(tái)設(shè)計(jì)[J].電子技術(shù),2023,52(10):31-33.
[8] 勞雪松.基于微服務(wù)的校園CRP平臺(tái)核心架構(gòu)設(shè)計(jì)[J].宿州學(xué)院學(xué)報(bào),2023,38(9):12-15,21.
[9] 姚礪,張海路,徐夢(mèng)娜,等.基于微服務(wù)架構(gòu)的木材訂單系統(tǒng)設(shè)計(jì)與應(yīng)用[J].智能計(jì)算機(jī)與應(yīng)用,2023,13(3):93-98.
[10] 陳匯遠(yuǎn).基于微服務(wù)架構(gòu)的高鐵列控仿真測(cè)試系統(tǒng)的研究與設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2024,41(7):336-341.