999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Spring Cloud的人才智庫遴選系統的設計與實現

2023-02-12 11:56:34靜,朱
軟件工程 2023年2期
關鍵詞:數據庫服務信息

黃 靜,朱 旭

(浙江理工大學信息學院,浙江 杭州 310018)

1 引言(Introduction)

現代經濟和生產效率的快速增長,人才在我國經濟發展和社會進步的發展過程中起到至關重要的作用,在此過程中對專家信息的評定也越來越重要[1]。雖然政府加大了對專家信息評審的投入,但是隨著互聯網發展帶來的信息爆炸問題,使當前專家信息篩選過程變得越來越復雜,專家信息評定錯誤率高,難以滿足專家信息資源管理的實際應用要求,同時傳統的人工篩選方式工作量巨大且很難找到真正滿足國家、企業需求的人才[2]。

本文提出基于Spring Cloud的人才智庫遴選系統,以Spring Cloud為框架,采用前后端分離的方式進行構建;通過系統的業務需求將整個系統架構劃分為若干個微服務模塊,保證每個服務的職責單一化,通過這種方式實現系統架構的去中心化[3]。為了支持海量的人才數據存儲問題,每一個模塊下均有自己獨立的數據庫,同時人才與人才之間龐大又復雜的關聯關系,造成傳統的關系型數據庫已經無法處理運算,由此引入了圖數據庫[4],它能提高人才檢索速度,對人才信息標簽之間的關聯關系進行構建,使人才的遴選效率和質量得以較大的提升。

2 微服務架構(Microservice architecture)

隨著服務端架構的不斷迭代和更新,系統架構也逐漸由單體架構演變為面向服務的SOA(Service-Oriented Architecture)架構,由于SOA架構過度依賴消息總線,微服務MSA(Micro Service Architect)架構應運而生,它也是目前使用最廣泛、最流行的分布式架構[5]。

單體架構也被稱為MVC(Model View Controller)架構,它由數據層、業務層和視圖層三個部分構成。單體架構雖然具有易上線、易測試的優點,但是隨著需求數量和開發人員的不斷增加,代碼庫中的代碼快速增長,單體應用變得越來越臃腫,可維護性、靈活性逐漸降低,使得單體架構的維護成為一大難題,開發成本越來越高[6]。因為所有的業務耦合在一起,會使代碼愈發復雜和冗余,同時使用人數的劇增,也會使系統快速達到并發瓶頸,導致系統崩潰。此外,代碼的耦合度較高及功能的復用,造成功能的優化也會變得更加復雜。常見的單體架構示意圖如圖1所示。

圖1 單體架構示意圖Fig.1 Schematic diagram of single structure

微服務是從服務接口到業務邏輯層再到數據持久層,無論是邏輯上還是業務上都是獨立和相互隔離的,不同于SOA架構那樣需要服務總線接入。微服務是一種系統架構的理念[7],它主要是將系統從中間層分解,將系統拆分成很多個小應用,服務與服務之間獨立運行,互不影響,服務之間通過RPC(Remote Produce Call,遠程過程調用)進行通信,保證數據傳輸的可靠性;微服務實現了數據、業務及代碼之間的解耦,各個微服務之間獨立開發,一個微服務只關注一個特定的業務功能,所以它的業務清晰、代碼量較少。以微服務架構搭建出的應用是由若干個微服務構建而成的,而開發和維護單個微服務相對簡單,所以整個應用也會被維持在一個可控狀態。在微服務架構中,不同微服務之間可以使用不同的技術棧,可以結合項目業務及團隊的特點,合理地為每個微服務選擇適用的技術。微服務架構示意圖如圖2所示。

圖2 微服務架構示意圖Fig.2 Schematic diagram of microservice architecture

3 系統相關技術選型(System related technology selection)

本系統前后端相互分離,獨立部署。后端采用微服務的思想進行設計,每一個微服務均使用Spring Boot技術,結合Spring Cloud搭建整體的微服務架構;其中,數據庫設計包含兩種類型:關系型數據庫采用MYSQL 8.0.18,用于存儲人才基礎數據;非關系型數據庫采用Neo4j,用于存儲人才的標簽數據及人才之間的關聯關系。使用Redis(Remote Dictionary Server,遠程字典服務器)作為系統的數據緩存,前端使用Vue.js進行平臺的搭建。

Spring Boot[8]是一個基于Java的開源框架,它可以幫助我們快速地搭建起一個微服務應用。傳統的SSH(Struts,Spring,Hibernate)、SSM(Spring,SpringMVC,MyBatis)等架構開發復雜臃腫、耦合度高,Spring Boot大大簡化了服務端開發過程,并提供了一套完整的解決方案。Spring Boot基于Spring 4.0設計,在Spring原有的優秀特性基礎上,新增了自動化配置,通過提供一組依賴項解決大型項目依賴管理的問題。

