国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于微服務(wù)架構(gòu)的FOLIO模塊建設(shè)探索、實(shí)踐與思考

2020-08-13 11:40王昊賢
關(guān)鍵詞:北京大學(xué)圖書館微服務(wù)

王昊賢

摘要?在傳統(tǒng)圖書館集成管理系統(tǒng)轉(zhuǎn)型換代之際,“老系統(tǒng)”和“新服務(wù)”如何銜接以滿足圖書館發(fā)展需求和提供讀者服務(wù)成為圖書館建設(shè)的技術(shù)難點(diǎn)。文章從微服務(wù)與FOLIO架構(gòu)作為切入點(diǎn),以北京大學(xué)圖書館閉架圖書叫號系統(tǒng)為例進(jìn)行探索,介紹了基于微服務(wù)架構(gòu)的FOLIO模塊實(shí)踐的設(shè)計(jì)思路、系統(tǒng)架構(gòu)和技術(shù)使用,并通過分析系統(tǒng)應(yīng)用數(shù)據(jù),提出了優(yōu)化圖書館服務(wù)的對策和建議;從微服務(wù)架構(gòu)技術(shù)優(yōu)勢、應(yīng)用場景和微服務(wù)架構(gòu)下的圖書館角色轉(zhuǎn)變等角度進(jìn)行了討論,總結(jié)了微服務(wù)技術(shù)在圖書館管理和服務(wù)中的創(chuàng)新意義,可為其他圖書館提供參考借鑒。

關(guān)鍵詞?FOLIO?微服務(wù)?北京大學(xué)圖書館?叫號系統(tǒng)

分類號?G252

DOI?10.16603/j.issn1002-1027.2020.04.004

1?引言

無所不在的網(wǎng)絡(luò)、無所不在的計(jì)算、無所不在的數(shù)據(jù)、無所不在的知識和無所不在的想象已成為當(dāng)下大學(xué)生的主要生活方式和工作模式。隨著作為互聯(lián)網(wǎng)世代的“90后”和“00后”逐漸成為圖書館的主要用戶群體,用戶的需求已不再局限于圖書館的傳統(tǒng)服務(wù),而更趨向于自動化和智能化,這對圖書館的工作提出了新要求,傳統(tǒng)的圖書館工作流程和服務(wù)方式與新時代的用戶需求之間產(chǎn)生了明顯的代溝。

信息科學(xué)技術(shù)的發(fā)展使得傳統(tǒng)的圖書館集成管理系統(tǒng)(ILS)在資源管理和業(yè)務(wù)流程管理上受到了沖擊,“新一代圖書館服務(wù)平臺”成為學(xué)界的討論熱點(diǎn)。早在2013年殷紅、劉煒就指出原有的“圖書館集成管理系統(tǒng)”已完全喪失了“集成”性[1]。面對這一困境,肖錚、林俊偉認(rèn)為新一代圖書館服務(wù)平臺應(yīng)具有:平臺化、開放性、易擴(kuò)展性和云端化等特征[2]。陳武等認(rèn)為下一代圖書館服務(wù)平臺應(yīng)充分利用最新的云計(jì)算技術(shù)和架構(gòu)的優(yōu)點(diǎn),以降低軟硬件維護(hù)成本[3]。吳建中認(rèn)為,下一代圖書館技術(shù)要把體現(xiàn)增值功能、突出用戶本位、適應(yīng)事業(yè)發(fā)展放在重要位置, 同時要加強(qiáng)系統(tǒng)的擴(kuò)展性、安全性和個性化[4]。周義剛、聶華結(jié)合北京大學(xué)圖書館的實(shí)際需求,提出了北京大學(xué)圖書館的需求框架[5]。如何開發(fā)能滿足時代要求和用戶需求的平臺,邵波、張文竹結(jié)合南京大學(xué)圖書館系統(tǒng)平臺的實(shí)踐討論下一代圖書館平臺的難點(diǎn)和對策[6];劉素清從用戶體驗(yàn)視角進(jìn)行研究,分析得出開源項(xiàng)目FOLIO的推出為圖書館服務(wù)平臺的選擇提供了新的思路,其核心目標(biāo)是建設(shè)一個開源的、基于云服務(wù)的應(yīng)用程序框架,以實(shí)現(xiàn)不同開發(fā)團(tuán)隊(duì)之間的協(xié)作[7]。2018年,中國高等教育文獻(xiàn)保障系統(tǒng)(CALIS)新一代圖書館服務(wù)平臺聯(lián)盟成立,為基于FOLIO的新一代圖書館服務(wù)平臺建設(shè)打下了堅(jiān)實(shí)的基礎(chǔ)[8]。結(jié)合讀者需求,抓住FOLIO發(fā)展、探索與應(yīng)用的契機(jī),2018年,北京大學(xué)圖書館運(yùn)用基于FOLIO的微服務(wù)框架進(jìn)行了閉架圖書叫號系統(tǒng)開發(fā),實(shí)現(xiàn)了通過開源程序來管理館藏資源和提升圖書館服務(wù)質(zhì)量的目標(biāo)。同年,CALIS也運(yùn)用FOLIO架構(gòu)升級了CALIS館際互借系統(tǒng)。

2?微服務(wù)架構(gòu)與FOLIO

