基于ElasticSearch 的元数据搜索与共享平台

2015-11-26 01:08唐志贤
计算机与现代化 2015年2期
关键词:租户分布式水利

姜 康,冯 钧,唐志贤,王 超

(河海大学计算机与信息学院,江苏 南京 211100)

0 引言

随着物联网、云计算、移动互联网和RS 技术在水利行业中的广泛应用,中央、流域以及各地水利单位积累了大量分布异构独立的水利业务数据[1],如何实现这些数据的互联互通、信息共享、业务协同,成为水利信息化深入发展的迫切要求。建立水利领域的数据资源搜索与共享平台是整合信息资源,深度利用分散存储数据的有效途径。目前一些水利单位采用构建水利资源目录服务系统的方式来支持数据共享与发现[2-4],然而各单位的目录服务系统仍然存在相互独立、重复建设等问题,无法形成有效的数据共享。与此同时,随着水利数据的迅速增加,集中式的目录服务系统已经无法满足海量、高并发的访问请求。因此,建立水利数据的搜索与共享的云平台,对海量、分散、异构的水利数据进行整合,提供高效的查询与共享方式,成为水利领域内迫切需要解决的问题。

ElasticSearch[5]是一个支持分布式、多租户[6]、Restful 设计的开源搜索工具。业界针对ElasticSearch处理海量业务数据搜索与数据集成进行了广泛的研究与实践。王占宏等人[7]利用ElasticSearch 对公安系统内部的多套系统资源进行整合,通过提供统一的查询入口,提高了系统数据检索的处理能力与查询效率。Jara A.J.等人[8]使用ElasticSearch 构建了一个弹性扩展、易于部署、接口简单的移动发现平台,用户可以利用该平台注册与存储物联网设备生产的数据,并支持用户发现可以访问的资源。Singh A.等人[9]针对企业业务平台在集成多个云服务后,无法无缝查询与监控各个云服务系统的日志问题展开了研究,利用ElaticSearch 的多租户机制,建立了海量数据存储与搜索云平台,帮助用户记录、查询与监控云服务的日志。Konoenko O.等人[10]利用ElasticSearch 对传统问题追踪器进行改造,把每个问题建立为一个文档,把问题的相关内容抽象为索引的字段,当问题发生变化时同步创建索引文档,帮助开发人员定制问题追踪视图,掌握所涉及到的关键问题,如bug 修改、代码评审等。上述文献提供了相关领域中ElasticSearch 对海量数据处理、检索与共享的方法,但是在构建水利元数据搜索与共享平台时,还面临着水利领域异构数据的处理[11]、租户的索引归属问题[12-13]、数据共享的方式[14-15]等问题。

本文在采用ElacticSearch 技术的基础之上,针对构建水利数据搜索与共享平台的需求展开研究。由于对水利异构数据建立索引困难,本文采用统一的元数据标准对其进行规范化描述,以建立映射规则的方式,构建元数据与索引文件之间的转换桥梁;Elatic-Search 支持的索引隔离机制,没有对租户操作进行限制,会导致租户误操作等问题,因此本系统采用多租户的访问控制策略,让搜索与共享平台以租户为单位进行索引数据的划分,保证了租户数据的安全性与一致性;ElasticSearch 把对索引资源的操作抽象为对URI 形式的接口的访问,但是缺少对接口的访问控制与共享范围的控制,因此本系统建立了用户共享视图表用于限制共享对象与数据共享的粒度。

1 技术概念

1.1 ElasticSearch

ElasticSearch 提供了一个支持高并发、高可用、易扩展的分布式搜索解决方案,RESTful 风格的设计,能够提供易用的查询与共享接口。它在解决大数据相关问题中的良好表现,使得它成为企业级大数据解决方案中的首选工具之一,下面是它的主要特性:

1)多租户支持。在共用的数据中心内,以单一架构与服务提供多个用户使用,并提供定制化的服务。ElasticSearch 支持多个索引间的数据隔离,从底层支持了多租户技术。

