摘" "要:中文作文評(píng)閱是語(yǔ)文教學(xué)中不可或缺的部分,每次考試后教師都面臨集中的閱卷壓力,同時(shí),結(jié)果只以分?jǐn)?shù)給出而導(dǎo)致評(píng)閱粒度過(guò)粗。在解決人工評(píng)閱問(wèn)題而構(gòu)建智能評(píng)閱系統(tǒng)時(shí),面臨著多算法調(diào)用、系統(tǒng)響應(yīng)速度慢等新問(wèn)題?;谖⒎?wù)架構(gòu)研究搭建中文作文智能評(píng)閱系統(tǒng),根據(jù)功能劃分出多個(gè)微服務(wù)并獨(dú)自開(kāi)發(fā)和部署,保障系統(tǒng)的高可用性、高并發(fā)性和可擴(kuò)展性,提高響應(yīng)速度。經(jīng)實(shí)踐運(yùn)行應(yīng)用,基于微服務(wù)的系統(tǒng)具有良好的性能,取得較好的運(yùn)行效果。所實(shí)現(xiàn)的系統(tǒng)一方面有助于提升中文作文閱卷的粒度和客觀性,另一方面又能幫助學(xué)生找到寫作上的不足,提升學(xué)生寫作能力,提高語(yǔ)文教學(xué)的智能化水平。
關(guān)鍵詞:微服務(wù)架構(gòu);中文作文評(píng)閱;多算法調(diào)用;Spring" Cloud
中圖分類號(hào):G434" " " " "文獻(xiàn)標(biāo)志碼:A" " " " "文章編號(hào):1673-8454(2023)06-0111-09
一、引言
在語(yǔ)文教學(xué)活動(dòng)中,主觀寫作教學(xué)一直扮演著重要的角色,寫作能力是語(yǔ)文素養(yǎng)的綜合體現(xiàn)。[1]對(duì)寫作的評(píng)閱批改工作一直是寫作教學(xué)的重點(diǎn)。目前為止,人工閱卷仍然是該部分工作的主要方式,其弊端也十分明顯,教師工作量巨大,分?jǐn)?shù)主觀因素占比大,無(wú)法客觀地使用相同標(biāo)準(zhǔn)對(duì)作文給出評(píng)分并加以詳細(xì)評(píng)價(jià);[2]同時(shí),學(xué)生得到的評(píng)價(jià)反饋不全面,不足以幫助學(xué)生認(rèn)識(shí)到自身寫作欠缺的地方,無(wú)法輔助學(xué)生有針對(duì)性地提高寫作能力。作文評(píng)閱不僅是對(duì)作文的具體評(píng)價(jià),同時(shí)也體現(xiàn)學(xué)生的寫作水平。教師以此對(duì)學(xué)生的寫作進(jìn)行反饋,學(xué)生通過(guò)教師的評(píng)價(jià)了解寫作中存在的不足,并加以校正,其中所體現(xiàn)的指導(dǎo)價(jià)值顯而易見(jiàn)。但是,教師在人工閱卷時(shí),評(píng)閱內(nèi)容往往不夠詳細(xì),遺憾在所難免。
相比英文作文智能評(píng)閱,中文作文的評(píng)閱更加復(fù)雜且困難。中文的考試作文字?jǐn)?shù)更多,不僅要求語(yǔ)言流暢、沒(méi)有病句錯(cuò)句,還對(duì)寫作的文采有一定要求,如成語(yǔ)的使用、名人名言的引用、適當(dāng)?shù)男揶o手法等。并且,中文作文更是要求文章要有一定的深度。例如,議論文要體現(xiàn)作者對(duì)論點(diǎn)深刻的思考、論據(jù)充分,且全文要貼合主題、緊扣題意。這些都是中文作文評(píng)閱系統(tǒng)實(shí)現(xiàn)上的難點(diǎn)。[3]
在現(xiàn)代化信息技術(shù)的推動(dòng)下,結(jié)合計(jì)算機(jī)技術(shù)組織教學(xué)成為當(dāng)今教育發(fā)展的趨勢(shì),計(jì)算機(jī)技術(shù)與教育的融合,為中文作文評(píng)閱系統(tǒng)的實(shí)現(xiàn)提供新的思路。目前,多數(shù)應(yīng)用服務(wù)系統(tǒng)的結(jié)構(gòu)為單體架構(gòu),系統(tǒng)功能越來(lái)越多、集成服務(wù)逐漸增加,導(dǎo)致系統(tǒng)運(yùn)行速度變慢、體驗(yàn)變差。需要從軟件架構(gòu)的角度解決上述問(wèn)題。有學(xué)者指出,對(duì)于單體結(jié)構(gòu)的系統(tǒng),整個(gè)軟件必須以一個(gè)整體對(duì)待,因此存在耦合性過(guò)高、可靠性不足的問(wèn)題。[4]有學(xué)者指出,單體架構(gòu)由于整個(gè)應(yīng)用都部署為一個(gè)統(tǒng)一的應(yīng)用服務(wù),所有內(nèi)部組件需要遵循同樣的框架和技術(shù)體系,靈活性和擴(kuò)展性不足。[5]
本文提出一種基于微服務(wù)架構(gòu)的中文作文智能評(píng)閱系統(tǒng),以實(shí)現(xiàn)在考試場(chǎng)景下的作文評(píng)閱以及平時(shí)練習(xí)時(shí)的作文自動(dòng)評(píng)閱,通過(guò)對(duì)作文進(jìn)行多維度智能分析,提高作文評(píng)閱的粒度,評(píng)閱結(jié)果更加客觀公正。這可以節(jié)省教師閱卷的時(shí)間成本、將評(píng)閱結(jié)果及時(shí)反饋給學(xué)生,從而讓學(xué)生有針對(duì)性地提高寫作能力??紤]到系統(tǒng)功能模塊較多,且算法服務(wù)模塊仍然需要迭代升級(jí),以及系統(tǒng)后續(xù)的功能及規(guī)??赡茉絹?lái)越復(fù)雜,單體架構(gòu)難以應(yīng)付并發(fā)量高、系統(tǒng)更新維護(hù)頻繁等問(wèn)題,所以本系統(tǒng)采用最新的微服務(wù)架構(gòu)來(lái)實(shí)現(xiàn)相關(guān)功能,以有效規(guī)避上述問(wèn)題。[6]目前,本系統(tǒng)在中學(xué)的應(yīng)用得到教師較好的反饋,在一定程度上減輕教師工作量的同時(shí)能提供更為詳細(xì)的作文分析。
二、相關(guān)技術(shù)
微服務(wù)是一種軟件架構(gòu)模式[7],區(qū)別于傳統(tǒng)的單體式方案,它將一個(gè)整體的服務(wù)按照功能劃分成多個(gè)獨(dú)立的服務(wù),每個(gè)服務(wù)有獨(dú)自的運(yùn)行環(huán)境與進(jìn)程、有自己的生命周期[8]。每個(gè)服務(wù)可以單獨(dú)構(gòu)建和部署,保證服務(wù)之間不會(huì)互相影響,[9]實(shí)現(xiàn)應(yīng)用核心功能間的松散耦合,具有獨(dú)立開(kāi)發(fā)、維護(hù)、擴(kuò)展的優(yōu)勢(shì)。[10]服務(wù)之間一般通過(guò)輕量級(jí)的通信方式進(jìn)行相互通訊。[11]
Eureka是由Netflix開(kāi)發(fā)的服務(wù)發(fā)現(xiàn)框架,提供服務(wù)注冊(cè)與發(fā)現(xiàn)功能,Eureka包含兩個(gè)角色Eureka Server和Eureka Client。Server提供服務(wù)注冊(cè)服務(wù),微服務(wù)的節(jié)點(diǎn)在服務(wù)運(yùn)行后會(huì)先在Eureka Server中進(jìn)行服務(wù)注冊(cè),Eureka Server會(huì)在自己的服務(wù)注冊(cè)表中對(duì)可用的服務(wù)節(jié)點(diǎn)進(jìn)行保存。Eureka客戶端會(huì)從注冊(cè)中心獲取服務(wù)列表,獲取服務(wù)方的信息進(jìn)行服務(wù)消費(fèi)。
Zuul是一個(gè)網(wǎng)關(guān)服務(wù)器,控制客戶端對(duì)系統(tǒng)后端的訪問(wèn),是系統(tǒng)服務(wù)的訪問(wèn)入口。Zuul使用多個(gè)作用不同的過(guò)濾器,可以在“請(qǐng)求—響應(yīng)”生命周期的不同階段執(zhí)行,為整個(gè)微服務(wù)系統(tǒng)提供動(dòng)態(tài)路由、監(jiān)控、彈性負(fù)載和安全功能。在本系統(tǒng)中提供身份驗(yàn)證功能,保證滿足要求的身份才可以訪問(wèn)系統(tǒng)接口。
Hystrix是一個(gè)開(kāi)源的延遲和容錯(cuò)庫(kù),添加延遲容忍和容錯(cuò)邏輯,幫助分布式系統(tǒng)控制服務(wù)之間的交互。Hystrix可以避免系統(tǒng)的服務(wù)發(fā)生雪崩,因?yàn)樵诜植际椒?wù)中,服務(wù)的互相調(diào)用難以避免地會(huì)發(fā)生錯(cuò)誤,當(dāng)某個(gè)微服務(wù)因?yàn)槟承┊惓T驘o(wú)法被調(diào)用訪問(wèn)時(shí),Hystrix可以通過(guò)失敗后快速恢復(fù)、停止級(jí)聯(lián)失敗等手段提高系統(tǒng)的彈性。當(dāng)某個(gè)微服務(wù)節(jié)點(diǎn)出現(xiàn)不可預(yù)期的錯(cuò)誤時(shí),Hystrix會(huì)向服務(wù)的調(diào)用方返回一個(gè)先前設(shè)定的可處理的備選方案,避免長(zhǎng)期無(wú)效等待或者不可處理的異常。
Ribbon是一個(gè)開(kāi)源的客戶端負(fù)載均衡器,主要功能是為系統(tǒng)的后臺(tái)服務(wù)提供負(fù)載均衡。Ribbon組件支持對(duì)http請(qǐng)求的連接重試、轉(zhuǎn)發(fā)等操作。Ribbon會(huì)根據(jù)負(fù)載均衡算法對(duì)系統(tǒng)的服務(wù)進(jìn)行訪問(wèn),緩解系統(tǒng)的訪問(wèn)壓力,避免服務(wù)訪問(wèn)集中到某一個(gè)或者某幾個(gè)服務(wù)上,同時(shí)方便系統(tǒng)的橫向擴(kuò)展。其中負(fù)載均衡算法除了其自帶的算法,也可以通過(guò)自定義實(shí)現(xiàn)。
Config是配置文件的統(tǒng)一管理中心,用來(lái)為分布式系統(tǒng)中的基礎(chǔ)設(shè)施和微服務(wù)應(yīng)用提供集中化的外部配置支持。應(yīng)用服務(wù)中除了實(shí)現(xiàn)系統(tǒng)功能的代碼,還有很多外部配置,且外部配置的規(guī)模會(huì)隨著微服務(wù)的不斷增加而增加,Config可以很好地解決該問(wèn)題。
三、系統(tǒng)設(shè)計(jì)
本系統(tǒng)主要功能是輔助中文作文評(píng)閱工作,減少教師在作文評(píng)閱上的工作量,保證作文評(píng)閱的質(zhì)量和標(biāo)準(zhǔn),細(xì)化作文評(píng)閱結(jié)果的粒度。軟件架構(gòu)上使用Spring Cloud微服務(wù)框架技術(shù)對(duì)原有的單體結(jié)構(gòu)的系統(tǒng)進(jìn)行升級(jí),保證本系統(tǒng)高效可靠地運(yùn)行,提升并發(fā)訪問(wèn)能力以及算法服務(wù)的擴(kuò)展與維護(hù)。
(一)系統(tǒng)需求分析
通過(guò)對(duì)中文作文智能評(píng)閱系統(tǒng)的實(shí)際流程進(jìn)行需求分析,考慮到目前中文作文評(píng)閱系統(tǒng)存在的問(wèn)題,以及結(jié)合本系統(tǒng)的使用場(chǎng)景得出系統(tǒng)應(yīng)具備以下功能:
1.考試試卷批量評(píng)閱
輔助大型語(yǔ)文考試的寫作閱卷工作是本系統(tǒng)的主要應(yīng)用場(chǎng)景,保證提供可靠穩(wěn)定高效的系統(tǒng)運(yùn)行效果是本系統(tǒng)的首要需求。
2.平時(shí)學(xué)生作文自主測(cè)評(píng)和記錄查詢
除了輔助考試場(chǎng)景下的閱卷工作,也要實(shí)現(xiàn)對(duì)學(xué)生在平時(shí)練習(xí)時(shí)提交的作文進(jìn)行評(píng)閱,并將結(jié)果反饋給學(xué)生。學(xué)生可以通過(guò)個(gè)人賬號(hào)登錄系統(tǒng)進(jìn)行自主作文測(cè)評(píng),測(cè)評(píng)的結(jié)果會(huì)在系統(tǒng)中保存。
3.打印考試成績(jī)單和作文評(píng)閱詳情
本系統(tǒng)作為輔助考試場(chǎng)景下作文閱卷工作的工具,要實(shí)現(xiàn)本系統(tǒng)與其他主觀閱卷系統(tǒng)的對(duì)接,將作文成績(jī)整合到語(yǔ)文試卷的總分中,以及實(shí)現(xiàn)考試閱卷成績(jī)的導(dǎo)出功能。
4.學(xué)生作文成績(jī)分析
實(shí)現(xiàn)作文分析功能有助于學(xué)生了解自己寫作中的不足,以月份或者學(xué)期為單位,分析學(xué)生在該期間的所有作文評(píng)閱結(jié)果,總結(jié)學(xué)生寫作中的問(wèn)題,并將分析報(bào)告反饋給學(xué)生以及教師,更好地提升寫作成績(jī)。
5.數(shù)據(jù)資源的有效管理
保證系統(tǒng)數(shù)據(jù)安全可靠地存儲(chǔ),實(shí)現(xiàn)數(shù)據(jù)以及數(shù)據(jù)庫(kù)的日常管理及維護(hù),實(shí)現(xiàn)日志數(shù)據(jù)、算法分析數(shù)據(jù)、圖片數(shù)據(jù)、作文數(shù)據(jù)等的存儲(chǔ),以及查詢、修改和校驗(yàn)等功能。
6.算法服務(wù)的可擴(kuò)展性
保證本系統(tǒng)算法服務(wù)的穩(wěn)定以及可擴(kuò)展性。目前,根據(jù)高考的評(píng)分標(biāo)準(zhǔn)本系統(tǒng)已有算法服務(wù)包括文體符合算法模塊、行文流暢算法模塊、中心突出算法模塊、結(jié)構(gòu)嚴(yán)謹(jǐn)算法模塊等。目前,算法服務(wù)仍然需要在應(yīng)用中根據(jù)使用的反饋結(jié)果進(jìn)行迭代升級(jí),保證算法服務(wù)的易維護(hù)性,且根據(jù)考試規(guī)模對(duì)算法服務(wù)進(jìn)行增減,實(shí)現(xiàn)算法服務(wù)模塊的動(dòng)態(tài)擴(kuò)展以及算法模塊的整合服務(wù)。
(二)功能模塊設(shè)計(jì)
基于系統(tǒng)詳細(xì)的需求分析,確定本系統(tǒng)的主要功能模塊包括賬號(hào)管理模塊、成績(jī)分析模塊、作文檢索模塊、考試閱卷模塊、平時(shí)練習(xí)模塊。具體系統(tǒng)功能模塊如圖1所示。 系統(tǒng)各個(gè)功能詳細(xì)介紹如下:
1.用戶管理模塊
管理的對(duì)象包括兩種:一是管理該系統(tǒng)的賬號(hào),包括角色管理、學(xué)生賬號(hào)注冊(cè)、教師賬號(hào)創(chuàng)建、系統(tǒng)登錄與退出、權(quán)限管理、信息修改等功能。二是管理該系統(tǒng)的班級(jí),包括班級(jí)創(chuàng)建、班級(jí)增加與刪除等功能。
2.成績(jī)分析模塊
該部分功能包括班級(jí)作文成績(jī)平均分、某班級(jí)作文成績(jī)排序、某學(xué)生的成績(jī)分析,以及可視化成績(jī)分析展示。
3.作文檢索模塊
提供系統(tǒng)評(píng)閱過(guò)的作文檢索、優(yōu)秀作文檢索、素材檢索。檢索分為精確檢索以及關(guān)鍵字檢索。
4.考試閱卷模塊
提供管理考試的相關(guān)功能,包括考試項(xiàng)目創(chuàng)建、考試項(xiàng)目管理、試卷批量掃描上傳、試卷批量評(píng)閱、某次考試查詢、某次考試試卷查詢等。
5.平時(shí)練習(xí)模塊
該模塊主要功能是為學(xué)生開(kāi)放自助作文評(píng)閱功能,學(xué)生可以將自己平時(shí)練習(xí)的作文提交到閱卷系統(tǒng)獲取評(píng)分,提高學(xué)生寫作的積極性,還包括學(xué)生作文的管理、查詢功能。同時(shí),平時(shí)閱卷的結(jié)果也會(huì)作為成績(jī)分析模塊的數(shù)據(jù)輸入。
(三)系統(tǒng)整體架構(gòu)
智能評(píng)閱系統(tǒng)整體架構(gòu)分為四層,由下向上分別是基礎(chǔ)設(shè)施層、微服務(wù)層、應(yīng)用層、交互展示層?;A(chǔ)設(shè)施層主要提供數(shù)據(jù)存儲(chǔ)的基礎(chǔ)服務(wù),本系統(tǒng)采用目前最為流行的關(guān)系型數(shù)據(jù)庫(kù)MySQL來(lái)存儲(chǔ)系統(tǒng)數(shù)據(jù),同時(shí)使用Redis作為緩存提升查詢效率、使用ElasticSearch作為作文和素材的存儲(chǔ)數(shù)據(jù)庫(kù),以及提供檢索服務(wù)。服務(wù)層是根據(jù)系統(tǒng)功能劃分的微服務(wù),處理來(lái)自應(yīng)用層的請(qǐng)求,一些服務(wù)是單獨(dú)微服務(wù)就可以提供的,而另一些需要多個(gè)微服務(wù)共同響應(yīng)請(qǐng)求。應(yīng)用層是本系統(tǒng)的一些主要業(yè)務(wù)模塊,是使用者向服務(wù)層發(fā)送請(qǐng)求的接口。系統(tǒng)整體架構(gòu)如圖2所示。
(四)微服務(wù)架構(gòu)
在服務(wù)端,本系統(tǒng)采用微服務(wù)架構(gòu)進(jìn)行設(shè)計(jì)開(kāi)發(fā),在框架選型中選擇Spring Cloud框架進(jìn)行開(kāi)發(fā)。Spring Cloud是目前為止最為流行且先進(jìn)的微服務(wù)框架,社區(qū)活躍度很高,是一系列框架的有序集合,如服務(wù)發(fā)現(xiàn)注冊(cè)、分布式的配置、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等,[12]利用Spring Boot的便捷性簡(jiǎn)化分布式系統(tǒng)的開(kāi)發(fā)。[13]每個(gè)微服務(wù)的功能模塊相對(duì)獨(dú)立,實(shí)現(xiàn)代碼的解耦,不會(huì)存在功能上的相互依賴,同時(shí)依靠Spring Cloud技術(shù)組件,提升系統(tǒng)的開(kāi)發(fā)效率,以縮短開(kāi)發(fā)周期,并且保證系統(tǒng)的穩(wěn)定運(yùn)行。
本系統(tǒng)的多個(gè)微服務(wù)分別部署在多個(gè)服務(wù)器上,搭建微服務(wù)集群,通過(guò)Eureka對(duì)微服務(wù)進(jìn)行管理,每個(gè)微服務(wù)需要在Eureka注冊(cè)中心進(jìn)行服務(wù)注冊(cè),作為服務(wù)的提供端。同時(shí),微服務(wù)之間使用RestTemplate進(jìn)行交互,RestTemplate是Spring提供的一個(gè)同步的Rest API客戶端,它提供高度封裝的接口,可以讓用戶很方便地進(jìn)行Rest API調(diào)用。其提供很多種調(diào)用方法,主要分為Get和Post,可以指定調(diào)用接口的地址,指定返回的值的類型。使用Ribbon實(shí)現(xiàn)微服務(wù)調(diào)用的負(fù)載均衡,同時(shí)Ribbon也支持通過(guò)自定義負(fù)載均衡算法,可以在項(xiàng)目中自定義配置類,并通過(guò)在微服務(wù)啟動(dòng)類中指定具體的實(shí)現(xiàn)方式。外部通過(guò)網(wǎng)關(guān)接入微服務(wù),使用Zuul網(wǎng)關(guān)提供統(tǒng)一的入口作為最上層的服務(wù),承擔(dān)整個(gè)系統(tǒng)的權(quán)限驗(yàn)證、請(qǐng)求過(guò)濾、限流、接口轉(zhuǎn)發(fā)、監(jiān)控等工作。用戶通過(guò)Zuul網(wǎng)關(guān)向Eureka服務(wù)器發(fā)起服務(wù)訂閱請(qǐng)求,執(zhí)行請(qǐng)求路由到后端服務(wù),執(zhí)行協(xié)議轉(zhuǎn)換、接口的調(diào)用等功能。本系統(tǒng)使用Nginx進(jìn)行路由轉(zhuǎn)發(fā),攔截前端的請(qǐng)求并分流發(fā)送給后端服務(wù),減少后端的服務(wù)壓力。具體的系統(tǒng)微服務(wù)架構(gòu)如圖3所示。
(五)數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)設(shè)計(jì)是本系統(tǒng)的核心技術(shù)之一,本系統(tǒng)包含大量不同類型的數(shù)據(jù),為了保證多種數(shù)據(jù)的可靠存儲(chǔ),同時(shí)支持?jǐn)?shù)據(jù)多種方式的訪問(wèn)及快速響應(yīng),本系統(tǒng)使用MySQL數(shù)據(jù)庫(kù),其作文數(shù)據(jù)、閱卷結(jié)果、賬號(hào)數(shù)據(jù)、算法分析、日志等都保存在MySQL中。為了提高系統(tǒng)的并發(fā)處理讀寫的性能,本系統(tǒng)的MySQL數(shù)據(jù)采用主從結(jié)構(gòu)模型,其目的是將數(shù)據(jù)庫(kù)的讀寫操作加以分離,緩解單點(diǎn)數(shù)據(jù)庫(kù)的訪問(wèn)壓力,其中主節(jié)點(diǎn)負(fù)責(zé)寫入數(shù)據(jù),從節(jié)點(diǎn)負(fù)責(zé)對(duì)外提供數(shù)據(jù)訪問(wèn)的服務(wù)。主從節(jié)點(diǎn)的數(shù)據(jù)通過(guò)同步手段進(jìn)行數(shù)據(jù)的通信傳輸,從而保證兩個(gè)節(jié)點(diǎn)的數(shù)據(jù)一致性。[13]
為了提高系統(tǒng)的響應(yīng)速度,以及緩解MySQL數(shù)據(jù)庫(kù)的訪問(wèn)壓力,使用Redis作為緩存數(shù)據(jù)庫(kù)。[14]對(duì)外提供熱點(diǎn)數(shù)據(jù)的訪問(wèn),實(shí)現(xiàn)方式為當(dāng)使用人查詢某一篇作文后,不僅會(huì)將該作文返回給使用者,也會(huì)將該作文數(shù)據(jù)保存到Redis。對(duì)于系統(tǒng)的查詢操作會(huì)先訪問(wèn)Redis,如果緩存中有該條數(shù)據(jù)就直接返回給使用者,不再訪問(wèn)MySQL,直接將結(jié)果返回給使用人。如果緩存沒(méi)有命中才會(huì)訪問(wèn)MySQL并在返回?cái)?shù)據(jù)的同時(shí)將數(shù)據(jù)緩存到Redis中。
搜索也是本系統(tǒng)的一個(gè)重要功能,為了對(duì)外提供快速精準(zhǔn)的搜索服務(wù),本系統(tǒng)使用ElasticSearch搜索引擎。當(dāng)作文評(píng)閱完成后,會(huì)將MySQL的作文數(shù)據(jù)同步到ElasticSearch;同時(shí),使用針對(duì)中文分詞效果較好的IK分詞器進(jìn)行文章分詞,ElasticSearch會(huì)根據(jù)作文題目、作者、關(guān)鍵字對(duì)外提供搜索服務(wù)。本系統(tǒng)的數(shù)據(jù)庫(kù)存儲(chǔ)架構(gòu)如圖4所示。
四、系統(tǒng)實(shí)現(xiàn)
(一)Spring" Boot子系統(tǒng)搭建
本系統(tǒng)使用的是Spring框架提供的全套技術(shù)解決方案,微服務(wù)的服務(wù)開(kāi)發(fā)框架使用的是Spring Boot,因?yàn)槠湟胱詣?dòng)配置的概念,并且集成大量的常用的第三方庫(kù)配置,可以在短時(shí)間內(nèi)搭建一個(gè)應(yīng)用系統(tǒng)。搭建子系統(tǒng),需要先創(chuàng)建Maven項(xiàng)目,并在POM文件中聲明需要引入的依賴如Mybatis、Aspectj、Eureka等。然后在application.yml配置文件中添加該項(xiàng)目以及該項(xiàng)目使用的中間件配置信息,如數(shù)據(jù)源信息、日志信息等。因?yàn)槊總€(gè)微服務(wù)都是單獨(dú)開(kāi)發(fā)部署的,且每個(gè)微服務(wù)的結(jié)構(gòu)及風(fēng)格要保持一致,Spring Boot可以很好地實(shí)現(xiàn)快速單體服務(wù)的構(gòu)建。系統(tǒng)搭建完成后便可對(duì)具體的業(yè)務(wù)系統(tǒng)進(jìn)行開(kāi)發(fā)。
(二)服務(wù)注冊(cè)集群與負(fù)載均衡
在完成基于Spring Boot的業(yè)務(wù)開(kāi)發(fā)后,通過(guò)Eureka搭建服務(wù)發(fā)現(xiàn)集群,保證注冊(cè)中心的高可用。Eureka包含Eureka Server和Eureka Client。在Spring Boot項(xiàng)目中通過(guò)添加Eureka Server依賴,在每一臺(tái)Eureka服務(wù)器上注明Eureka Server 的端口、唯一的主機(jī)名、服務(wù)地址信息,并將本臺(tái)Eureka服務(wù)器注冊(cè)到其他Eureka服務(wù)器中,實(shí)現(xiàn)Eureka的相互注冊(cè);在啟動(dòng)類標(biāo)注@EnableEurekaServer注解聲明該服務(wù)是Eureka的服務(wù)端,在各個(gè)微服務(wù)啟動(dòng)后會(huì)在Eureka Server集群注冊(cè)中心進(jìn)行注冊(cè),并將服務(wù)結(jié)點(diǎn)注冊(cè)在服務(wù)注冊(cè)表中。服務(wù)節(jié)點(diǎn)可以在Eureka圖形化界面進(jìn)行查看。Eureka的服務(wù)提供端需要添加Eureka Client依賴,在配置文件中寫明服務(wù)端口、微服務(wù)名稱以及注冊(cè)中心集群的全部URL地址;在主啟動(dòng)類中添加@EnableEurekaClient注解標(biāo)明該服務(wù)是服務(wù)的Client端。微服務(wù)的消費(fèi)端配置方法與提供端相同,服務(wù)消費(fèi)端在調(diào)用接口時(shí),使用服務(wù)的別名去注冊(cè)中心獲取實(shí)際的RPC遠(yuǎn)程調(diào)用地址,并通過(guò)RestTemplate進(jìn)行服務(wù)遠(yuǎn)程調(diào)用。為了保證微服務(wù)的高可用,同一個(gè)微服務(wù)會(huì)部署多個(gè)服務(wù)實(shí)例,通過(guò)在RestTemplate實(shí)例化的地方添加@LoadBalanced注解開(kāi)啟負(fù)載均衡功能,該注解通過(guò)Ribbon可以很方便地解決負(fù)載均衡的問(wèn)題,默認(rèn)使用輪詢算法。Ribbon會(huì)攔截消費(fèi)者的請(qǐng)求,并根據(jù)URL中的服務(wù)名稱在服務(wù)注冊(cè)表中找到匹配的服務(wù),使用指定的負(fù)載均衡算法對(duì)微服務(wù)進(jìn)行調(diào)用。
(三)評(píng)閱算法服務(wù)
智能評(píng)閱系統(tǒng)的核心就是算法。算法輔助作文評(píng)閱主要包括手寫漢字識(shí)別算法和多個(gè)閱卷標(biāo)準(zhǔn)的算法兩個(gè)方面。因?yàn)樗惴ǚ?wù)的執(zhí)行需要消耗較高的系統(tǒng)資源,且要保證算法服務(wù)迭代升級(jí)的維護(hù)需求,微服務(wù)框架的易部署性和可擴(kuò)展性保證算法服務(wù)的彈性伸縮,很好地滿足算法服務(wù)的需求。
手寫漢字識(shí)別算法的任務(wù)是,對(duì)學(xué)生的答題內(nèi)容進(jìn)行文字識(shí)別并轉(zhuǎn)換成文本。當(dāng)有作文圖片上傳到系統(tǒng)請(qǐng)求閱卷服務(wù)時(shí),系統(tǒng)會(huì)先調(diào)用OCR算法來(lái)獲取作文圖片中的漢字信息。為了保證提供穩(wěn)定的手寫漢字識(shí)別功能,配置兩臺(tái)服務(wù)器專門提供OCR算法微服務(wù),系統(tǒng)在獲取漢字信息后保存數(shù)據(jù)到MySQL,再調(diào)用其他作文評(píng)閱算法對(duì)作文進(jìn)行算法評(píng)閱。
為了實(shí)現(xiàn)評(píng)閱的結(jié)果更加符合高考閱卷標(biāo)準(zhǔn),本系統(tǒng)在設(shè)計(jì)算法之初就參考高考的等級(jí)評(píng)分標(biāo)準(zhǔn),實(shí)現(xiàn)的評(píng)分算法包括符合題意算法、中心突出算法、內(nèi)容充實(shí)算法、符合文體算法、結(jié)構(gòu)嚴(yán)謹(jǐn)算法、內(nèi)容豐富算法、是否有文采算法。為了讓多個(gè)算法并發(fā)執(zhí)行且在較短的時(shí)間內(nèi)返回結(jié)果,每個(gè)算法微服務(wù)會(huì)部署多個(gè)服務(wù)實(shí)例,保證服務(wù)的并發(fā)能力。在所有算法執(zhí)行完畢后,將結(jié)果進(jìn)行處理整合生成算法評(píng)閱結(jié)果,最后將結(jié)果返回給調(diào)用方。目前,系統(tǒng)服務(wù)器集群中部署的多個(gè)算法微服務(wù)使用Ribbon實(shí)現(xiàn)算法服務(wù)的負(fù)載均衡,保證一次考試的閱卷工作能在較短的時(shí)間內(nèi)完成。
(四)異構(gòu)服務(wù)融合
系統(tǒng)基于Spring Cloud開(kāi)發(fā),后端系統(tǒng)服務(wù)接口使用Java語(yǔ)言開(kāi)發(fā),使用的是Spring Boot框架,評(píng)閱算法服務(wù)使用Python語(yǔ)言開(kāi)發(fā),使用的是Flask Web框架。因?yàn)閮烧叩姆?wù)使用不同的語(yǔ)言對(duì)框架進(jìn)行開(kāi)發(fā),所以對(duì)于算法服務(wù)而言無(wú)法直接接入Spring Cloud,那么就無(wú)法使用Java實(shí)現(xiàn)的權(quán)限驗(yàn)證攔截器,以及Spring Cloud提供的服務(wù)發(fā)現(xiàn)、負(fù)載均衡等一系列微服務(wù)治理功能。為了保證整個(gè)系統(tǒng)的一致性、降低系統(tǒng)的復(fù)雜性,需要將算法服務(wù)融入到Spring Cloud中,解決異構(gòu)服務(wù)融合的問(wèn)題。對(duì)于算法服務(wù)需要引入py_eureka_client庫(kù),該庫(kù)是用Python編寫的Eureka客戶端,用于將Python服務(wù)融入到Spring Cloud中。通過(guò)eureka_client.init()函數(shù)進(jìn)行服務(wù)的注冊(cè)與發(fā)現(xiàn),需要傳入Eureka服務(wù)器的地址和端口,當(dāng)前組件的主機(jī)名稱、端口,以及調(diào)用其他服務(wù)的可用策略。通過(guò)以上操作,就可以將基于Python的算法服務(wù)融入到Spring Cloud體系中實(shí)現(xiàn)服務(wù)的統(tǒng)一管理。
(五)應(yīng)用平臺(tái)實(shí)現(xiàn)
以考試場(chǎng)景下的閱卷對(duì)本系統(tǒng)的實(shí)現(xiàn)進(jìn)行詳細(xì)說(shuō)明。教師可以先在創(chuàng)建考試頁(yè)面中新建考試,填寫本次考試的相關(guān)信息,如考試名稱、考試類型、年級(jí)、作文材料、參考人數(shù)等內(nèi)容。然后點(diǎn)擊創(chuàng)建考試,創(chuàng)建本次考試。創(chuàng)建考試頁(yè)面如圖5所示。接著將掃描儀掃描的作文圖片上傳到本系統(tǒng),作文圖片上傳完畢后系統(tǒng)便會(huì)開(kāi)始自動(dòng)閱卷,閱卷完畢后展示結(jié)果??荚嚨淖魑脑u(píng)閱結(jié)果如圖6所示。點(diǎn)擊具體的作文可以看到該篇作文的詳細(xì)評(píng)分結(jié)果,如圖7所示。
(六)系統(tǒng)性能測(cè)試
本系統(tǒng)的主要開(kāi)發(fā)目的之一就是提高系統(tǒng)接口的響應(yīng)速度、提高系統(tǒng)的并發(fā)能力。本次測(cè)試使用JMeter對(duì)作文評(píng)閱結(jié)果的查詢接口進(jìn)行并發(fā)負(fù)載測(cè)試,對(duì)比系統(tǒng)重構(gòu)前后在相同并發(fā)量下的接口平均響應(yīng)時(shí)間,以此來(lái)判斷微服務(wù)架構(gòu)相對(duì)于單體架構(gòu)的性能提升。具體測(cè)試結(jié)果如圖8所示。
根據(jù)圖8中的結(jié)果可知,系統(tǒng)在重構(gòu)之后并發(fā)量在800以下時(shí)整體響應(yīng)時(shí)間下降50%,在并發(fā)量達(dá)到1000時(shí)響應(yīng)時(shí)間降低61.1%。達(dá)到預(yù)期效果,有效降低在并發(fā)場(chǎng)景下的響應(yīng)時(shí)間。
五、結(jié)語(yǔ)
本文基于微服務(wù)架構(gòu)實(shí)現(xiàn)中文作文智能評(píng)閱系統(tǒng),解決之前單體服務(wù)過(guò)于臃腫的問(wèn)題,提高系統(tǒng)的響應(yīng)速度,每個(gè)微服務(wù)都可以單獨(dú)部署,以滿足本系統(tǒng)在考試場(chǎng)景下高并發(fā)、高可用、可擴(kuò)展的需求,同時(shí)后續(xù)的開(kāi)發(fā)與維護(hù)也相對(duì)容易。[15]
研究和實(shí)踐顯示,該系統(tǒng)能有效提高中文作文閱卷工作的客觀性和評(píng)閱粒度。系統(tǒng)可以根據(jù)評(píng)分標(biāo)準(zhǔn)做到評(píng)分始終如一、不受其他因素干擾;系統(tǒng)的應(yīng)用既提高評(píng)閱的效率,又提升作文評(píng)閱的更細(xì)粒度。即在更短的時(shí)間內(nèi),不僅僅是分?jǐn)?shù),還可以從文章的結(jié)構(gòu)、語(yǔ)法、修辭等多個(gè)層面,將結(jié)果反饋給學(xué)生,促進(jìn)學(xué)生作文寫作能力的提升。
參考文獻(xiàn):
[1]鄭桂華.作文的批閱與講評(píng)[J].中學(xué)語(yǔ)文教學(xué),2011(3):25-27.
[2]張文霞,武永.以評(píng)促學(xué):構(gòu)建基于寫作任務(wù)的作文自動(dòng)評(píng)閱系統(tǒng)[J].現(xiàn)代教育技術(shù),2017,27(3):99-104.
[3]麥范金,岳曉光,趙子強(qiáng),等.基于自然語(yǔ)言處理的智能評(píng)分系統(tǒng)[J].桂林理工大學(xué)學(xué)報(bào),2010,30(3):426-430.
[4]辛園園,鈕俊,謝志軍,等.微服務(wù)體系結(jié)構(gòu)實(shí)現(xiàn)框架綜述[J].計(jì)算機(jī)工程與應(yīng)用,2018,54(19):10-17.
[5]吳化堯,鄧文俊.面向微服務(wù)軟件開(kāi)發(fā)方法研究進(jìn)展[J].計(jì)算機(jī)研究與發(fā)展,2020,57(3):525-541.
[6]董瑞志,李必信,王璐璐,等.軟件生態(tài)系統(tǒng)研究綜述[J].計(jì)算機(jī)學(xué)報(bào),2020,43(2):250-271.
[7]史磊,劉釗,徐輝,等.基于微服務(wù)架構(gòu)的直流輸電換流閥監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].電氣自動(dòng)化,2021,43(5):92-94.
[8]余航,許博.面向微服務(wù)架構(gòu)的軟件系統(tǒng)韌性增強(qiáng)技術(shù)研究[J].信息技術(shù)與網(wǎng)絡(luò)安全,2021,40(10):8-15.
[9]周永圣,侯峰裕,孫雯,等.基于Spring Cloud微服務(wù)架構(gòu)的進(jìn)銷存管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),2018, 31(11):129-130,133.
[10]VAYGHAN LA, SAIED M A, TOEROE M, et al. Microservice based architecture:towards high-avail-ability for stateful applications with kubernetes[C]. IEEE International Conference on Software Quality,Reliability and Security(QRS), 2019.
[11]HEORHIADI V, RAJAGOPALAN S, JAMJOOM H, et al. Gremlin: systematic resilience testing of microservices[C]. International Conference on Distributed ComputingSystems, Nara, Japan. IEEE, 2016:57-66.
[12]洪華軍,吳建波,冷文浩.一種基于微服務(wù)架構(gòu)的業(yè)務(wù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2018,46(1):149-154.
[13]鄭錦男,李舒涵,許宏科.微服務(wù)框架下的交通信息化架構(gòu)[J].信息技術(shù),2019,43(1):157-162.
[14]吳滄舟,蘭逸正,張輝.基于MySQL數(shù)據(jù)庫(kù)的優(yōu)化[J].電子科技,2013,26(9):182-184.
[15]李翀,劉利娜,劉學(xué)敏,等.一種高效的Redis Cluster的分布式緩存系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2018,27(10):91-98.
[16]馮志勇,徐硯偉,薛霄,等.微服務(wù)技術(shù)發(fā)展的現(xiàn)狀與展望[J].計(jì)算機(jī)研究與發(fā)展,2020,57(5):1103-1122.
Research and Application of Chinese Composition Intelligent Evaluation System Based
on Microservices Architecture
Yuchen ZHAO1,2, Lijun FU1,3, Bolin QI1,2, Xu LI3, Weimin GUO4
(1.Shenyang Insitute of Computing Technology, Chinese Academy of Sciences, Shenyang 110168, Liaoning;
2.University of Chinese Academy of Sciences, Beijing 100049;
3.Artificial Intelligence and Cognitive Intelligence Laboratory, Shan Dong University, Jinan 250100, Shandong;
4.Beijing Zhongguancun High School, Beijing 100081)
Abstract: Chinese composition evaluation is an indispensable part of Chinese teaching. After each test, teachers are faced with the pressure of concentrated marking. The fact that results are only shown in scores leads to too coarse-grained evaluation. However, in building an intelligent evaluation system to solve the problem of manual evaluation, new problems such as multiple algorithm calls and slow system response will emerge. This paper builds and deploys a Chinese composition intelligent evaluation system based on microservices, and divides multiple microservices according to their functions. The system, with high availability, concurrency and scalability, accelerates the response speed. In actual application, the system has expected performance and achieves desired application effect. The research can help to improve the granularity and objectivity of Chinese composition evaluation, and also can help students find the deficiencies in writing and improve students’ writing ability.
Keywords: Microservices architecture; Chinese composition evaluation; Multiple algorithm calls; Spring Cloud
編輯:王天鵬" "校對(duì):王曉明
DOI: 10.3969/j.issn.1673-8454.2023.06.014
作者簡(jiǎn)介:趙鈺辰,中國(guó)科學(xué)院沈陽(yáng)計(jì)算技術(shù)研究所碩士研究生(遼寧沈陽(yáng) 110168);付立軍,通訊作者,山東大學(xué)大數(shù)據(jù)技術(shù)與認(rèn)知智能實(shí)驗(yàn)室主任、中國(guó)科學(xué)院沈陽(yáng)計(jì)算技術(shù)研究所研究員(山東濟(jì)南 250100);祁柏林,中國(guó)科學(xué)院沈陽(yáng)計(jì)算技術(shù)研究所研究員(遼寧沈陽(yáng) 110168);李旭,山東大學(xué)大數(shù)據(jù)技術(shù)與認(rèn)知智能實(shí)驗(yàn)室工程師(山東濟(jì)南 250100);郭偉民,北京市中關(guān)村中學(xué)教師(北京 100081)