2.1?單體架構(gòu)、SOA與微服務(wù)架構(gòu)

單體架構(gòu)應(yīng)用是功能集中、代碼和數(shù)據(jù)中心化、一個發(fā)布包、部署后運(yùn)行在同一進(jìn)程的應(yīng)用程序。面向服務(wù)的架構(gòu)(Service Oriented Architecture,SOA)是一個組件模型,它將應(yīng)用程序的不同功能單元進(jìn)行拆分,并通過這些業(yè)務(wù)系統(tǒng)之間定義良好的接口和契約聯(lián)系起來[9]。微服務(wù)(Micro-services)架構(gòu)SOA有相同之處,在 SOA之上升華,是一些具有足夠小的粒度、能夠相互協(xié)作且自治的服務(wù)體系,每個服務(wù)僅關(guān)注于完成一個具體業(yè)務(wù)并能夠良好地完成該功能[10-12]。微服務(wù)架構(gòu)強(qiáng)調(diào)的是業(yè)務(wù)徹底的組件化和“微”服務(wù)化,原有的單個業(yè)務(wù)系統(tǒng)會拆分為多個可以獨(dú)立開發(fā)、設(shè)計(jì)、運(yùn)行的微服務(wù),這些微服務(wù)之間通過API完成交互。

單體架構(gòu)、SOA與微服務(wù)架構(gòu)如圖1所示,SOA的總線是一根管道,用來連接各業(yè)務(wù)應(yīng)用,為了集成不同的子系統(tǒng)、不同的協(xié)議服務(wù),總線做了消息的轉(zhuǎn)化解釋和路由工作,讓不同的服務(wù)互聯(lián)互通。微服務(wù)中的API網(wǎng)關(guān)是一個獨(dú)立的服務(wù),是系統(tǒng)的唯一入口,所有的客戶端和消息端都通過統(tǒng)一的網(wǎng)關(guān)接入微服務(wù)。不同的微服務(wù)間也是通過API進(jìn)行輕量級通訊。單體架構(gòu)、SOA與微服務(wù)架構(gòu)在組件大小、耦合程度、團(tuán)隊(duì)架構(gòu)等方面的對比如表1所示。

微服務(wù)的特性使其在系統(tǒng)設(shè)計(jì)開發(fā)應(yīng)用中具有一定的優(yōu)勢,并且越是在規(guī)模龐大的軟件項(xiàng)目中其優(yōu)勢越明顯[13]。優(yōu)勢包括:

(1)獨(dú)立性。不同的服務(wù)間耦合程度低,有明確的任務(wù)和功能。

(2)技術(shù)選擇靈活。服務(wù)間通過API進(jìn)行通訊,開發(fā)團(tuán)隊(duì)可根據(jù)自身情況,選擇適合的架構(gòu)和開發(fā)語言。

(3)獨(dú)立部署。更便捷的借助容器(如Docker)獨(dú)立部署,且進(jìn)程隔離[14]。

微服務(wù)架構(gòu)自產(chǎn)生就被業(yè)界廣泛應(yīng)用,例如,新型云件PaaS平臺[15]、統(tǒng)一應(yīng)用開發(fā)平臺[16]、電力云服務(wù)平臺[17]、城市一卡通手機(jī)充值支撐系統(tǒng)等[18]。微服務(wù)架構(gòu)也為新一代圖書館服務(wù)平臺的建設(shè)提供了新的思路。與此同時,在現(xiàn)有圖書館集成管理系統(tǒng)退出歷史舞臺到新一代圖書館服務(wù)平臺開始服務(wù)的過渡時期,可以基于微服務(wù)架構(gòu),將圖書館的新增服務(wù)統(tǒng)一設(shè)計(jì)、組織、管理。

2.2?FOLIO微服務(wù)架構(gòu)

FOLIO(The Future of Libraries is Open)項(xiàng)目成立于2016年,由圖書館、開發(fā)者和服務(wù)提供方共同發(fā)起,并于2019年發(fā)布Aster版本 [19]。FOLIO平臺(見圖2)采用微服務(wù)架構(gòu)[20],數(shù)據(jù)層支持PostgreSQL、Oracle、MongoDB等多種數(shù)據(jù)存儲技術(shù);系統(tǒng)層主要負(fù)責(zé)索引、日志、租戶配置等;OKAPI是 FOLIO平臺的網(wǎng)關(guān),負(fù)責(zé)租戶和APPs間的通信;應(yīng)用層為應(yīng)用程序,包括采訪、編目、流通等傳統(tǒng)模塊,以及支持?jǐn)U展模塊;UI層可以運(yùn)用React、VUE、Angular等技術(shù)開發(fā)用戶界面,以適應(yīng)不同用戶在不同場景下使用的需求。其中OKAPI是FOLIO的核心,各業(yè)務(wù)功能被劃分成相互獨(dú)立的微服務(wù),將RESTful API接口信息以及代理或托管信息提交到OKAPI。用戶訪問OKAPI HTTP服務(wù),OKAPI通過接口URL確定用戶需要調(diào)用的API,然后通過代理或托管信息找到實(shí)際服務(wù)的地址,將請求轉(zhuǎn)發(fā)到實(shí)際服務(wù)的地址。