2)分布式。当多个节点存在同一网段下,设置相同的集群名称,即可组成一个分布式集群。良好的横向扩展设计,在数据规模的增长的情况下,可以弹性地增加服务器资源。

3)高可用性。ElasticSearch 采用无中心化的集群设计方式,集群中的中央节点出现故障后,Elastic-Search 会自动遴选出一个新的节点作为中央节点,并自动进行数据分片的迁移,保证用户数据的安全与访问。

4)全文搜索。ElasticSearch 底层采用了Lucene实现,支持Lucene 所有的功能。

5)索引机制。ElaticSearch 创建的索引包含以下几个概念:索引、索引类型、Mapping、数据类型。与关系型数据库相比较,索引相当于数据库,索引类型相当于数据表,Mapping 相当于表结构,数据类型相当于列。单个索引中可以存在多个索引类型,索引类型由基本数据类型构成,同一索引类型可以由多个索引共享。ElasitcSearch 采用的索引机制为异构数据的存储提供了新的思路。

6)RESTful 风格的API。REST 是以资源为中心,把Web 看作一系列具有不同具体表现形式的抽象资源的组成,利用URI 来标识资源,并提供HTTP 协议形式的统一访问接口。利用RESTful 架构,Elastic-Search 可以实现资源的封装,并利用Rest 接口提供共享与检索服务。

1.2 RBAC 模型

基于角色的访问控制(Role Based Access Control,RBAC)[16-17]模型支持最小特权与责任分离原则,提出角色的概念,将主体和客体分离,主体通过角色获得权限来对客体进行访问,RBAC 模型让访问控制变得更加灵活,简化了权限管理,明确了责任的分配。

2 系统模型设计

如图1 所示,基于ElasticSearch 的元数据搜索与共享平台主要包括元数据存储模型、元数据信息抽取模型、创建索引模型、多租户访问控制模型、服务共享模型等。

图1 系统模型

元数据存储模型为搜索与共享平台的数据源,提供元数据注册与收割2 种获取水利元数据的途径,元数据注册为水利业务系统提供元数据注册服务接口,水利业务系统通过调用注册接口可以把生产的元数据存储到平台中,元数据收割是在获得用户数据库访问权限后,抽取数据库中的元数据并存储到平台中;元数据信息抽取模型用于从平台存储的元数据中抽取可以标识元数据的核心信息;索引构建模型对抽取的元数据信息构建分布式索引;多租户访问控制模型用于控制用户对索引资源访问,保证平台中索引资源的一致性与安全性;检索与共享模型提供了检索与多粒度数据共享的方法。下文将针对元数据信息抽取、索引的构建、多租户的访问控制策略、检索与共享服务4 个方面进行描述。

2.1 元数据信息抽取

各个水利业务系统中,存在大量的异构元数据,主要表现为元数据数据项命名规则的不统一。针对异构元数据创建的索引,会导致搜索结果出现语义不一致的问题。因此需要对异构的元数据建立映射规则,定义异构元数据与索引之间的转换方式。水利元数据拥有很多数据项,从搜索的角度无需对所有元数据数据项建立索引,只需挑选出能够区分出元数据的核心项,对其建立索引。水利数据包含遥感影像数据、矢量数据、关系数据等多种形式,这些元数据共性的属性如摘要、创建时间、文件名称、联系方式等,可以作为共用的字段写入映射表。而元数据中一些可以标识元数据的非共性的属性,如遥感影像中的卫星信息,则作为可选字段写入映射表。通过对各种类型的元数据设置映射表,则屏蔽了异构元数据之间的差异性,并可利用共性与特有属性之间的差异性更好地定位元数据。

图2 元数据与索引映射关系

