基于微服务架构的FOLIO模块建设探索实践与思考.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《基于微服务架构的FOLIO模块建设探索实践与思考.docx》由会员分享,可在线阅读,更多相关《基于微服务架构的FOLIO模块建设探索实践与思考.docx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于微服务架构的FOLIO模块建设探索、实践与思考王昊贤摘要在传统图书馆集成管理系统转型换代之际,“老系统”和“新服务”如何衔接以满足图书馆发展需求和提供读者服务成为图书馆建设的技术难点。文章从微服务与FOLIO架构作为切入点,以北京大学图书馆闭架图书叫号系统为例进行探索,介绍了基于微服务架构的FOLIO模块实践的设计思路、系统架构和技术使用,并通过分析系统应用数据,提出了优化图书馆服务的对策和建议;从微服务架构技术优势、应用场景和微服务架构下的图书馆角色转变等角度进行了讨论,总结了微服务技术在图书馆管理和服务中的创新意义,可为其他图书馆提供参考借鉴。关键词FOLIO微服务北京大学图书馆叫号系
2、统分类号G252DOI10.16603/j.issn1002-1027.2020.04.0041引言无所不在的网络、无所不在的计算、无所不在的数据、无所不在的知识和无所不在的想象已成为当下大学生的主要生活方式和工作模式。随着作为互联网世代的“90后”和“00后”逐渐成为图书馆的主要用户群体,用户的需求已不再局限于图书馆的传统服务,而更趋向于自动化和智能化,这对图书馆的工作提出了新要求,传统的图书馆工作流程和服务方式与新时代的用户需求之间产生了明显的代沟。信息科学技术的发展使得传统的图书馆集成管理系统(ILS)在资源管理和业务流程管理上受到了冲击,“新一代图书馆服务平台”成为学界的讨论热点。早在
3、2013年殷红、刘炜就指出原有的“图书馆集成管理系统”已完全丧失了“集成”性1。面对这一困境,肖铮、林俊伟认为新一代图书馆服务平台应具有:平台化、开放性、易扩展性和云端化等特征2。陈武等认为下一代图书馆服务平台应充分利用最新的云计算技术和架构的优点,以降低软硬件维护成本3。吴建中认为,下一代图书馆技术要把体现增值功能、突出用户本位、适应事业发展放在重要位置, 同时要加强系统的扩展性、安全性和个性化4。周义刚、聂华结合北京大学图书馆的实际需求,提出了北京大学图书馆的需求框架5。如何开发能满足时代要求和用户需求的平台,邵波、张文竹结合南京大学图书馆系统平台的实践讨论下一代图书馆平台的难点和对策6;
4、刘素清从用户体验视角进行研究,分析得出开源项目FOLIO的推出为图书馆服务平台的选择提供了新的思路,其核心目标是建设一个开源的、基于云服务的应用程序框架,以实现不同开发团队之间的协作7。2018年,中国高等教育文献保障系统(CALIS)新一代图书馆服务平台联盟成立,为基于FOLIO的新一代图书馆服务平台建设打下了坚实的基础8。结合读者需求,抓住FOLIO发展、探索与应用的契机,2018年,北京大学图书馆运用基于FOLIO的微服务框架进行了闭架图书叫号系统开发,实现了通过开源程序来管理馆藏资源和提升图书馆服务质量的目标。同年,CALIS也运用FOLIO架构升级了CALIS馆际互借系统。2微服务架
5、构与FOLIO2.1单体架构、SOA与微服务架构单体架构应用是功能集中、代码和数据中心化、一个发布包、部署后运行在同一进程的应用程序。面向服务的架构(Service Oriented Architecture,SOA)是一个组件模型,它将应用程序的不同功能单元进行拆分,并通过这些业务系统之间定义良好的接口和契约联系起来9。微服务(Micro-services)架构SOA有相同之处,在 SOA之上升华,是一些具有足够小的粒度、能够相互协作且自治的服务体系,每个服务仅关注于完成一个具体业务并能够良好地完成该功能10-12。微服务架构强调的是业务彻底的组件化和“微”服务化,原有的单个业务系统会拆分为
6、多个可以独立开发、设计、运行的微服务,这些微服务之间通过API完成交互。单体架构、SOA与微服务架构如图1所示,SOA的总线是一根管道,用来连接各业务应用,为了集成不同的子系统、不同的协议服务,总线做了消息的转化解释和路由工作,让不同的服务互联互通。微服务中的API网关是一个独立的服务,是系统的唯一入口,所有的客户端和消息端都通过统一的网关接入微服务。不同的微服务间也是通过API进行轻量级通讯。单体架构、SOA与微服务架构在组件大小、耦合程度、团队架构等方面的对比如表1所示。微服务的特性使其在系统设计开发应用中具有一定的优势,并且越是在规模庞大的软件项目中其优势越明显13。优势包括:(1)独立
7、性。不同的服务间耦合程度低,有明确的任务和功能。(2)技术选择灵活。服务间通过API进行通讯,开发团队可根据自身情况,选择适合的架构和开发语言。(3)独立部署。更便捷的借助容器(如Docker)独立部署,且进程隔离14。微服务架构自产生就被业界广泛应用,例如,新型云件PaaS平台15、统一应用开发平台16、电力云服务平台17、城市一卡通手机充值支撑系统等18。微服务架构也为新一代图书馆服务平台的建设提供了新的思路。与此同时,在现有图书馆集成管理系统退出历史舞台到新一代图书馆服务平台开始服务的过渡时期,可以基于微服务架构,将图书馆的新增服务统一设计、组织、管理。2.2FOLIO微服务架构FOLI
8、O(The Future of Libraries is Open)项目成立于2016年,由图书馆、开发者和服务提供方共同发起,并于2019年发布Aster版本 19。FOLIO平台(见图2)采用微服务架构20,数据层支持PostgreSQL、Oracle、MongoDB等多种数据存储技术;系统层主要负责索引、日志、租户配置等;OKAPI是 FOLIO平台的网关,负责租户和APPs间的通信;应用层为应用程序,包括采访、编目、流通等传统模块,以及支持扩展模块;UI层可以运用React、VUE、Angular等技术开发用户界面,以适应不同用户在不同场景下使用的需求。其中OKAPI是FOLIO的核心
9、,各业务功能被划分成相互独立的微服务,将RESTful API接口信息以及代理或托管信息提交到OKAPI。用户访问OKAPI HTTP服务,OKAPI通过接口URL确定用户需要调用的API,然后通过代理或托管信息找到实际服务的地址,将请求轉发到实际服务的地址。完整的FOLIO-APP的基本构成(见图3)包括UI模块、后端模块和存储模块,UI模块负责前端页面交互,后端模块负责业务逻辑,存储模块负责实现特定的持久化措施。服务型FOLIO-APP主要包含后端业务模块和存储模块,业务逻辑型FOLIO-APP主要包含后端业务模块,前端型FOLIO-APP主要包含UI模块。3FOLIO在北京大学图书馆的实
10、践北京大学图书馆闭架借书处一直使用读者递交索书单,工作人员按条找书的传统服务方式,整个工作流程中存在着诸多困难。例如,有时读者手写不清、誊写信息错误,导致工作人员分单取书困难;由于空间有限,部分外文图书同一分类分放在不同的楼层,找书要依靠读者查询填写馆藏位置,如果读者不清楚借阅规则,则不得不进行二次检索,增加了借书难度;馆藏查询与借书时间不同步,读者填写索书单时图书可能已经是借出状态;读者借阅的是非闭架图书,却误到闭架借书处提交索书单,导致借书请求无法满足等。针对这一系列问题,为了将闭架借书服务从线下手工作业流程提升到线上系统操作,北京大学图书馆开发了闭架图书叫号系统(下文简称叫号系统),是基
11、于微服务架构的FOLIO模块建设的一次有意义的探索和实践。3.1以用户为中心的设计以用户为中心的设计(User-Centered Design),其核心思想就是在产品开发的每个阶段都把用户特征纳入考虑的范围。系统设计的初衷在于为读者提供更便捷的借书方式、缩短获取馆藏资源的时间,同时减轻工作人员的工作量,并直观分析用户行为,为完善工作流程,进一步提升工作效率提供依据。叫号系统对现有流程做出了优化调整,用户与系统交互的流程如图4所示。优化后,读者无需手工填写索书单,查询与提交请求一次完成,节省时间和精力,并省去了图书馆工作人员分单和索书单由运书电梯上行的环节,简化了借书流程,打印出来的索书单和索书
12、号清晰准确,图书定位准确,可借状态准确,借书效率更高。3.2叫号系统架构与主要开发技术在叫号系统的业务分析中,对叫号业务涉及到的统一认证、馆藏检索、叫号业务处理以及FOLIO的一系列基础服务等环节进行相应的微服务的分解,不同微服务之间的关系是低度耦合的,单项微服务只负责单一任务,不同微服务之间通过RESTful请求通讯,在保证RESTful API稳定的情况下,各模块升级互不影响。其中,统一认证服务主要负责用户的认证、身份信息、权限获取,并通过发送RESTful请求的方式与FOLIO基础服务中的用户模块进行通讯;馆藏检索服务主要负责与图书馆集成系统Symphony的通信、检索以及检索结果的处理
13、;叫号业务处理服务主要负责读者请求的建立以及处理等;FOLIO的基础服务包括模块认证、权限管理、用户管理等。叫号服务在FOLIO平台中的角色为应用层众多应用(APP)中的一个应用,叫号服务与OKAPI的关系如图5所示。FOLIO的系统架构支持了前后端分离的开发方式,后端及存储模块负责业务逻辑,而前端模块主要负责呈现、用户交互等。从技术选型角度,FOLIO支持了多语言、多框架的技术,具有很高的灵活性、适应性、兼容性和可扩展性,不同模块间互不影响,不同的开发团队可以根据其技术栈选择不同的技术。各技术和框架各有优势,在遵循FOLIO OKAPI支持的RESTful通讯模式,开发团队可选择适应业务流程
14、所需的、团队擅长的语言和技术框架,而不仅仅局限于FOLIO已经使用的技术框架,例如FOLIO OKAPI运用Vert.x框架。FOLIO-APP结构与叫号系统采用的主要技术如图6所示。后端模块支持多语言、多种技术开发,例如Spring Boot、Nodejs、Django等,具有很强的灵活性,适应不同技术团队的开发。叫号系统后端模块运用RESTful开发模式,采用Spring Boot技术将业务逻辑包装成RESTful API接口,与其他模块进行RESTful模式通讯,叫号系统模块的修改和升级不影响其他模块,其他模块在保证接口稳定的情况下的升级和扩展同样不影响叫号系统模块,保证了平台的兼容性和
15、可扩展性。Spring Boot是由Pivotal团队提供的框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。与OKAPI的通讯采用代理模式,即OKAPI不负责模块的运行,仅将请求转发给指定的URL,后端业务模块将API接口信息和代理信息提交给OKAPI。存储模块采用Mybatis和MySQL数据库,MyBatis基于 Java语言的持久层框架,支持定制化 SQL、存储过程以及高级映射,使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Ob
16、jects)映射成数据库中的记录。前端模块采用React、Ant Design技术实现多终端的用户交互界面。React起源于Facebook的内部项目,由起始的JavaScript MVC框架扩展成一套前后端Web APP解决方案,主要用于构建UI,可适用于服务器、浏览器和移动终端,与Angular、VUE并称为目前流行的三大开源UI框架。React的核心思想是封装组件,各个组件维护自己的状态和 UI,当状态变更,自动重新渲染整个组件。在叫号系统前端模块中,发挥前端控制层作用,并提供了前后端数据通讯的通道。Ant Design是蚂蚁金服体验技术部出品的基于React的UI库,包含设计原则、控件
17、规范和视觉尺寸以及配套的前端代码实现方案等,满足了多用户适应不同终端的需求。3.3部署上线服务叫号系统采用了前后端分离的开发方式,也支持了前后端分开打包部署的方式,前后端模块可部署在相同或不同的服务上。叫号系统后端模块运用Maven打包方式,可直接发布为可运行Jar包。前端模块运用Webpack打包,生成若干个HTML、JS、CSS以及图片等静态文件。Nginx是一个轻量级的高性能的HTTP和反向代理Web服务器,具有支持高并发链接、占用内存较小、配置文件简洁、支持热部署等优势。因此,将前端模块部署到Nginx服务器,同时,为保障用户在使用系统服务时的个人信息安全,运用Nginx服务器反向代理
18、的方式启用HTTPS服务。另外,叫号端采用了桌面虚拟化技术,通过终端设备连接到位于数据中心的虚拟桌面提供持续稳定的服务,保证了叫号端的稳定性。系统的部署采用了先进的技术,不仅使得部署过程便捷简单,并且保证了服務的安全性和稳定性。4系统应用数据分析基于微服务框架开发的闭架图书叫号系统强大的统计功能为提升用户体验、改进管理方式提供了数据支撑。叫号系统于2018年12月24日试运行,试运行当日完成了91册图书的借阅请求,自试运行开始至2019年9月30日,共计有10000余名读者登录系统,产生了124000余条检索(含翻页)数据和37000余条图书借阅请求数据。如图7所示,96%的图书借阅请求正常结
19、束,可见读者借到书的成功率较高,但仍有4%的请求异常结束,其中42%为读者取消借阅申请,图书未找到的占32%,逾期未取书的占26%。完成借书流程时间指的是从读者检索提交借书申请到读者拿到书完成整个借书流程的时间差(见图8)。据统计,一位读者最快33秒完成了整个闭架借书流程,1500余条请求在1分钟内完成,半数以上请求在6分钟内完成整个借书流程,80%的请求在12分钟内完成。對读者提交借书请求的时间进行分析,如图9所示,10:00-11:00、12:00-13:00和15:00-16:00出现三个峰值,这与学生的课间休息和午餐时间基本相符;8:00-10:00与其他时段相比,借书请求数相对较少。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 微服 架构 FOLIO 模块 建设 探索 实践 思考
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内