完整的FOLIO-APP的基本構(gòu)成(見圖3)包括UI模塊、后端模塊和存儲模塊,UI模塊負(fù)責(zé)前端頁面交互,后端模塊負(fù)責(zé)業(yè)務(wù)邏輯,存儲模塊負(fù)責(zé)實(shí)現(xiàn)特定的持久化措施。服務(wù)型FOLIO-APP主要包含后端業(yè)務(wù)模塊和存儲模塊,業(yè)務(wù)邏輯型FOLIO-APP主要包含后端業(yè)務(wù)模塊,前端型FOLIO-APP主要包含UI模塊。

3?FOLIO在北京大學(xué)圖書館的實(shí)踐

北京大學(xué)圖書館閉架借書處一直使用讀者遞交索書單,工作人員按條找書的傳統(tǒng)服務(wù)方式,整個工作流程中存在著諸多困難。例如,有時讀者手寫不清、謄寫信息錯誤,導(dǎo)致工作人員分單取書困難;由于空間有限,部分外文圖書同一分類分放在不同的樓層,找書要依靠讀者查詢填寫?zhàn)^藏位置,如果讀者不清楚借閱規(guī)則,則不得不進(jìn)行二次檢索,增加了借書難度;館藏查詢與借書時間不同步,讀者填寫索書單時圖書可能已經(jīng)是借出狀態(tài);讀者借閱的是非閉架圖書,卻誤到閉架借書處提交索書單,導(dǎo)致借書請求無法滿足等。針對這一系列問題,為了將閉架借書服務(wù)從線下手工作業(yè)流程提升到線上系統(tǒng)操作,北京大學(xué)圖書館開發(fā)了閉架圖書叫號系統(tǒng)(下文簡稱叫號系統(tǒng)),是基于微服務(wù)架構(gòu)的FOLIO模塊建設(shè)的一次有意義的探索和實(shí)踐。

3.1?以用戶為中心的設(shè)計(jì)

以用戶為中心的設(shè)計(jì)(User-Centered Design),其核心思想就是在產(chǎn)品開發(fā)的每個階段都把用戶特征納入考慮的范圍。系統(tǒng)設(shè)計(jì)的初衷在于為讀者提供更便捷的借書方式、縮短獲取館藏資源的時間,同時減輕工作人員的工作量,并直觀分析用戶行為,為完善工作流程,進(jìn)一步提升工作效率提供依據(jù)。叫號系統(tǒng)對現(xiàn)有流程做出了優(yōu)化調(diào)整,用戶與系統(tǒng)交互的流程如圖4所示。優(yōu)化后,讀者無需手工填寫索書單,查詢與提交請求一次完成,節(jié)省時間和精力,并省去了圖書館工作人員分單和索書單由運(yùn)書電梯上行的環(huán)節(jié),簡化了借書流程,打印出來的索書單和索書號清晰準(zhǔn)確,圖書定位準(zhǔn)確,可借狀態(tài)準(zhǔn)確,借書效率更高。

3.2?叫號系統(tǒng)架構(gòu)與主要開發(fā)技術(shù)

在叫號系統(tǒng)的業(yè)務(wù)分析中,對叫號業(yè)務(wù)涉及到的統(tǒng)一認(rèn)證、館藏檢索、叫號業(yè)務(wù)處理以及FOLIO的一系列基礎(chǔ)服務(wù)等環(huán)節(jié)進(jìn)行相應(yīng)的微服務(wù)的分解,不同微服務(wù)之間的關(guān)系是低度耦合的,單項(xiàng)微服務(wù)只負(fù)責(zé)單一任務(wù),不同微服務(wù)之間通過RESTful請求通訊,在保證RESTful API穩(wěn)定的情況下,各模塊升級互不影響。其中,統(tǒng)一認(rèn)證服務(wù)主要負(fù)責(zé)用戶的認(rèn)證、身份信息、權(quán)限獲取,并通過發(fā)送RESTful請求的方式與FOLIO基礎(chǔ)服務(wù)中的用戶模塊進(jìn)行通訊;館藏檢索服務(wù)主要負(fù)責(zé)與圖書館集成系統(tǒng)Symphony的通信、檢索以及檢索結(jié)果的處理;叫號業(yè)務(wù)處理服務(wù)主要負(fù)責(zé)讀者請求的建立以及處理等;FOLIO的基礎(chǔ)服務(wù)包括模塊認(rèn)證、權(quán)限管理、用戶管理等。叫號服務(wù)在FOLIO平臺中的角色為應(yīng)用層眾多應(yīng)用(APP)中的一個應(yīng)用,叫號服務(wù)與OKAPI的關(guān)系如圖5所示。

FOLIO的系統(tǒng)架構(gòu)支持了前后端分離的開發(fā)方式,后端及存儲模塊負(fù)責(zé)業(yè)務(wù)邏輯,而前端模塊主要負(fù)責(zé)呈現(xiàn)、用戶交互等。從技術(shù)選型角度,F(xiàn)OLIO支持了多語言、多框架的技術(shù),具有很高的靈活性、適應(yīng)性、兼容性和可擴(kuò)展性,不同模塊間互不影響,不同的開發(fā)團(tuán)隊(duì)可以根據(jù)其技術(shù)棧選擇不同的技術(shù)。各技術(shù)和框架各有優(yōu)勢,在遵循FOLIO OKAPI支持的RESTful通訊模式,開發(fā)團(tuán)隊(duì)可選擇適應(yīng)業(yè)務(wù)流程所需的、團(tuán)隊(duì)擅長的語言和技術(shù)框架,而不僅僅局限于FOLIO已經(jīng)使用的技術(shù)框架,例如FOLIO OKAPI運(yùn)用Vert.x框架。FOLIO-APP結(jié)構(gòu)與叫號系統(tǒng)采用的主要技術(shù)如圖6所示。