图2 反映了元数据与索引之间的映射关系。水利元数据通常采用XML 形式的文档进行存储,元数据模板即XML Schema 文件,用于规范水利元数据的类型与格式,映射关系给出了元数据中指定信息的xpath 路径,通过xpath 可以获得对应的元数据属性数据。索引模板定义了索引结构,用于设定对应元数据信息在索引中的表现形式,包含数据类型、是否存储、是否分词等信息。通过上述映射关系,可以把异构的元数据映射为ElasticSearch 可识别的数据格式。

2.2 构建索引

由于ElasticSearch 支持分布式索引服务,对于使用者来说,只需要调整索引存储节点的分配策略即可实现系统的分布式运行要求,因而构建索引的问题集中到了异构元数据的处理上,由于基于XML 的水利元数据通常由XML Schema 进行约束,因此索引类型中的数据类型可以从相应的Schema 文件中获得,Schema 在平台中是唯一的,保证了索引类型与元数据类型的一一对应。ElasticSearch 创建的索引在逻辑上是隔离的,不同用户创建的索引文件互不干扰,为用户之间的数据共享提供了支撑。ElasticSearch 是面向JSON 文档进行操作的,平台通过把抽取的元数据信息转换为JSON 格式的文档,利用创建好的Mapping 对JSON 文档进行匹配来创建索引,创建索引的具体流程如图3 所示。

图3 构建索引流程

2.3 多租户的访问控制策略

虽然创建的单个索引是逻辑隔离的,由于无法控制索引的访问范围,无法保证搜索与共享平台用户数据的安全性与完整性,针对上述问题,本文提出基于多租户的访问控制策略,该方法在RBAC 模型基础上结合水利多租户的特征,以水利单位作为整体进行角色的划分,形成租户与租户组多层角色赋予机制,有效地控制了不同单位之间数据的访问控制。本节将围绕基于多租户的访问控制策略中租户组与租户的划分、角色赋予、权限赋予、操作4 个方面进行阐述,各部分的授权关系如图4 所示。

图4 基于多租户的访问控制

租户是使用搜索与共享平台的用户,租户组是一个单位租户的集合,租户与租户组分别对应水利单位用户与单位内所有用户,租户按对索引操作的分工可以划分为平台管理员(SA)、资源拥有者(OA)、资源访问(VA)3 种角色。其中平台管理员角色对应的租户不属于任何租户组,平台管理员负责租户创建索引文件的维护、存储节点状态的管控、集群的维护等;资源拥有者可以创建索引资源、管理租户组中的索引资源、管理索引可见性范围、管理租户组成员等;资源访问者拥有基本的索引资源访问权限。多租户模式下,租户内创建的组内共有资源为租户组所有,租户创建的私有资源则只有租户可见。因此针对索引资源设计了3 个层级的访问可见性范围,即全局可见、租户可见、组内可见,通过设置索引的可见性范围,可以灵活控制用户对索引资源的操作。

系统依据用户访问的要求对权限分类为索引可见性权限、索引操作权限、以及租户组成员授权等。系统将权限分配给角色后,通过指派用户的角色可以执行对资源的操作。用户作为访问索引资源的主体,索引资源是被访问的客体,只有拥有权限的主体才有访问客体的权限,主体对客体的访问请求给予相应资源的操作权限。水利单位作为租户只可以对权限范围内的索引进行访问操作,通过索引可见性范围以及租户、索引、索引类型3 层索引管理机制的设定,可以实现数据共享与访问的细粒度控制。

2.4 检索与共享服务

ElasticSearch 采用了RESTful 设计风格,其创建的所有索引资源使用了统一资源标识符(URI)进行统一描述。ElasitcSearch 提供了GET、POST、PUT、DELETE 四种动作来操作索引资源,其中GET 方法用于查询索引资源,POST 方法用于更新索引资源,PUT 方法用于向索引文件中增加记录,DELETE 方法用于删除索引资源。在多租户访问控制策略下,不同角色对应的租户对索引资源的操作范围各不相同。