Spring Cloud[9]是分布式服務治理框架。Spring Boot能夠快速開發單個微服務,Spring Cloud能夠快速集成多個微服務,將微服務系統構架很好地應用到實際的應用開發中。使用Spring Cloud架構可以保證各個微服務之間有條不紊地協作,如利用“阿里巴巴”的Nacos實現高可用的服務注冊中心及服務的配置管理等;為了使分布式系統更健壯,對依賴的服務使用Spring Cloud Hystrix(分布式服務容錯保護)進行包裝,通過線程隔離和熔斷機制為系統的可用性保駕護航。系統還加入了網關服務組件Gateway用于請求的轉發和服務集群的負載均衡。

Redis[10]是一個高可用的緩存中間件。Redis的優秀特性不僅體現在讀寫速度上,同其他非關系型數據庫相比,它還支持除字符串以外的多種數據結構,如列表、集合、哈希散列表等。Redis通常將全部的數據存儲在內存中,性能十分高效,理論上擴展沒有上限;由于它具有高并發的讀寫能力,所以在面對海量人才數據傳輸讀取時,仍然能夠輕松應對。

Neo4j[11]是一個高性能的圖形數據庫,具有高性能的圖引擎,這使得它具了所有成熟數據庫的特性。Neo4j是一種基于圖論實現的高性能非關系型數據庫,其數據存儲結構和數據查詢方式都是以圖論為基礎的,圖數據庫主要用于存儲更多的連接數據。隨著人才信息的增多,人才標簽的復雜化,人才與標簽之間和人才與人才之間的聯系在基于傳統的關系型數據庫下很難處理關系運算,因此引入圖數據庫。

Vue.js[12]基于漸進式JavaScript框架,可以幫助開發者快速高效地構建用戶界面。Vue.js因為被設計為可以自底向上逐層應用,所以使它與其他大型框架有了明顯的區分。Vue.js只關注視圖層,使其不僅易于上手,還能方便地與第三方庫或既有項目整合。當與現代化的工具鏈及各種支持類庫結合使用時,Vue.js也完全能夠為復雜的單頁應用(SPA)提供驅動。

4 系統的設計與實現(System design and implementation)

4.1 系統總體架構設計

基于Spring Cloud的人才智庫遴選系統的總體架構圖,如圖3所示。

圖3 系統總體架構圖Fig.3 Overall architecture diagram of the system

本系統設計主要分為四個部分,具體如下。

(1)數據庫、Redis緩存:本系統將用戶信息、人才信息、標簽信息、人才基礎數據(如頂級實驗室數據、人才標準、國籍信息、地區產品導向等)存儲至MySQL數據庫中,便于進行人才信息匹配和人才信息過濾。考慮到人才之間的關聯關系及人才關鍵信息的檢索,將人才匹配成功后的標簽數據和標簽與人才、標簽與標簽的聯系存儲至Neo4j數據庫。在人才標簽匹配時,由于人才信息量較大,涉及標簽信息數量較多,所以將人才的數據更新至緩存,從數據庫匹配出的數據也暫存至緩存,待將人才類型匹配結束之后才清空緩存,達到減少與數據庫的交互,進而提高系統的并發能力和人才標簽匹配效率的目的。同時,本系統的身份校驗基于JWT(JSON Web Token,網絡令牌),所以在每次獲取數據請求時進行的身份認證也會先訪問緩存,若緩存中沒有用戶登錄狀態,則視為無效登錄,禁止訪問系統數據。由于系統有部分關鍵功能依賴于緩存,所以為了避免緩存穿透、緩存擊穿、緩存雪崩等問題,在人才數據上加上數據的預處理,即上傳人才數據時會先進行布隆過濾,同時是用分布式鎖避免緩存擊穿;緩存雪崩的主要原因是大批數據在同一時間過期導致,故在設置人才信息時,不設置過期時間,當人才信息評定完成之后再手動進行刪除。

(2)服務端:將服務端根據業務需求劃分為若干個微服務模塊,保證每個服務職責單一,各司其職,同時依靠Spring Cloud提供的組件保證各個微服務模塊的正常運行,如系統的統一訪問入口Gateway,配置和注冊中心Nacos,服務之間的通信Openfegin,服務的限流Sentinel等。整個系統的功能模塊劃分為用于每個服務統一身份認證的身份認證服務模塊,用于人才簡歷文件預覽、簡歷上傳等專門用于文件處理的文件服務模塊,用于處理獎項、學歷、企業經歷、國家級項目的基礎信息模塊,用于篩選、錄入、上傳人才信息的人才智庫模塊,用于人才類型評定、標簽匹配和打分的人才標簽評定模塊,用于保存人才與人才之間的關聯關系和通過關鍵詞檢索人才數據的人才推薦模塊。每個模塊下都有自己對應的數據服務和數據管理。