后端模塊支持多語言、多種技術(shù)開發(fā),例如Spring Boot、Nodejs、Django等,具有很強(qiáng)的靈活性,適應(yīng)不同技術(shù)團(tuán)隊(duì)的開發(fā)。叫號系統(tǒng)后端模塊運(yùn)用RESTful開發(fā)模式,采用Spring Boot技術(shù)將業(yè)務(wù)邏輯包裝成RESTful API接口,與其他模塊進(jìn)行RESTful模式通訊,叫號系統(tǒng)模塊的修改和升級不影響其他模塊,其他模塊在保證接口穩(wěn)定的情況下的升級和擴(kuò)展同樣不影響叫號系統(tǒng)模塊,保證了平臺的兼容性和可擴(kuò)展性。Spring Boot是由Pivotal團(tuán)隊(duì)提供的框架,其設(shè)計(jì)目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置。與OKAPI的通訊采用代理模式,即OKAPI不負(fù)責(zé)模塊的運(yùn)行,僅將請求轉(zhuǎn)發(fā)給指定的URL,后端業(yè)務(wù)模塊將API接口信息和代理信息提交給OKAPI。存儲模塊采用Mybatis和MySQL數(shù)據(jù)庫,MyBatis基于 Java語言的持久層框架,支持定制化 SQL、存儲過程以及高級映射,使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects)映射成數(shù)據(jù)庫中的記錄。

前端模塊采用React、Ant Design技術(shù)實(shí)現(xiàn)多終端的用戶交互界面。React起源于Facebook的內(nèi)部項(xiàng)目,由起始的JavaScript MVC框架擴(kuò)展成一套前后端Web APP解決方案,主要用于構(gòu)建UI,可適用于服務(wù)器、瀏覽器和移動終端,與Angular、VUE并稱為目前流行的三大開源UI框架。React的核心思想是封裝組件,各個組件維護(hù)自己的狀態(tài)和 UI,當(dāng)狀態(tài)變更,自動重新渲染整個組件。在叫號系統(tǒng)前端模塊中,發(fā)揮前端控制層作用,并提供了前后端數(shù)據(jù)通訊的通道。Ant Design是螞蟻金服體驗(yàn)技術(shù)部出品的基于React的UI庫,包含設(shè)計(jì)原則、控件規(guī)范和視覺尺寸以及配套的前端代碼實(shí)現(xiàn)方案等,滿足了多用戶適應(yīng)不同終端的需求。

3.3?部署上線服務(wù)

叫號系統(tǒng)采用了前后端分離的開發(fā)方式,也支持了前后端分開打包部署的方式,前后端模塊可部署在相同或不同的服務(wù)上。叫號系統(tǒng)后端模塊運(yùn)用Maven打包方式,可直接發(fā)布為可運(yùn)行Jar包。前端模塊運(yùn)用Webpack打包,生成若干個HTML、JS、CSS以及圖片等靜態(tài)文件。Nginx是一個輕量級的高性能的HTTP和反向代理Web服務(wù)器,具有支持高并發(fā)鏈接、占用內(nèi)存較小、配置文件簡潔、支持熱部署等優(yōu)勢。因此,將前端模塊部署到Nginx服務(wù)器,同時,為保障用戶在使用系統(tǒng)服務(wù)時的個人信息安全,運(yùn)用Nginx服務(wù)器反向代理的方式啟用HTTPS服務(wù)。另外,叫號端采用了桌面虛擬化技術(shù),通過終端設(shè)備連接到位于數(shù)據(jù)中心的虛擬桌面提供持續(xù)穩(wěn)定的服務(wù),保證了叫號端的穩(wěn)定性。系統(tǒng)的部署采用了先進(jìn)的技術(shù),不僅使得部署過程便捷簡單,并且保證了服務(wù)的安全性和穩(wěn)定性。

4?系統(tǒng)應(yīng)用數(shù)據(jù)分析

基于微服務(wù)框架開發(fā)的閉架圖書叫號系統(tǒng)強(qiáng)大的統(tǒng)計(jì)功能為提升用戶體驗(yàn)、改進(jìn)管理方式提供了數(shù)據(jù)支撐。叫號系統(tǒng)于2018年12月24日試運(yùn)行,試運(yùn)行當(dāng)日完成了91冊圖書的借閱請求,自試運(yùn)行開始至2019年9月30日,共計(jì)有10000余名讀者登錄系統(tǒng),產(chǎn)生了124000余條檢索(含翻頁)數(shù)據(jù)和37000余條圖書借閱請求數(shù)據(jù)。如圖7所示,96%的圖書借閱請求正常結(jié)束,可見讀者借到書的成功率較高,但仍有4%的請求異常結(jié)束,其中42%為讀者取消借閱申請,圖書未找到的占32%,逾期未取書的占26%。