在对索引进行搜索时首先需要确定搜索范围,即当前租户可见的索引。租户依据赋予的角色可以获得当前的可见性范围:group 为租户组可见范围内的索引,group_admin 为租户可见范围内的索引,global为平台全局可见索引。针对平台中的3 种角色,平台管理员SA、资源拥有者OA 与资源访问者VA,对索引的访问可见性范围分别定义为:SA_index={all/* },OA_index={group,group_admin,global},VA_index={group_index,global_index}。表1 展示了租户所属的角色对应的搜索范围,表中的URI 地址为搜索的Rest 服务,通过搜索范围的限制,可以保证多租户环境下的数据隔离与安全。

表1 搜索范围控制

针对水利单位的多种共享需求:共享某测站某天的水位数据,共享A 卫星传回的遥感影像数据,共享某地区水利政务数据。从技术角度分析以上共享需求,可以抽象为:数据类型与记录级的共享、索引类型级的共享、索引级的共享。采用建立用户共享视图表的方式设置共享的对象、共享的范围、共享的索引与索引类型,服务调用方通过访问用户共享视图表生成的URI 地址的方式获得共享数据。因此,租户可以通过设置用户共享视图表中的信息的方式控制URI地址的形式,从而满足水利数据的多种粒度共享需求,并提高了共享的灵活性。

3 搜索与共享平台实现

3.1 系统实现

依据上述系统模型实现了基于ElasticSearch 的元数据搜索与共享平台,平台主要由元数据管理模块、元数据抽取模块、索引映射模块、索引构建模块、索引存储模块、分布式集群、多租户访问控制模块、用户共享表、共享与检索服务模块构成,各模块之间的关系如图5 所示。

图5 系统模块与关系图

1)元数据管理模块负责接收各个水利单位在平台的中存储元数据,按照单位、元数据所有者、元数据类型来管理数据库中的元数据。

2)元数据抽取模块,按照索引配置项从元数据库中抽取出元数据指定xpath 对应的信息。

3)索引映射模块,使用映射表屏蔽不同元数据类型的差异性,利用统一的数据规范定义数据。

4)索引构建模块,针对指定元数据创建相应的索引Mapping,把映射后的数据转换为JSON 文档,与Mapping 匹配后建立索引。

5)索引存储模块,把创建好的索引存储到分布式集群中。

6)分布式集群模块由3 个节点构成,节点中分别部署ElasticSearch server,设置server cluster 为相同网段,利用ElasticSearch 的广播监听机制连接各个节点,组成分布式索引集群。

7)多租户访问控制模块,控制用户对索引资源的访问请求,保证用户数据的安全性与一致性。

8)用户共享视图表存储了数据共享的信息,用户可以填写索引、索引类型以及数据的访问者,当访问者需要访问指定数据时,可以查8)询共享表信息,从而获得当前可见的索引数据。

9)共享与检索服务,利用RESTful 服务接口封装了索引资源的操作,用户利用URI 地址可以对索引资源进行访问。

3.2 运行实例

水利元数据搜索与共享平台实现了多个水利单位共用系统,为各个水利提供数据搜索服务,并支持各个水利单位之间多种粒度的数据共享。图6 为平台运行实例,平台中租户可以拥有多个索引资源的操作权限,每个索引中可以存在多个索引类型。“mwr”为平台租户,其属于水利部租户组,该用户登陆平台后,其搜索可见性范围为水利部内部可见索引。

图6 针对租户提供的个性化搜索界面

当租户需要共享指定类型的数据时,把共享需求填入用户共享视图表中,系统通过构造URI 地址来实现指定粒度的数据共享。例如水利部租户向用户A 共享水利部的“ZY”卫星传回的遥感影像数据,该租户需要在用户共享视图表中填入需要共享的索引、索引类型、共享对象,系统则构造一个URI 地址:ip:9200/mwr_index/ZY_img,用户A 则可以通过Rest 服务提供的GET 操作访问该URI 地址,从而获得指定索引类型的数据,满足了水利数据共享时粒度控制的要求。

4 结束语

本文实现了基于ElasticSearch 的水利元数据搜索与共享平台,通过租用搜索与共享平台的软件服务,中央、流域与地方各级水利单位无需重新开发一套搜索与共享服务系统,分布式的解决方案适应了水利领域高并发、高伸缩性的查询请求,多粒度的数据共享方式有力地支持了单位之间数据共享与发现。下一步将针对搜索与共享平台的索引资源提供更多服务,例如对水利行业的数据进行挖掘与分析等,让水利行业的数据发挥出更多的价值。

[1]水利部水利信息化工作领导小组办公室.2012 年度中国水利信息化发展报告[M].北京:中国水利水电出版社,2013.

[2]冯钧,唐志贤,黄如春,等.水利信息资源元数据管理方法研究[J].水利信息化,2011(5):1-4.

[3]王国复,孙超,何小明,等.气象目录服务系统的设计与实现[J].地球信息科学学报,2009,11(1):24-29.

[4]胡明明,唐宇,李军,等.一种基于目录服务的分布式空间元数据检索方法[J].计算机工程与科学,2011,33(8):162-166.

[5]Rafal Kuc.Elasticsearch Server[M].Packt Publishing Limited,2013:2-80.

[6]Bezemer C P,Zaidman A.Multi-tenant SaaS applications:Maintenance dream or nightmare[C]// Proceedings of the Joint ERCIM Workshop on Software Evolution(EVOL)and International Workshop on Principles of Software Evolution(IWPSE).ACM,2010:88-92.

[7]王占宏,王战英,顾国强,等.分布式弹性搜索研究与实践[J].微型电脑应用,2014,30(7):9-12.

[8]Jara A J,Lopez P,Fernandez D,et al.Mobile digcovery:Discovering and interacting with the world through the Internet of things[J].Personal and Ubiquitous Computing,2014,18(2):323-338.

[9]Singh A,González-Vélez H.Hierarchical multi-log cloudbased search engine[C]// Eighth International Conference on Complex,Intelligent and Software Intensive Systems.2014:211-219.

[10]Kononenko O,Baysal O,Holmes R,et al.DASHboards:Enhancing developer situational awareness[C]// Proceedings of the 36th International Conference on Software Engineering.2014:552-555.

[11]张宇,蒋东兴,刘启新.基于元数据的异构数据集整合方案[J].清华大学学报(自然科学版),2009,49(7):1037-1040.

[12]李保栋,孔兰菊,陆春生,等.SaaS 交付平台多租户数据管理模型研究[J].小型微型计算机系统,2012,33(12):2658-2663.

[13]徐栋,顾春华.SaaS 数据层的多租户设计模式研究[J].计算机应用与软件,2013,30(5):216-219.

[14]孙杨.基于REST 风格构建Web 服务的研究与应用[D].成都:电子科技大学,2009.

[15]毛峰,刘婷,刘仁义,等.基于REST 面向资源的地理信息服务设计[J].计算机工程,2011,37(8):238-240.

[16]Jinshuo L,Nanhai Y,Yuan L.A simple implementation of distributed vertical search and information integration technology[J].Wuhan University Journal of Natural Sciences,2013(6):511-516.

[17]王小威,赵一鸣.一种基于任务角色的云计算访问控制模型[J].计算机工程,2012,38(24):9-13.

猜你喜欢
租户分布式水利
为夺取双胜利提供坚实水利保障(Ⅱ)
为夺取双胜利提供坚实水利保障(Ⅰ)
水利工会
基于多租户隔离的云安全建设
分布式光伏热钱汹涌
分布式光伏:爆发还是徘徊
基于MVC模式的多租户portlet应用研究*
基于DDS的分布式三维协同仿真研究
水利
西门子 分布式I/O Simatic ET 200AL