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