(3)分布式事務:由于本系統一個功能的實現需要多個模塊之間的協調才能實現,因此不同的微服務模塊都有自己的數據庫,此時就會出現一個服務必須調用多個服務下的數據庫實例才能完成的情況。在分布式架構下,每個節點只知曉自己操作失敗或者成功的狀態,無法得知其他節點的狀態。本系統基于RabbitMQ(高級消息隊列)實現可靠的消息服務,解決服務間通信問題和不同微服務之間的事務問題。

(4)系統前端設計:本系統前端主要采用Vue.js框架,并配合Element-UI(桌面端組件庫)和ECharts(商業級數據圖表)實現良好的人機交互頁面,通過數據的圖表實現人才數據分析的可視化效果。

4.2 系統數據庫設計

本系統數據庫采用MySQL 8.0.18和Neo4j兩種不同類型的數據庫。由于Neo4j為圖數據庫,不同于關系型數據庫,它不需要事先預定行列規范,所以在此不介紹Neo4j的設計,下面對MySQL數據庫中部分表的結構設計進行說明。其中,人才基礎信息數據庫表結構如圖4所示,人才基礎信息數據庫里包含人才所對應的基礎標簽數據,其中專家庫(tb_profession)包含人才的姓名、年齡及系統匹配后人才類型等;其余的表皆為專家庫的子表,包含人才的詳細信息數據,如教育經歷(education)、個人頭銜(personal_title)、人才標準(tb_standard)、個人經歷(experience)、專利(patent)及導師信息(tutor)等。

圖4 人才基礎信息數據庫表結構圖Fig.4 Structure diagram of basic information database table of talents

圖5為人才標簽評定數據庫表結構圖,其中標簽庫(tb_tag)包含所有需要匹配的標簽數據,通過條件庫(query_criteria)及條件關聯庫(query_criteria_association)匹配用戶的人才遴選類型,將匹配后的標簽分值及結果保存至人才標簽表(profession_tag),同時將人才的遴選結果同步更新到人才基礎信息數據庫的專家信息表中。

圖5 人才標簽評定數據庫表結構圖Fig.5 Structure diagram of tag assessment database table of talents

4.3 系統服務端設計與實現

4.3.1 微服務框架設計

本系統基于Spring Cloud架構進行搭建,當接口對服務端發起請求時,每個請求都必須先經過網關,然后由網關將請求進行統一的轉發。本系統的服務端網關采用的是Spring Cloud全家桶中的微服務API網關Gateway[13]。Gateway不僅提供了統一的路由方式,還實現了網關的基本功能,如網絡請求安全、數據請求監控及服務的限流等。

由于不同微服務可能不在同一臺服務器上,甚至不在同一網絡環境下,所以服務間的通信只能依賴于網絡,而Openfegin則實現了不同服務之間的數據調用。為了防止服務雪崩,本系統還引入了Spring Cloud Hystrix實現熔斷機制,當系統某個服務發生故障或異常時,會直接熔斷服務,而不是一直等待該服務超時[14]。

由于模塊劃分較多,配置繁雜和冗余,為了解決配置文件相對分散、配置文件無法區分環境及配置文件無法實時更新等問題,引入基于Nacos的配置中心,各個服務按需獲取自己的配置。與Spring Cloud Eureka(分布式注冊中心)不同,Nacos不需要引入額外的組件如Spring Cloud Bus(分布式消息總線)等實現配置的動態刷新,Nacos采用Netty保持Tcp(傳輸控制協議)的長連接實現實時推送,當配置中心的各種參數有更新時,也能通知各個服務實時同步最新的信息,實現動態更新。

服務注冊與發現中心采用的也是Spring Cloud Alibaba Nacos(阿里巴巴分布式注冊中心)[15],Nacos不僅具備良好的圖形化界面和服務在線管理,還極大地簡化了整個微服務架構的復雜度和冗余度。

4.3.2 微服務功能設計

根據人才智庫遴選流程,將系統劃分為身份認證模塊、基礎數據模塊、人才標簽評定模塊、人才智庫模塊、人才推薦模塊。

(1)身份認證模塊。身份認證模塊主要分為用戶信息管理和身份信息校驗兩個功能。用戶信息管理即對登錄用戶的姓名、密碼、郵箱、角色等進行管理;身份信息校驗會攔截所有需要身份校驗的請求,并對其中的JWT信息進行校驗,包含登錄信息、角色權限的校驗,只有校驗成功才可以繼續訪問接口。