完成借書流程時間指的是從讀者檢索提交借書申請到讀者拿到書完成整個借書流程的時間差(見圖8)。據(jù)統(tǒng)計(jì),一位讀者最快33秒完成了整個閉架借書流程,1500余條請求在1分鐘內(nèi)完成,半數(shù)以上請求在6分鐘內(nèi)完成整個借書流程,80%的請求在12分鐘內(nèi)完成。

對讀者提交借書請求的時間進(jìn)行分析,如圖9所示,10:00-11:00、12:00-13:00和15:00-16:00出現(xiàn)三個峰值,這與學(xué)生的課間休息和午餐時間基本相符;8:00-10:00與其他時段相比,借書請求數(shù)相對較少。分析得出的結(jié)論可為優(yōu)化工作流程提供指導(dǎo),如工作人員可集中在早晨完成其他工作,如調(diào)整閉架圖書預(yù)約報(bào)表運(yùn)行、處理時間和新書收登等工作,在借書請求峰值時段以服務(wù)現(xiàn)場借書讀者為主,減少讀者等待時間。

按讀者所借圖書的分類號進(jìn)行統(tǒng)計(jì)分析,排名前10位的圖書類別如圖10所示,包括D(政治、法律)、T(工業(yè)技術(shù))、I(文學(xué))、B(哲學(xué)、宗教)、K(歷史、地理)、O(數(shù)理科學(xué)和化學(xué))、F(經(jīng)濟(jì))、H(語言、文字)、G(文化、科學(xué)、教育、體育)、C(社會科學(xué)總論)。這10類的借書請求數(shù)量占總請求數(shù)的87%,基本符合齊普夫定律,這一統(tǒng)計(jì)可為未來圖書館空間布局的調(diào)整和書庫排架設(shè)計(jì)提供參考。

5?微服務(wù)架構(gòu)應(yīng)用探索與思考

從叫號系統(tǒng)的技術(shù)原理和實(shí)踐過程中可見,微服務(wù)架構(gòu)在當(dāng)前圖書館轉(zhuǎn)型時期是一個較好的選擇。因其既可以針對一個具體的業(yè)務(wù)獨(dú)立開發(fā)和運(yùn)用,也可以在同一開發(fā)模式下實(shí)現(xiàn)兼容和合作,既能滿足傳統(tǒng)圖書館管理系統(tǒng)的服務(wù)升級要求,又能匹配新一代圖書館服務(wù)平臺的多種要求。

5.1?微服務(wù)技術(shù)優(yōu)勢

(1)單一職責(zé)。FOLIO采用微服務(wù)架構(gòu)是一種高度模塊化的設(shè)計(jì),每個模塊只負(fù)責(zé)與本模塊相關(guān)的業(yè)務(wù),當(dāng)一個模塊進(jìn)行升級和改造時,其他模塊的運(yùn)行不受影響。例如,北京大學(xué)圖書館的統(tǒng)一認(rèn)證采用了CALIS統(tǒng)一認(rèn)證系統(tǒng),同時,北京大學(xué)校內(nèi)也支持IAAA的認(rèn)證,如果認(rèn)證方式進(jìn)行了調(diào)整和修改,僅需對認(rèn)證模塊進(jìn)行改造,不影響其他模塊的運(yùn)行,從理論上實(shí)現(xiàn)了熱插拔。

(2)輕量級通信。如上文所述OKAPI是FOLIO的核心,統(tǒng)一認(rèn)證、檢索、叫號服務(wù)與FOLIO的一系列基礎(chǔ)服務(wù)分別作為獨(dú)立的“微服務(wù)”,通過托管或代理的模式將API接口提交給OKAPI,OKAPI對不同服務(wù)的API接口進(jìn)行了統(tǒng)一管理。其他服務(wù),例如送書上門服務(wù)也可包裝成一個獨(dú)立的微服務(wù),通過相似的方式將API接口提交給OKAPI,對服務(wù)平臺進(jìn)行擴(kuò)展,運(yùn)用RESTful的接口方式可實(shí)現(xiàn)不同模塊、不同微服務(wù)之間的通訊。

(3)技術(shù)多樣性。OKAPI通過認(rèn)證租戶的方式,為各模塊、微服務(wù)提供模塊級別的權(quán)限控制。不同的微服務(wù)負(fù)責(zé)相對獨(dú)立的業(yè)務(wù),邏輯與其他微服務(wù)關(guān)系是低度耦合的,可由不同的開發(fā)團(tuán)隊(duì)運(yùn)用不同的編程語言、不同的技術(shù)框架,并可獨(dú)立部署,搭建在不同的物理或虛擬服務(wù)器上,形成服務(wù)云,僅需遵循RESTful的開發(fā)方式即可實(shí)現(xiàn)不同服務(wù)間的通訊。例如,F(xiàn)OLIO OKAPI運(yùn)用Vert.x框架,叫號系統(tǒng)后端使用了Spring Boot框架,兩個模塊分別由不同團(tuán)隊(duì)開發(fā),選擇了不同的技術(shù),部署在不同的虛擬服務(wù)器上,但配合良好,體現(xiàn)出微服務(wù)架構(gòu)的優(yōu)勢。

