杜煒凝,耿 智,孫海翔,劉 昶,馬駿毅
(國網(wǎng)江蘇省電力有限公司鎮(zhèn)江供電分公司,江蘇 鎮(zhèn)江 212211)
隨著電力企業(yè)各種業(yè)務(wù)系統(tǒng)種類和數(shù)據(jù)量的日益增長,當(dāng)用戶需要對(duì)各個(gè)業(yè)務(wù)內(nèi)容進(jìn)行搜索時(shí),首先需要了解查找哪個(gè)特定的業(yè)務(wù)模塊,如操作票、調(diào)度日志、檢修單等,再打開對(duì)應(yīng)模塊的搜索功能。缺乏統(tǒng)一的檢索入口,也缺少對(duì)所有模塊進(jìn)行檢索后的整合展示,有價(jià)值的數(shù)據(jù)無法以整合、直觀的方式被用戶獲得,因此各種業(yè)務(wù)數(shù)據(jù)的靈活獲取、拼接、展示和檢索成為亟須解決的問題。
本文提出的新型企業(yè)內(nèi)網(wǎng)業(yè)務(wù)信息聚合與檢索系統(tǒng)(以下簡稱 “LANDBCS” )能夠通過配置連接多種數(shù)據(jù)庫,定時(shí)爬取數(shù)據(jù)庫內(nèi)容,并建立緩存和全文索引,為用戶提供統(tǒng)一的搜索入口,能夠充分滿足新一代企業(yè)用戶對(duì)業(yè)務(wù)信息聚合、檢索的需求。
Spring Boot是建立在Spring的基礎(chǔ)上的一套全新的開源框架,可以簡化Spring應(yīng)用的搭建和開發(fā)過程。Spring Boot去除了大量的XML配置文件,簡化了復(fù)雜的依賴管理,使用更簡單,功能更豐富,性能更穩(wěn)定健壯。Spring Boot集成了大量常用的第三方庫配置,可以讓開發(fā)者專注于解決業(yè)務(wù)邏輯[1-2]。本系統(tǒng)以Spring Boot作為后端技術(shù)框架,構(gòu)建爬取連接配置的接口。
XXL-JOB是一個(gè)開源分布式異步任務(wù)調(diào)度平臺(tái),主要組成部分包含調(diào)度中心和執(zhí)行器。調(diào)度中心提供一個(gè)后臺(tái)管理界面,用于創(chuàng)建和修改調(diào)度任務(wù),指定不同的執(zhí)行器來根據(jù)場(chǎng)景執(zhí)行調(diào)度任務(wù)。執(zhí)行器提供任務(wù)執(zhí)行的環(huán)境,可以根據(jù)不同公司的不同需求,部署不同環(huán)境的執(zhí)行器。執(zhí)行器在集群中部署,可以更加方便的做到服務(wù)擴(kuò)容。本系統(tǒng)基于XXL-JOB完成定期對(duì)各業(yè)務(wù)數(shù)據(jù)庫進(jìn)行爬取的調(diào)度任務(wù),也為用戶提供手動(dòng)開啟爬取的功能。
利用Spring Boot和XXL-JOB,使用BEAN模式實(shí)現(xiàn)數(shù)據(jù)庫爬取,同時(shí)XXL-JOB調(diào)度中心提供RESTful API供LANDBCS調(diào)用(操作任務(wù)于日志等)。執(zhí)行器在爬取業(yè)務(wù)數(shù)據(jù)庫過程中,將 “待爬取表” 中的每一行數(shù)據(jù),根據(jù)搜索處理成新數(shù)據(jù)插入LANDBCS數(shù)據(jù)庫的 “緩存表” 中。在 “緩存表” 中針對(duì)固定字段建立全文索引,根據(jù)關(guān)鍵字會(huì)將對(duì)應(yīng)字段內(nèi)容給到前端展示。定時(shí)任務(wù)相關(guān)應(yīng)用,通過編寫Service調(diào)用XXL-JOBADMIN接口,建立好任務(wù)的映射關(guān)系??蓪?shí)現(xiàn)通過關(guān)鍵詞快速定位目的業(yè)務(wù)數(shù)據(jù)庫(從不同類型的業(yè)務(wù)數(shù)據(jù)庫中進(jìn)行搜索定位)。Spring Boot+XXL-JOB較傳統(tǒng)的數(shù)據(jù)庫檢索查詢,無論是數(shù)據(jù)的精準(zhǔn)性還是用戶體驗(yàn)均得到大大改善[3]。它充分利用其分布式任務(wù)調(diào)度優(yōu)勢(shì)加上JDBC的優(yōu)化連接技術(shù),實(shí)現(xiàn)了業(yè)務(wù)數(shù)據(jù)于前端發(fā)分離,提高了搜索的效率和有效性,改善了用戶體驗(yàn)。
對(duì)爬取的數(shù)據(jù)源進(jìn)行必要的配置是數(shù)據(jù)庫搜索系統(tǒng)的基礎(chǔ)。LANDBCS為用戶提供了安全快捷的配置方法,只需配置主機(jī)名(IP)、端口號(hào)、用戶名、口令、模塊名稱、模塊URL、數(shù)據(jù)庫類型、爬取字段標(biāo)題、爬取字段內(nèi)容、關(guān)聯(lián)角色(可選),即可鏈接到數(shù)據(jù)源(見圖1)。
圖1 系統(tǒng)框架體系
使用分布式的任務(wù)調(diào)度工具XXL-JOB提供的方法來定時(shí)或手動(dòng)執(zhí)行爬取任務(wù),建立緩存和全文索引庫(預(yù)分析庫)。提供一個(gè)簡潔且功能強(qiáng)大的數(shù)據(jù)庫檢索入口,用戶只需要輸入業(yè)務(wù)數(shù)據(jù)的關(guān)鍵字,即可在1 s內(nèi)搜索出相關(guān)的結(jié)果,直觀、高效的將有價(jià)值的數(shù)據(jù)整合展示給用戶,幫助企業(yè)用戶快速完成對(duì)業(yè)務(wù)數(shù)據(jù)庫的信息讀?。?]。通過在配置信息中填寫的模塊名稱和URL,可以從搜索結(jié)果點(diǎn)擊模塊名稱訪問到相應(yīng)的第三方業(yè)務(wù)模塊。
數(shù)據(jù)爬取與用戶檢索是相反的過程,由系統(tǒng)管理員配置好要爬取的數(shù)據(jù)源及要拼接的字段,調(diào)度中心定時(shí)執(zhí)行調(diào)度任務(wù),對(duì)爬取結(jié)果建立預(yù)分析庫,最終供用戶檢索。在配置時(shí)添加了模塊URL,則在檢索結(jié)果中,點(diǎn)擊檢索結(jié)果中的配置名稱,系統(tǒng)可以攜帶用戶信息跳轉(zhuǎn)到相應(yīng)的應(yīng)用模塊。用戶點(diǎn)擊第三方鏈接進(jìn)入該應(yīng)用模塊后的操作權(quán)限(可閱讀、可編輯權(quán)等),則由該第三方系統(tǒng)定義。
LANDBCS系統(tǒng)提供對(duì)業(yè)務(wù)數(shù)據(jù)庫的爬取和搜索,并可以對(duì)搜索結(jié)果進(jìn)行鉆取(即可以從搜索結(jié)果訪問到相應(yīng)的業(yè)務(wù)模塊)[5]。其主要分為3個(gè)模塊,分別為用戶的個(gè)人中心模塊,提供用戶搜索入口的數(shù)據(jù)庫檢索模塊,以及包含文件檢索配置、用戶管理、角色管理、日志管理及關(guān)于系統(tǒng)信息的管理中心模塊。模塊劃分如圖2所示。
圖2 LANDBCS模塊劃分
數(shù)據(jù)庫檢索模塊為用戶提供進(jìn)行數(shù)據(jù)庫數(shù)據(jù)檢索的操作入口,配置完數(shù)據(jù)源且已經(jīng)建立了預(yù)分析庫后,用戶只需在搜索框內(nèi)輸入要搜索的關(guān)鍵字即可搜索到想要查找的業(yè)務(wù)數(shù)據(jù)記錄。
管理中心-任務(wù)調(diào)度中心,數(shù)據(jù)庫爬取任務(wù)調(diào)度中心為用戶提供對(duì)爬取數(shù)據(jù)庫任務(wù)的周期調(diào)度功能,用戶可配置爬取的周期或者手動(dòng)啟動(dòng)爬取任務(wù)。
管理中心-數(shù)據(jù)庫檢索配置,為用戶提供配置搜索數(shù)據(jù)庫的數(shù)據(jù)源功能,配置IP、端口號(hào)、用戶名、口令、模塊名稱、模塊URL、數(shù)據(jù)庫類型(包含DM7、DM8、MySQL 5.7、MySQL 8),設(shè)置組成業(yè)務(wù)數(shù)據(jù)卡片的標(biāo)題及內(nèi)容,關(guān)聯(lián)角色(可選,關(guān)聯(lián)后,數(shù)據(jù)庫檢索的結(jié)果將按角色順序排序),最終完成配置。
管理中心-用戶管理,提供對(duì)系統(tǒng)內(nèi)用戶的管理功能,包含對(duì)用戶賬號(hào)的增刪、用戶信息的修改,用戶身份類型修改、用戶角色的修改等功能。
管理中心-角色管理,提供對(duì)系統(tǒng)內(nèi)角色的管理功能,包含對(duì)角色進(jìn)行增刪、角色信息的修改、綁定角色到用戶等功能。
管理中心-日志管理,提供對(duì)系統(tǒng)內(nèi)用戶的登錄日志及管理日志的記錄審計(jì)功能,可刪除、查詢?nèi)罩尽?/p>
個(gè)人中心模塊,提供用戶對(duì)個(gè)人信息進(jìn)行查看和修改的功能,主要信息包括頭像、工號(hào)、姓名、賬號(hào)、性別、狀態(tài)(賬號(hào)啟用和禁用)、手機(jī)號(hào)碼、郵箱、角色。
數(shù)據(jù)庫檢索配置的目的是保障數(shù)據(jù)連接通道穩(wěn)定性,建立起檢索的數(shù)據(jù)基礎(chǔ),檢索配置模塊可自定義數(shù)據(jù)庫爬取配置信息。其中的關(guān)鍵字段有以下幾點(diǎn)。(1)IP:測(cè)試機(jī)局域網(wǎng)中對(duì)應(yīng)的IP地址。(2)端口:數(shù)據(jù)庫對(duì)應(yīng)的端口號(hào)。(3)用戶名:進(jìn)入數(shù)據(jù)庫時(shí)需要輸入的用戶名。(4)口令:進(jìn)入數(shù)據(jù)庫時(shí)需要輸入的密碼。(5)數(shù)據(jù)庫類型:DM7,DM8,MySQL 5.7,MySQL 8。(6)標(biāo)題、內(nèi)容:根據(jù)數(shù)據(jù)庫中相應(yīng)數(shù)據(jù)表的字段來編寫有效的SQL語句。爬取數(shù)據(jù)庫支持達(dá)夢(mèng)數(shù)據(jù)庫,適應(yīng)電力企業(yè)的行業(yè)需求。
對(duì)于標(biāo)題和內(nèi)容,支持使用SQL語句,可以很好地滿足用戶多樣化的爬取需求,用戶可以自由配置所需要的字段信息,例如使用 “SELECT ID,NAME FROM TESTTABLE.CZP” 就可以獲取到操作票的ID和名稱并組成標(biāo)題,使用 “SELECT ID,DINDEX,CZMD FROM TESTTABLE.CZP” 獲取到操作票的序號(hào)、目的等信息組成內(nèi)容,標(biāo)題和內(nèi)容擬合組成數(shù)據(jù)庫檢索的基本條目,系統(tǒng)支持模糊檢索。
爬取預(yù)分析過程舉例如下:(1)操作票表。將【操作單位(czdw)+ “-” +操作目的(czmd)+ “-” +檢修單編號(hào)(jxd)】按照配置進(jìn)行采集拼接,存入DM庫。(2)操作令表。將【操作票ID(CZP_ID)】,【序號(hào)(DINDEX)+ “-” +操作單位(czdw)+ “:” +操作內(nèi)容(cznr)】分別作為兩個(gè)字段存入DM庫。
企業(yè)生產(chǎn)過程中,業(yè)務(wù)數(shù)據(jù)庫的數(shù)據(jù)也在不斷積累更新,所以需要不斷地爬取數(shù)據(jù)庫數(shù)據(jù),為用戶的數(shù)據(jù)檢索提供時(shí)效性保障。定時(shí)任務(wù)默認(rèn)為啟動(dòng)狀態(tài),系統(tǒng)管理人員可隨時(shí)關(guān)閉爬取任務(wù),定時(shí)爬取任務(wù)支持使用CRON表達(dá)式,也支持用戶手動(dòng)即時(shí)地啟動(dòng)一次爬取任務(wù)。并且對(duì)于調(diào)度爬取的任務(wù),系統(tǒng)提供了爬取日志的查看功能,滿足審計(jì)需求。
數(shù)據(jù)庫檢索模塊提供了對(duì)業(yè)務(wù)數(shù)據(jù)庫按單個(gè)、多個(gè)關(guān)鍵字檢索進(jìn)行檢索的功能,并提供對(duì)搜索結(jié)果進(jìn)行鉆取的功能。用戶在搜索欄內(nèi)輸入業(yè)務(wù)關(guān)鍵字段,即可快速查出相關(guān)業(yè)務(wù)數(shù)據(jù)聚合后的信息。數(shù)據(jù)庫爬取的目的是建立 “預(yù)分析庫(DM庫)” ,加快后續(xù)搜索(檢索)速度。
數(shù)據(jù)庫中分散的數(shù)據(jù)被聚合后,檢索時(shí)通過卡片的形式在前端展現(xiàn)。檢索時(shí),被檢索內(nèi)容命中的關(guān)鍵字會(huì)高亮顯示。
在查詢到業(yè)務(wù)信息后,點(diǎn)擊下方的超鏈接,即可跳轉(zhuǎn)到配置好的第三方業(yè)務(wù)模塊中。搜索出的結(jié)果會(huì)按照當(dāng)前用戶所屬角色的順序進(jìn)行排列,例如用戶擁有A,B兩個(gè)角色,結(jié)果將優(yōu)先展示和角色A綁定的內(nèi)容,然后是展示和角色B綁定的內(nèi)容。
3.3.1 數(shù)據(jù)庫檢索邏輯實(shí)現(xiàn),根據(jù)關(guān)鍵字檢索
3.3.2 數(shù)據(jù)庫檢索邏輯實(shí)現(xiàn),根據(jù)角色排序
系統(tǒng)提供了為用戶添加角色的功能,一個(gè)用戶可以擁有多個(gè)角色,為了優(yōu)化用戶的檢索體驗(yàn),提供數(shù)據(jù)庫檢索按角色排序的功能,在數(shù)據(jù)庫檢索配置時(shí),可以配置角色信息,用戶檢索時(shí),系統(tǒng)優(yōu)先將和用戶角色一致的結(jié)果排在前面,例如用戶的角色是操作員,則優(yōu)先展示調(diào)度員相關(guān)的檢索結(jié)果,從而達(dá)到更快地幫助用戶獲取需要的信息的目的。同時(shí),在檢索配置時(shí),角色信息非必填,角色為空時(shí),檢索結(jié)果則不會(huì)按角色排序,也滿足用戶不想按角色排序的需求。
實(shí)踐證明,Spring Boot+XXL-JOB提供的全新解決方案可以大幅度提高快速訪問業(yè)務(wù)數(shù)據(jù)庫的速度,提供更好的用戶體驗(yàn)[6]。將來會(huì)嘗試不同的任務(wù)調(diào)度解決方案并結(jié)合ElasticSearch實(shí)現(xiàn)更加高效的業(yè)務(wù)數(shù)據(jù)聚合搜索系統(tǒng)[7],并計(jì)劃將本方案運(yùn)用到協(xié)同工作平臺(tái)、基于瀏覽器的即時(shí)消息系統(tǒng)以及客戶服務(wù)中心系統(tǒng)等領(lǐng)域。