(2)基礎數據模塊。基礎數據模塊為其他微服務模塊提供了基礎的數據支持,由于每個模塊之間的數據有耦合,所以把耦合部分提取出來作為公共服務模塊,如在錄入人才數據時需要國籍列表、獎項列表、頂級實驗室列表等數據,但是在進行人才標簽匹配時也需要這些數據做比對,此時通過一個單獨的微服務將這些數據統一進行管理。

(3)人才標簽評定模塊。該模塊為系統的核心業務模塊,主要負責人才數據的標簽匹配、判斷人才的類型、對人才評分等操作。如圖6所示的國家“千人計劃”(全稱為國家海外高層次人才引進計劃)人才評定流程。

圖6 國家“千人計劃”人才評定流程圖Fig.6 Flow chart of talent evaluation of the national"Thousand Talents Program"

(4)人才智庫模塊。該模塊主要負責人才信息的導入、人才信息的存儲、人才信息的顯示、人才信息的統計等。系統將人才信息錄入或導入之后,首先將人才信息保存至緩存,然后調用人才標簽評定模塊進行人才類型評定,最后將評定結果更新至人才智庫。

(5)人才推薦模塊。該模塊負責將人才與標簽、人才與人才之間構建聯系,用于后期通過關鍵字檢索人才信息,以及通過特定條件進行人才的推薦等。人才智庫模塊中錄入的數據會傳輸到人才推薦模塊,人才推薦模塊會將人才信息和相應的標簽建立聯系,也會通過標簽建立人才與人才之間的聯系。

5 結論(Conclusion)

本文通過Spring Cloud、Neo4j、Vue.js等相關開發技術設計并實現了基于Spring Cloud的人才智庫遴選系統,最終設計出能夠通過人才信息進行人才標簽類型的匹配及人才類型遴選的可視化系統。目前,該系統已經在一家企業使用,經過一段時間的數據追蹤和使用評價,確定該系統能夠滿足企業對人才遴選和人才標定的需求,在人才信息的評定和評估領域具有較大的應用價值。

猜你喜歡
數據庫服務信息
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
主站蜘蛛池模板: 中文字幕亚洲电影| 日韩成人免费网站| 精品国产美女福到在线直播| 国产系列在线| 国产色婷婷| 国产在线精品99一区不卡| 青青国产视频| 精品三级网站| 欧美一级片在线| 一区二区自拍| 国产欧美视频在线| 国产精品视频公开费视频| 亚洲中文字幕97久久精品少妇| 亚洲成人www| 国产在线一二三区| 青青热久免费精品视频6| 国产欧美亚洲精品第3页在线| 国产精品午夜福利麻豆| 亚洲成a人片77777在线播放 | 免费在线不卡视频| 大陆精大陆国产国语精品1024| 国产一区在线视频观看| 亚洲精品桃花岛av在线| 中国一级特黄大片在线观看| 国产理论一区| 高清免费毛片| 久久亚洲天堂| 蝌蚪国产精品视频第一页| 中文字幕在线一区二区在线| 欧美成人日韩| 全部无卡免费的毛片在线看| 国产日本一区二区三区| 99精品在线看| 拍国产真实乱人偷精品| 国产精品久久精品| 粉嫩国产白浆在线观看| 国产二级毛片| 欧美午夜网站| 欧洲成人在线观看| 青青网在线国产| 国产综合精品一区二区| 亚洲精品高清视频| 高清无码手机在线观看| 黄色在线不卡| 黄片一区二区三区| 波多野结衣在线一区二区| 国产v精品成人免费视频71pao | 国产精品综合色区在线观看| 国产91精品调教在线播放| 婷婷综合在线观看丁香| 亚洲AⅤ无码日韩AV无码网站| 亚洲国产欧美中日韩成人综合视频| 国产一区二区三区免费| 激情爆乳一区二区| 亚洲日本韩在线观看| 国产在线视频导航| 亚洲精品中文字幕午夜| 免费观看成人久久网免费观看| 亚洲精品综合一二三区在线| 视频二区中文无码| 99在线视频精品| 免费无码AV片在线观看中文| 亚洲三级网站| 精品国产免费人成在线观看| 久久综合色播五月男人的天堂| 97精品久久久大香线焦| 午夜福利网址| 天天综合网色中文字幕| 成人亚洲天堂| 97国产精品视频自在拍| 国产在线精品美女观看| 五月激激激综合网色播免费| 99久久国产综合精品2023| 无码人妻免费| 色婷婷电影网| 精品剧情v国产在线观看| 国产成人精品高清不卡在线| 一级爆乳无码av| 久久77777| 超薄丝袜足j国产在线视频| 无码专区在线观看| 无码精油按摩潮喷在线播放|