(4)獨(dú)立性。FOLIO的系統(tǒng)架構(gòu)支持了前后端分離的開發(fā)方式,這種開發(fā)方式不同于傳統(tǒng)前后端作為一個統(tǒng)一的整體的開發(fā)方式,前端和后端的開發(fā)相對獨(dú)立,在開發(fā)前期對接口進(jìn)行描述,前端和后端開發(fā)可同時進(jìn)行,互不干擾。與此同時,后端模塊將API接口提交給OKAPI,API接口由OKAPI統(tǒng)一管理,前端請求發(fā)送給OKAPI,由OKAPI做請求的統(tǒng)一分發(fā)而不必考慮服務(wù)的物理、虛擬服務(wù)器的具體位置、IP等,因此,前端模塊在發(fā)送請求時對后端是否為同一微服務(wù)不敏感,對不同微服務(wù)提交的API接口進(jìn)行請求發(fā)送采用的方式基本相似,這樣提高了前端開發(fā)的靈活性,降低了前后端的耦合度,為開發(fā)提供了便利。綜合對系統(tǒng)架構(gòu)的分析和微服務(wù)的拆分與開發(fā)應(yīng)用,可以看出基于微服務(wù)架構(gòu)的FOLIO模塊建設(shè)中充分體現(xiàn)出新一代圖書館服務(wù)平臺的平臺化、開放性、易擴(kuò)展性、云端化等特征。

5.2?微服務(wù)應(yīng)用場景

雖然北京師范大學(xué)圖書館、清華大學(xué)圖書館分別于2017年、2018年上線了下一代圖書館服務(wù)平臺,但大部分高校圖書館仍處在“老系統(tǒng)”向“新平臺”的過渡時期,且在短時間內(nèi)無法完成新老系統(tǒng)的更替。與此同時,隨著互聯(lián)網(wǎng)時代的到來,用戶的需求出現(xiàn)爆發(fā)式增長,圖書館因原有系統(tǒng)存在的一系列問題,在面對新需求時顯得捉襟見肘,在提供新服務(wù)的同時,對舊有系統(tǒng)的生命周期會有所顧慮?!袄舷到y(tǒng)”一旦終止服役,新的服務(wù)是否會受到影響?影響程度如何?“老系統(tǒng)”終止服役的正確時機(jī)又在何時?

微服務(wù)架構(gòu)的設(shè)計(jì)有可能最大程度地解決這一問題,將新的服務(wù)與舊有系統(tǒng)通信的部分包裝成為獨(dú)立的服務(wù),進(jìn)行數(shù)據(jù)獲取、業(yè)務(wù)處理等,并向新服務(wù)提供RESTful API,當(dāng)新老平臺進(jìn)行切換時,運(yùn)用同樣的API接口,僅需對此服務(wù)進(jìn)行切換,對新服務(wù)影響不大。例如叫號系統(tǒng)中,圖書檢索模塊運(yùn)用了基于Symphony Web Service的基礎(chǔ)檢索功能,但用戶對檢索結(jié)果的滿意度不高,當(dāng)圖書館替換集成系統(tǒng)Symphony或升級改造檢索功能時,僅需對檢索模塊進(jìn)行獨(dú)立的升級即可。

同樣,“老系統(tǒng)”中部分模塊已經(jīng)不能適應(yīng)現(xiàn)有的業(yè)務(wù)邏輯,但其他模塊仍可繼續(xù)穩(wěn)定服役,同樣可以重新組織業(yè)務(wù)邏輯,并將與“老系統(tǒng)”的交互部分進(jìn)行服務(wù)化,從而把業(yè)務(wù)從“老系統(tǒng)”中替換。依照這一思路,可以逐步分割“老系統(tǒng)”的功能,一方面適應(yīng)新的業(yè)務(wù)需求,另一方面,“老系統(tǒng)”將會變得越來“瘦”,實(shí)現(xiàn)“老系統(tǒng)”向“新平臺”的穩(wěn)步過渡。即使新一代圖書館服務(wù)平臺選擇了商業(yè)產(chǎn)品,對于擴(kuò)展的新服務(wù)同樣可以采用微服務(wù)的架構(gòu)進(jìn)行擴(kuò)展,運(yùn)用FOLIO的方式方法將這些服務(wù)進(jìn)行統(tǒng)一管理。

基于微服務(wù)架構(gòu)的FOLIO模式,不僅適用于新一代圖書館平臺,同樣可以管理“周邊”服務(wù)。圖書館并非只有圖書館集成系統(tǒng)或新一代圖書館服務(wù)平臺,還有一系列的“周邊”服務(wù)系統(tǒng),少則幾個,多則幾百個,這些系統(tǒng)由不同的廠商或圖書館自身進(jìn)行開發(fā),采用不同的技術(shù)架構(gòu),再加上有些服務(wù)的開發(fā)商已經(jīng)不存在,或者當(dāng)初負(fù)責(zé)開發(fā)的圖書館員存在調(diào)離等情況,使得后續(xù)的系統(tǒng)運(yùn)行和維護(hù)困難重重。而基于微服務(wù)架構(gòu)的FOLIO模式,不僅適用于新一代圖書館平臺,同樣可以把這些“周邊”服務(wù)進(jìn)行統(tǒng)一管理和運(yùn)行維護(hù)。服務(wù)可以由不同的團(tuán)隊(duì)采用不同的技術(shù)進(jìn)行開發(fā),僅需遵循RESTful的通用開發(fā)模式,將接口交于OKAPI統(tǒng)一管理。

