[Abstract] In view of the business development demand, the city bureau of land resources needs to integrate the archive data of the suborpnate counties (city)’s bureau and provide the unified view file query to the market. A pstributed archives data query framework in which the Zookeeper service registration mechanism and the REST service style are used. By means of RESTful Web Service, the remote pstributed data query was resolved. Combined with the full-text index function provided by Lucene search engine, the data query speed and accuracy are enhanced with good application effect in real systems.
[Key words]Zookeeper REST land archives WebService
1 引言
??土资源档案管理是专业性较强的一项工作,由于其中专业档案较多,尤其是地籍资料,具备非常高的查找借助价值。近年来,伴随城市化进程的加快和新农村建设的推进,拆迁安置中引发的土地纠纷也随之增加。国土档案工作可以为调处土地权属纠纷、土地违法案件、信访案件提供很多证据资料,切实维护土地所有者、用户的权益,进一步促进社会的和谐稳定;在解决邻里纠纷、民事诉讼、房子拆迁补偿、办理土地用权证等方面发挥要紧用途。
伴随信息化进步的加快,国土档案管理对象从纸质文档进步到了电子影像文档。档案数据的来源从过去纯粹的单一系统录入,转变到来自不同业务系统。因此迫切地需要集成化的国土档案资源管理软件对数据进行管理。
目前的档案管理软件在归档时需要二次扫描,重复性工作量大。第二,全市国土档案数据在物理上分布于每个县区,各县市区的档案系统没办法提供一个统一的系统入口以供对全市范围的档案数据进行查看,原档案查看过程繁琐。针对这类问题,需要对不同系统的未归档数据和物理上独立分布的已归档数据进行集成,并提供统一的档案查看接口,使档案查看归档愈加快捷便捷,提升档案的借助率。
现在基于WebService的面向服务的构造SOA成为大家解决问题的主要渠道[1]。近年来,表述性状况转移(REST,Representational State Transfer)作为构造被提出,其高可扩展性和简单的部署方法更合适于轻量级的Web服务,特别合适面向资源的应用[2]。基于REST风格构建的网络应用具备便捷集成、提升服务器的可扩展性等优点。基于Zookeeper设计和达成服务的注册发现中心,提升了注册中心的一致性和高性能。基于Node.js达成的Service Gateway(服务网关)可解耦服务买家和服务提供者,对外提供统一的服务调用方法。本文主要研究怎么样借助REST、注册中心和服务网关达成可扩展性好、稳定性高的分布式查看框架,并在此基础上达成松耦合、易查看的国土资源档案信息管理软件的打造,解决不同系统之间的资源集成问题,并使用Lucene对部分重点表的要紧字段与部分文档实时打造全文索引,以提升档案资源的借助率[4]。
2 重点技术
2.1 面向服务的构造SOA
SOA的基本定义:面向服务的体系构造是一个组件模型,其构造思想倡导系统设计与达成相离别,使系统整体设计不再受制于技术达成原因。面向服务的体系构造设计摆脱技术的束缚,为解决异构系统通信与互操作问题提供了一种行之有效的解决方法[5]。在SOA构造的基础上,借助所提供的面向服务的特质,对原有国土资源局及县市区的应用系统的数据库进行剖析,将必要的资源数据转变为可共享的规范服务,然后通过对服务的调用来完成每个应用和系统数据的交互与业务协同,达成异构、分布式应用系统之间的敏捷、迅速、松耦合、高靠谱的应用集成的体系构造[6]。
2.2 REST
REST是2000年Roy Thomas Fielpng博士在他的论文中提出的一个术语。其核心思想是将Web应用中所有信息均抽象为“资源”,而所有操作也都是基于资源完成的[7]。在REST中,觉得Web是由一系列抽象资源组成的。
REST并非一种构造,而是一种约束或者说是设计原则,任何符合该约束的服务或构造都可以称为是RESTful的服务或构造。在RESTful构造中,当顾客请求时,返回资源的一种特定表现形式,比如Json、PDF、XML等。这种基于资源的设计改变了传统的基于动作的设计思想。RESTful Web服务是基于HTTP协议的,Web应用程序通过一致的接口(URI)来暴露资源,推广客户端通过HTTP的四个动作谓词来访问资源[8]。因此可以显式地用CRUD办法,即创建、读取、更新和删除(CRUD,Create、Read、Update、Delete),从而与HTTP服务打造四种映射。 综上,通过RESTful风格设计国土资源档案管理软件可以赋予其高伸缩性、扩展性和灵活性,通过标准的服务来访问档案资源,使整个构造愈加简洁。因此对于国土档案资源在物理上多点分布和系统异构并存的资源环境,用RESTful Web服务是适合的。
2.3 Zookeeper分布式服务注册中心
Zookeeper是一个分布式的框架,应用于解决分布式集群系统的一致性问题。Zookeeper提供了基于类似文件系统的目录节点树方法的数据存储,其不止是存储这类数据,还可以维护和监控数据的状况变化,并将这类数据的最新状况公告给数据服务的用法者[9]。
Zookeeper作为分布式服务的注册发现配置中心,可以对服务提供者和服务买家进行解耦,服务提供者在应用启动时向服务中心注册,服务买家在应用启动时向服务注册中心拉取目前的提供者基本数据[10]。Zookeeper分布式服务注册中心示意图如图1所示。
如图1所示,用socket长连接来维持服务提供者、服务买家(可以是服务网关)和服务注册中心之间的连通性,并通过心跳包来感知服务提供者,服务买家可准时获得到最新的可用服务列表,确保注册中心服务的可用性与构造的健壮性和伸缩性。
(1)健壮性
1)注册中心宕机后,服务买家仍能通过当地缓存的服务目录调用服务提供者;
2)服务提供者无状况,一台宕机后,服务买家依据拉取到的服务信息仍可调用其他服务。
(2)伸缩性:服务提供者无状况,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给服务买家。
3 需要剖析
3.1 数据和系统近况
市国土资源局的每个业务系统打造在信息化进程中的不同时期,所使用的技术和构造存在较大差异,早期系统没解决各系统的数据集成问题,全市档案数据分布于各县市区和市局的档案系统中,因为这类系统使用的技术构造不同,没办法非常不错地集成数据,形成了信息孤岛,从而致使了在档案数据归档时出现重复性工作。加之不动产登记对国土档案数据有着大范围的查档需要,故打造集成化的档案管理软件火烧眉毛。
对上述近况可总结为已归档的档案数据在物理上多点分布,需归档的数据存在于异构的系统中,要在数据层面上以服务的形式进行集成[6]。集成后可以提升档案查看的效率,仅需打开一个浏览器终端页面就能对全市档案进行查看,如图2所示:
3.2 功能需要
在使用RESTful Web服务解决数据集成问题的基础上,对需要进行剖析后得出档案管理软件的功能模块,如表1所示:
4 系统设计
4.1 构造设计
基于RESTful的市国土资源档案管理软件的构造模型如图3所示,大致可以分为6层和一个服务注册中心。
(1)数据源层
数据源层主要包含数据资源和有关业务系统。数据来源主要有OA数据库,江北、海曙、江东和高新区的数据库与ftp服务器上的档案文件。业务系统包含部署在市局的档案、OA系统,地籍系统等,这类系统中的数据正是市档案系统所要集成的。
(2)索引层
Lucene是一个高性能的全文搜索引擎工具,在倒排索引的基础上可达成分块索引,提高了索引的速度[8]。系统从数据库中获得数据,对主要的查看字段形成一个全文检索的库,在检索条件模糊的状况下从索引库检索,从而提升档案查看时的查准率。并且天天定时从数据库中拉取增量数据打造全文索引。
(3)原子服?詹?
原子服务层的服务是标准的、独立的、细粒度的,原则上原子服务是不依靠于其它任何服务的,运行效率和可复用性高。比如将每个系统的数据表中的档案数据分别打造查看的服务,作为最基本的原子服务,向服务注册中心注册,为上层的组合服务提供基础。
(4)组合服务层
组合服务依据档案系统的业务逻辑将原子服务组装成符合业务需要的服务,提供粒度更粗的服务功能,同时能简化推广客户端的调用逻辑。譬如,需要在全市范围内查看一个档案,需要逐个调用5到6个服务,通过服务的组合可以降低业务层在调用服务时的本钱。
(5)服务网关
Service Gateway封装应用的内部结构,简化推广客户端的调用过程,相比起直接调用指定的服务,通过Service Gateway达成服务调用愈加方便。同时推广客户端能提供统一的调用接口,降低推广客户端维护保存服务调用接口地址的本钱。
(6)服务注册中心
服务注册中心作为整个构造中一个要紧的中间件,是整个系统维护各类服务接口的基本数据,在此基础上,基于Zookeeper的注册中心会监听已注册服务的服务器,当监听服务器不可达时,将该服务从注册服务的节点上删除,以保证在注册中心的服务是可用的。
(7)业务层
在原子服务和组合服务的基础上,系统通过调用这类服务来达成档案系统的部分要紧功能,比如全市范围内档案的搜索和文档影像文件的查询功能,与文书档案、业务档案和多媒体的归档、整理、借阅管理和借助率统计等功能。
4.2 构造设计
(1)注册中心数据存储结构设计
Zookeeper内部提供了一个基于ZNode节点的树状模型,可以在根节点下方扩展任意的子节点,其子节点分为四种创建模式,包含持久节点、持久顺序节点、临时节点、临时顺序节点[3]。
根节点是持久节点,可以在根节点下添加其他节点,用服务名字作为子节点的名字,将该类节点称为服务节点,其同样是持久节点。为了确保服务的高可用性,可以发布多个相同功能的服务到同一个服务节点下。依据业务和构造设计,将节点分为原子服务和组合服务两大类,注册中心存储结构如图4所示。 (2)基于注册中心和服务网关设计达成服务的高可用属性
每一个服务节点下都有多个节点提供相同种类的服务,当买家发起调用时,服务网关依据从注册中心拉取到的服务列表逐个调用该类服务直到调用成功,这种错误从试的调用方案提升了服务的可用性和系统稳定性。依据调用方案亦可达成软负载均衡的功能。可用性设计如图5所示:
4.3 基于Node.js的服务网关的设计
Node.js是一个基于Chrome V8引擎的Javascript运行时环境,它用了一个事件驱动且“异步非阻塞I/O”的模型,使其很轻量高效,因此可基于Node.js来设计和开发服务网关。
服务网关(Service Gateway)是服务构造中的核心组件,它是服务请求的门户,是调用具体服务端的桥梁,服务网关类似经典设计模式中的店面模式,它将底层的复杂细节进行屏蔽,解耦服务调用者和服务提供者之间的关系,对外提供简单且统一的调用方法,如HTTP方法。
服务调用者将服务名放到请求头中,服务网关分析该请求,从注册中心获得该服务的提供者,并依据肯定的规则,比如随机、错误从试和随机调用等规则来调用服务提供者,调用过程如图6所示:
5 系统构造具体达成
5.1 系统服务化的达成
(1)资源的分类标准
标准的Web服务是档案系统查看、管理、归档和集成不同数据源的规范基础,依据REST的设计原则,可以将资源的CRUD操作对应于HTTP的POST、GET、PUT、DELETE四个种类的请求。依据《宁波国土资源局归档范围、分类策略及保管期限表》,确定档案资源的分类和命名规则,将综合类、会计类、土地类、地籍类、土地规划类、建设用地类、故土资源监察类、科技类、电子声像类和地质矿产类,依次以A到I命名。
(2)发布接口的概念
依据REST的设计原则与档案的分类,部分服务接口的模板概念如表2所示:
(3)接口的达成
JAX-RS即Java API for RESTful Web Services,是java达成RESTfulWEB服务的规范,而Apach CXF是对JAX-RS的一种非常不错的达成,借用于Spring可以较好地将Apach CXF框架集成到项目中。
5.2 组合服务达成
组合服务层是依据业务进行组合过的原子服务,可满足复合业务需要。在档案管理软件的查看服务中,因为档案数据所在地不同,需要访问4~5个不一样的原子服务接口才能查看全部档案,这增加了推广客户端调用的本钱,故将原子服务组合成一个便捷调用的服务接口。比如,推广客户端请求C类档案的查看服务:
(1)第一推广客户端向服务网关请求C类档案的服务,服务名为“queryC”;
(2)服务网关分析推广客户端的请求,获得服务名为“queryC”的服务节点的信息;
(3)服务网关实行反向代理;
(4)组合服务从注册中心的“/atomService/”路径下获得所有服务名是“queryC”下面的服务提供者节点;
(5)依据获得到的服务提供者节点,分别调用该服务;
(6)将原子服务返回的结果合并,并返回给调用者。
5.3 服务注册达成
服务注册在应用启动时,自动将要发布的服务注册到服务中心。第一将获得到什么服务需要注册,借用java的反射扫描指定的包下的Class获得到什么有“@Path、@GET”等注释的类和办法,这类加了该注释的办法就是需要发布的服务,并获得注释中的服务路径、参数等属性。
6 结束语
针对国土档案资源物理上多点分布、归档数据存在于异构系统中的近况。本文设计和达成了基于Zookeeper的档案资源分布式查?框架,并对应达成了的Zookeeper服务注册中心和基于NodeJs的服务网关,使得系统具备了接口统一,与调用便捷、易扩展、松耦合等特质,在此基础上完成了资源的概念、数据的集成,REST服务的发布及其他业务功能的设计和达成。基于上述框架的档案资源管理软件解决了目前遇见的数据集成问题,在实质运行中成效好。将来还需要增强服务网关的靠谱性,增加服务网关对服务的监控功能,包含服务的调用次数和调用耗时等,使能对系统服务运行状况有基本的认知。