文/李騫
近期,新華社“馬克思主義新聞觀手機在線學(xué)習(xí)競賽活動”圓滿落幕。在15天的線上答題期間里,70家社屬單位全員參與,全社共有12000余人下載活動APP參與答題,參與率接近100%,營造了良好的學(xué)習(xí)氛圍,有效地將新華社馬克思主義新聞觀教育向縱深推進。而在這次活動的背后,技術(shù)的支撐尤為關(guān)鍵。短短3個月的時間,我?guī)ьI(lǐng)三人的自主研發(fā)團隊,從無到有,從構(gòu)想到落地,完成了競賽答題平臺的完全自主研發(fā)。正是依托這一平臺,才能在短時間內(nèi)快速構(gòu)建起整個活動的框架。那么這個平臺究竟是通過什么樣的技術(shù)手段來支撐這種活動的呢?
既謂之“平臺”,我們的初衷當然不是一套一次性使用的后臺應(yīng)用,而是一個能夠提供給不同用戶開展多次活動反復(fù)使用的競賽答題平臺。
我們首先通過與活動主辦部門的多次研究討論,建立了本次馬克思主義新聞觀學(xué)習(xí)競賽活動的業(yè)務(wù)場景:活動分為數(shù)個章節(jié),各章題目隨機,以闖關(guān)形式為主,依次進行。參與者還可對排名靠前者發(fā)起挑戰(zhàn),挑戰(zhàn)者、被挑戰(zhàn)者均有機會獲得積分獎勵。另外,答完全部章節(jié)的參與者繼續(xù)自行答題,可反復(fù)獲得積分獎勵,積分不設(shè)上限。所有問答題目均可實時顯示正確答案供參與者學(xué)習(xí)。
隨后我們結(jié)合本次活動的業(yè)務(wù)場景、需求并結(jié)合平臺化的構(gòu)想,綜合梳理出了競賽答題平臺設(shè)計中的難點,具體如下。
答題競賽類活動包括闖關(guān)、挑戰(zhàn)、練習(xí)等多種模式,各模式需要能夠進行靈活的配置。
一次活動應(yīng)該既可以針對一個單位又可以針對多個單位,由于每個單位又有眾多的下屬部門、人員,這就造成活動涉及到的人員和單位(部門)數(shù)量相當之多。平臺如果沒有有效的參與單位(部門)、參與人員的管理功能,將會導(dǎo)致很高的管理成本,并影響活動組織效率。
存在不同程度的并發(fā)訪問情況。如較長周期的活動會在活動剛開始和即將結(jié)束兩個時間點產(chǎn)生較大的并發(fā)量等。需保證在有較大并發(fā)訪問的情況下,系統(tǒng)及系統(tǒng)產(chǎn)生的數(shù)據(jù)不會發(fā)生異常,并且維持高性能運轉(zhuǎn),及時地返回數(shù)據(jù)請求結(jié)果。
活動中及活動后的統(tǒng)計數(shù)據(jù)對于這類活動而言十分重要。對于參與者而言,直觀的活動統(tǒng)計是他們確認自身答題情況、排名的重要手段;對于組織者而言,多維度的活動統(tǒng)計往往可以作為判斷這次活動是否成功的關(guān)鍵參考。
平臺運行長久與否,很重要的一方面在于其是否能夠適應(yīng)不斷變化的業(yè)務(wù)需求,并進行快速迭代更新。
活動中涉及到的用戶數(shù)據(jù)及活動本身的數(shù)據(jù)都需要有較好的安全保障。對于任何數(shù)據(jù)非法獲取或篡改的操作及各種非法請求都必須嚴加防范。
在平臺的設(shè)計過程中,我?guī)ьI(lǐng)團隊成員們進行了充分的前期調(diào)研,完成了多次 的頭腦風(fēng)暴,從功能設(shè)計、技術(shù)選型、部署保障等多方面充分應(yīng)對設(shè)計難點。
平臺提供人員管理、組織機構(gòu)管理、題庫管理、活動管理、統(tǒng)計分析、用戶認證、API服務(wù)等一系列功能和服務(wù),以支撐不同的答題類活動。
通過活動、關(guān)卡等的交互式配置界面,支持多活動、多關(guān)卡,活動組織者可以輕松地對活動的參數(shù)進行調(diào)整。
通過提供分級管理、批量數(shù)據(jù)導(dǎo)入等方式,減輕組織者的單位、人員管理成本。提供按組織結(jié)構(gòu)、活動關(guān)卡等多維度的統(tǒng)計查詢功能,方便組織者進行實時的統(tǒng)計。
而API服務(wù)則給活動終端提供多種API接口,使得活動終端可以靈活實現(xiàn)各種用戶交互功能。
平臺所有功能通過角色、內(nèi)容權(quán)限進行劃分,只有具備相應(yīng)權(quán)限的用戶才可以進行具體功能操作。
平臺采用B/S架構(gòu)。
2.2.1 服務(wù)端
其中,服務(wù)器端基于Node.js、MySQL等技術(shù),采用Express框架進行開發(fā),并提供符合RESTful規(guī)范的API接口。
Node.js技術(shù)是由事件驅(qū)動、非阻塞式 I/O 的編程模型,可充分提高程序執(zhí)行效率,降低接口延遲。
表1 各場景下Node.js與JAVA的性能比較[1]
通過數(shù)據(jù)比較我們可以看到,除了計算密集型場景,在I/O密集、計算I/O平衡、長阻塞I/O請求等各場景下,每秒可處理的請求數(shù)Node.js比Java要多數(shù)倍,在并發(fā)情況下,Node.js性能還可以再有數(shù)倍的提升。
根據(jù)我們的分析,競賽答題平臺主要是進行用戶請求的快速處理,很少涉及到復(fù)雜的計算,其就是一個典型的I/O密集型應(yīng)用,為了獲得最好的平臺性能,我們選擇使用Node.js。
Express是一個簡潔、靈活的Node.js Web應(yīng)用開發(fā)框架,可以方便快捷地編寫Web請求處理邏輯并創(chuàng)建API服務(wù),并且由于其模塊化的特性,便于進行后續(xù)的功能擴展。
數(shù)據(jù)庫采用關(guān)系型數(shù)據(jù)庫MySQL,并根據(jù)業(yè)務(wù)需求設(shè)計請求性能及擴展性良好的數(shù)據(jù)庫表,保證數(shù)據(jù)結(jié)構(gòu)的可擴展性,以應(yīng)對可能的業(yè)務(wù)變化。由于關(guān)系型數(shù)據(jù)庫本身的關(guān)系特性,其適合完成復(fù)雜的統(tǒng)計查詢操作,可以根據(jù)業(yè)務(wù)需求進行多維度的數(shù)據(jù)查詢統(tǒng)計操作。
2.2.2 瀏覽器端
瀏覽器端基于HTML5、CSS3、JavaScript等技術(shù),采用Vue.js框架和Element UI庫進行開發(fā),實現(xiàn)簡潔、易用、模塊化的UI界面。Vue.js框架簡潔、輕量化,易于進行快速迭代開發(fā),其組件化的特性使得瀏覽器端的功能擴展性得到保障。Element UI庫提供多樣的UI組件,可以給用戶提供優(yōu)雅的交互體驗,并使得平臺管理界面的開發(fā)、組裝變得更加快速。
平臺使用CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))技術(shù)為平臺活動靜態(tài)內(nèi)容提供內(nèi)容加速服務(wù)。CDN能夠自動判別新華通網(wǎng)站動靜態(tài)內(nèi)容,通過智能負載均衡系統(tǒng)將用戶的訪問定位至最佳節(jié)點[2],能有效避開網(wǎng)絡(luò)中的擁塞,實現(xiàn)用戶最快訪問,改善服務(wù)效果,為用戶訪問活動內(nèi)容提供快捷、穩(wěn)定的支撐,同時降低應(yīng)用服務(wù)器的訪問負載。下面的兩幅圖為本次活動CDN命中示意圖(深色為命中),通過CDN的使用,保護了源站并有效避免了網(wǎng)絡(luò)擁塞,從而支撐了來自國內(nèi)全部34個省級行政區(qū)和海外100多個國家及地區(qū)的訪問。
圖1 CDN命中示意圖(國內(nèi))
圖2 CDN命中示意圖(海外)
平臺通過使用負載均衡技術(shù),平衡用戶的應(yīng)用服務(wù)器訪問請求。同時,支持系統(tǒng)在負載較大的情況下,根據(jù)系統(tǒng)瓶頸,橫向擴展相應(yīng)組件,如負載均衡服務(wù)器、應(yīng)用服務(wù)器、數(shù)據(jù)庫服務(wù)器等。
平臺通過定期的系統(tǒng)數(shù)據(jù)備份,確保平臺數(shù)據(jù)在意外丟失時能夠及時恢復(fù)。
平臺在安全方面采取了多種安全防護措施,確保系統(tǒng)、數(shù)據(jù)的安全性。例如:
(1)使用SSL安全證書,對網(wǎng)絡(luò)請求進行加密;(2)對關(guān)鍵信息進行加密處理,從數(shù)據(jù)源頭上進行安全保護;
(3)對服務(wù)器進行定期漏洞檢測、基線檢查、病毒查殺;
(4)使用Web應(yīng)用防火墻對系統(tǒng)業(yè)務(wù)流量進行惡意特征識別及防護,將正常、安全的流量回源到服務(wù)器。避免網(wǎng)站服務(wù)器被惡意入侵,保障業(yè)務(wù)的核心數(shù)據(jù)安全,解決因惡意攻擊導(dǎo)致的服務(wù)器性能異常問題;
(5)進行系統(tǒng)訪問控制,僅允許指定范圍的訪入請求;
對技術(shù)手段作弊行為進行識別,確?;顒庸叫?。
通過有針對性的分析、設(shè)計和在短短兩三個月的時間完成近8萬行代碼編寫迭代的高效率敏捷化開發(fā),實現(xiàn)了整個競賽答題平臺的構(gòu)建。正是基于這一平臺,“馬克思主義新聞觀手機在線學(xué)習(xí)競賽活動”取得了如前言所述的圓滿成功?;顒映浞终{(diào)動了職工的參與積極性,并受到了社領(lǐng)導(dǎo)及眾多職工的廣泛贊譽。活動組織者們也紛紛對平臺的穩(wěn)定運行和易用性表示了肯定。
正如前文提到的那樣,作為一個平臺,一次活動,一次成功只能算是其生命周期的一小步,這一平臺還有巨大的潛力可以挖掘,還有許多可以改進的地方,例如:
(1)根據(jù)業(yè)務(wù)需求升級、優(yōu)化系統(tǒng)功能;
(2)系統(tǒng)交互易用性的提升,提供多維度的查詢、篩選、排序等功能;
(3)提供更多的活動統(tǒng)計維度;
(4)更完善的作弊行為處理機制;
(5)進一步增強系統(tǒng)的安全性;
(6)面向更多單位提供平臺服務(wù)。
通過自主研發(fā)的方式,提高開發(fā)效率,縮短迭代周期,快速適應(yīng)變化,通過對業(yè)務(wù)的認真分析、抽象,然后進行有針對性的設(shè)計開發(fā),最終形成高效易用的平臺并良好地服務(wù)于業(yè)務(wù)。相信以此為起點,該平臺未來還會不斷進化,并將發(fā)揮更為重要的作用。