5.3?圖書館角色的轉(zhuǎn)變

圖書館集成管理系統(tǒng)提供的服務(wù)是圖書館傳統(tǒng)服務(wù)的核心,包括采訪、編目、流通等業(yè)務(wù),并且業(yè)務(wù)流程與系統(tǒng)流程是高度耦合的。然而,大多數(shù)商業(yè)產(chǎn)品的系統(tǒng)流程,特別是境外公司的圖書館集成管理系統(tǒng),與國內(nèi)圖書館的業(yè)務(wù)流程或多或少都存在差異,尤其是采訪模塊,用外來的系統(tǒng)流程適應(yīng)本地業(yè)務(wù)流程是一件相對困難的事情。

而基于微服務(wù)架構(gòu)的開源平臺方式讓圖書館從被動的使用方轉(zhuǎn)化為主動的需求方,擁有很高的自主選擇權(quán)。圖書館可以提出符合自己業(yè)務(wù)流程的需求,交由開發(fā)方進(jìn)行開發(fā),或者在已有的模塊中選擇適合自己業(yè)務(wù)流程的模塊。同時,本身具有開發(fā)能力的圖書館,也可以進(jìn)行模塊的自主開發(fā),僅需遵循相應(yīng)的規(guī)則,選擇適合的開發(fā)語言和技術(shù)框架。

6?總結(jié)與展望

在互聯(lián)網(wǎng)技術(shù)爆炸的背景下,社會正經(jīng)歷著方方面面的重大的、影響深刻的變革,圖書館也正在經(jīng)歷這些變革。變革影響到傳統(tǒng)圖書館提供的服務(wù)內(nèi)容、服務(wù)方式,促使圖書館自身不斷努力提高對技術(shù)的應(yīng)用。變革也影響到圖書館的用戶,用戶學(xué)習(xí)方式和行為習(xí)慣的改變要求圖書館提供的服務(wù)和新技術(shù)的應(yīng)用要相互滲透和融合。只有進(jìn)一步構(gòu)建便于用戶檢索和利用文獻(xiàn)的平臺,才能充分利用館藏資源為廣大讀者提供便捷的服務(wù)。微服務(wù)架構(gòu)、FOLIO等的出現(xiàn)為解決這一問題提供了新的思路。北京大學(xué)圖書館閉架圖書叫號系統(tǒng)的設(shè)計(jì)、開發(fā)及上線為圖書館贏得了用戶,幫助圖書館樹立了新的形象。

首先,叫號系統(tǒng)針對不同用戶需求在設(shè)計(jì)和實(shí)踐的過程中對FOLIO架構(gòu)進(jìn)行了分析和研究,兼顧了現(xiàn)役圖書館集成系統(tǒng)Symphony、現(xiàn)有工作流程和新一代圖書館服務(wù)平臺的新理念、新技術(shù)。在“老系統(tǒng)”向下一代平臺的過渡時期,叫號系統(tǒng)運(yùn)用FOLIO的技術(shù)和平臺較好地滿足了新時代的用戶需求,更好地解決了“老系統(tǒng)”不能解決或者極難解決的問題。運(yùn)用微服務(wù)架構(gòu)技術(shù),新老平臺的更替對叫號系統(tǒng)等新建設(shè)的系統(tǒng)影響不大,從理論和實(shí)踐上,實(shí)現(xiàn)了新老平臺的平穩(wěn)過渡,為其他圖書館解決此類問題提供了思路。

其次,在設(shè)計(jì)和開發(fā)的過程,雖然叫號系統(tǒng)作為一個較小的應(yīng)用,但打通了基于微服務(wù)架構(gòu)的FOLIO模塊開發(fā)的整個流程,打通了各技術(shù)開發(fā)示例,實(shí)現(xiàn)了各模塊之間的輕量級通訊,并且擴(kuò)展性較好,對實(shí)現(xiàn)技術(shù)的依賴性較小,微服務(wù)部署在不同的物理或虛擬服務(wù)器上,同時,不同的微服務(wù)由OKAPI統(tǒng)一管理,有效解決了各項(xiàng)服務(wù)分散運(yùn)行和維護(hù)的問題,證明了FOLIO的平臺化、開放性、易擴(kuò)展性、云端化等優(yōu)勢,為新一代圖書館服務(wù)平臺的設(shè)計(jì)和建設(shè)提供了范例。

叫號系統(tǒng)是圖書館運(yùn)用FOLIO的一次探索,但也存在一些不足,在自動化部署和輕運(yùn)維方面還未進(jìn)行討論和嘗試,且叫號系統(tǒng)相對新一代圖書館平臺來說是一個相對較為簡單的模塊,未涉及FOLIO處理復(fù)雜業(yè)務(wù)的實(shí)踐。下一步的工作應(yīng)主要包括實(shí)現(xiàn)系統(tǒng)的自動部署和輕運(yùn)維工作以及非開架圖書的統(tǒng)一管理等,向構(gòu)建個性化的新一代圖書館服務(wù)平臺邁進(jìn)。

參考文獻(xiàn)

1?殷紅,劉煒.新一代圖書館服務(wù)系統(tǒng):功能評價與愿景展望[J].中國圖書館學(xué)報(bào),2013,39(5):26-33.

2?肖錚,林俊偉.用微服務(wù)構(gòu)架下一代圖書館服務(wù)平臺——以FOLIO為例[J].圖書館雜志,2018,37(11):63-69.

3?陳武,王平,周虹.下一代圖書館服務(wù)平臺初探[J].大學(xué)圖書館學(xué)報(bào), 2013,31(6):82-87.

4?吳建中.人·技術(shù)·價值觀——關(guān)于下一代圖書館技術(shù)的思考[J].圖書館,2019(4):1-4.

5?周義剛,聶華.新一代圖書館服務(wù)平臺調(diào)研及思考——基于北京大學(xué)圖書館的需求[J].圖書館雜志,2019,38(2):69-78.

6?邵波,張文竹.下一代圖書館系統(tǒng)平臺的實(shí)踐與思考[J].圖書情報(bào)工作,2019,63(1):98-104.

7?劉素清.基于用戶館體驗(yàn)視角的圖書館服務(wù)平臺選擇思考[J].圖書情報(bào)工作,2018,62(14):49-54.

8?CALIS.CALIS新一代圖書館服務(wù)平臺聯(lián)盟[EB/OL].[2019-02-20].http://community.calis.edu.cn/index.html.

9?惠瀾,殷環(huán)環(huán),顧燁青.“面向未來的圖書館事業(yè)和圖書館學(xué)發(fā)展研究”高端論壇綜述[J].大學(xué)圖書館學(xué)報(bào),2019,37(3):5-12.

10?Thnes J. Microservices[J],IEEE Software,2015,32(1):1-116.

11?鄭天民.微服務(wù)設(shè)計(jì)原理與架構(gòu)[M].北京:人民郵電出版社,2018:9.

12?王磊.微服務(wù)架構(gòu)與實(shí)踐[M].北京:電子工業(yè)出版社, 2015:39.

13?李貞昊.微服務(wù)架構(gòu)的發(fā)展與影響分析[J].信息系統(tǒng)工程,2017(1):154-155.

14?鄧杰文,曹彩鳳.微服務(wù)若干關(guān)鍵問題研究[J].五邑大學(xué)學(xué)報(bào)(自然科學(xué)版),2016,30(2):49-54.

15?郭棟,王偉,曾國蓀.一種基于微服務(wù)架構(gòu)的新型云件PaaS平臺[J].信息網(wǎng)絡(luò)安全,2015(11):15-20.

16?李春陽,劉迪,崔蔚,等.基于微服務(wù)架構(gòu)的統(tǒng)一應(yīng)用開發(fā)平臺[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(4):43-48.

17?楊俊偉,紀(jì)鑫,胡強(qiáng)新.基于微服務(wù)架構(gòu)的電力云服務(wù)平臺[J].電力信息與通信技術(shù),2017,15(1):8-12.

18?溫曉麗,蘇浩偉,陳歡,等.基于SpringBoot微服務(wù)架構(gòu)的城市一卡通手機(jī)充值支撐系統(tǒng)研究[J].電子產(chǎn)品世界,2017,24(10):59-62.

19?FOLIO.Open source library services platform[EB/OL].[2020-03-11].https://www.FOLIO.org/.

20?Murray P.FOLIO Wiki[EB/OL].[2020-03-11]. https://wiki.FOLIO.org/.

作者單位:北京大學(xué)圖書館,北京,100871

收稿日期:2019年10月8日

修回日期:2020年3月12日

(責(zé)任編輯:關(guān)志英)

Exploration and Practice of FOLIO Module Construction Basedon Microservice Architecture

—The Case of the Queue Management System of Closed Stacks of Peking University Library

Wang Haoxian?Zhou Yigang?Zhang Naishuai?Zhang Juan

Abstract:With the transformation and upgrading of the traditional integrated library systems, how to connect the old system and the new service to meet the demand of library development and reader service becomes a technical challenge. To explore the micro-service and FOLIO architecture, this article takes the queue management system of closed stacks of Peking University Library as object to introduce the design ideas, system architecture and technology usage. Besides proposing an improved method of library services based on analysis of the database operations of the system, this article also discusses the technical advantages, application scenarios of micro-service architecture and the changing of library roles under this architecture. Finally, it suggests that the micro-service applied on library service and management is innovative.

Keywords:FOLIO; Micro-service Architecture; Peking University Library; Queue Management System

猜你喜歡
北京大學(xué)圖書館微服務(wù)
北京大學(xué)圖書館藏《扎什倫布寺全圖》述略
基于供給側(cè)改革理論的圖書館社交網(wǎng)絡(luò)微服務(wù)研究
微信公眾平臺在醫(yī)院圖書館的應(yīng)用現(xiàn)狀調(diào)查
基于微信企業(yè)號的校園移動服務(wù)
微服務(wù)視角下高職圖書館數(shù)字資源使用分析
從單一模式系統(tǒng)架構(gòu)往微服務(wù)架構(gòu)遷移轉(zhuǎn)化技術(shù)研究