陈 琼,孙丽娟
(中电海康集团有限公司,浙江 杭州 311100)
建设智慧城市的本质是推动城市向更高层次的信息化发展,其最有效的推动力一定是无数的活跃个体。大量个体才能更好推动社会运行信息不断创造性、深度地挖掘和应用[1]。公共部门首先要做的是建设和维护好开放数据平台。因此,数据共享和开放已经成为一种必然的趋势,特别是作为社会管理主体的政府公共部门,作为大量数据的拥有方和建设“阳光政府”的责任者,需要建设和维护好开放的智慧城市数据平台。在智慧城市建设过程中,数据开放应用是政府实现城市智慧化必须要深入研究和探索的领域,也是实现大数据真正服务于城市发展的必然方向。
本文设计实现了一种基于自动化发布技术的数据开放平台,以期能够较好地应用于这一领域。本文将首先介绍数据开放的现状及其技术发展趋势,然后总结自动化发布技术的基本思想和关键技术,最后基于自动化发布技术设计数据开放平台的架构和主要组件,并指出其应用前景。
随着新技术、标准、协议和应用等不断涌现,全球互联网发展面临着机遇与挑战并存的局面。“万维网之父”Tim Berners-Lee在展望未来互联网时强调其三大主要特征为:数据整合、多样的网络和独立的设备、无所不在的Web应用[2]。其中“数据整合”(Data Integration)指的是在相应的网络标准格式(如Resource Description Framework,Web Ontology Language等)下实现整个Web的数据互联互通和开放共享。
全面的数据整合和无所不在的Web应用客观上要求现有的互联网不断进行技术、理念的创新与突破[3]。在向第二代互联网演进过程中,开放数据成为继开源软件、开放存取后的又一个研究热点,也为当前数字化网络环境下的数据管理、信息组织的研究与实践注入了新的活力。公众的参与使用是政府开放数据的核心精神之一,政府开放数据即是希望通过公众的集合专业素养与知识来协助政府解决公共事务问题,让公众可以借由政府开放数据来参与公共事务,并期许能从政府资料再利用上创造出新的经济价值与创新运用[4]。开放数据是未来电子政务发展的必要条件,开放政府也是智慧政府的前提[5]。
在数据的共享和开放方面,以美国为代表的发达国家已经走在了前面。例如,由美国联邦CIO委员会开发、总务管理局主管的Data.Gov网站[6]。Data.Gov除了采用目录(catalogs)方式组织政府数据和其他应用型网络工具,提供类目、机构、关键词等搜索途径外,还定期审查数据以保证与W3C的“Web可访问性倡议”(WAI)原则一致,并主动应用最新技术,例如计划将超过64亿条政府数据转换成RDF格式、采用统一资源标识符(URI)更好地开发和扩展数据,朝新一代的关联数据混搭(mash ups)应用目标迈进。Data.Gov是全球第一个国家政府层面的数据门户网站,它极大地解决了以往分散在各个政府机构网站的数据不兼容问题,是美国政府乃至全球范围内开放数据实践的标志性成果。
在国内,具有数据共享和开放意识的地方政府已经开始积极行动起来。2014年1月,广州市政府首次提出要建立大数据局[7],统筹推进政府部门的信息采集、整理、共享和应用,消除信息孤岛,建立公共数据开放机制,除法律法规明确不宜公布的公共信息,一律及时向社会公开。到了最近几年,很多地方政府都建立了数据开放平台。当前国内政府的数据共享和开放主要体现为两个方面:一是数据的共享和开放主要是对政府内部各个部门之间的共享开放,政府各个部门之间通过传统的点对点或者基于SOA架构,通过ESB的方式共享和交换数据;二是政府数据对公众的开放,大多还是局限于以文档的形式,供公众下载阅读。这种方式,公众只能对政府拥有的数据进行阅读和了解,但无法做到机器阅读和自动化使用,以及真正为公众和企业带来社会或商业价值。
大数据时代的竞争,将是数据资产的竞争,数据开放是能够真正利用大数据和挖掘大数据潜在价值的最好手段。由于大量的数据资产掌握在政府和公共部门手中,因此开放这些海量数据也是建立透明和开放政府的要求。国内相关研究认为,我国政府数据治理方面的问题已经阻碍了数据开放的发展,例如数据未被电子化、数据碎片化、数据标准化程度低、数据质量参差不齐等[8]。
结合上述数据开放的发展现状,并适应具体的应用场景要求,数据开放在技术实现上的趋势如下:
第一,随着社会信息化的深入,数据的积累越来越巨量,数据的格式也愈加复杂,数据开放服务的形式也日趋多样。为适应这种不断变化的需求,需要有一种自动化的、可扩展的机制,使得数据开放服务的发布能够快速和有效进行。
第二,在服务的自动化发布过程中,数据源通常是跨部门、跨地域和跨领域的,格式多样,数据结构不统一,并且存在不同类型的数据库中。另外,数据的开放有很强的选择性,有些数据可以开放,有些数据则不可以开放;同样的数据表,也可能有些字段可以开放,有些字段不可以开放;或者有些数据需要通过一定的封装、整合和计算,才能对外开放。这就需要有一种对数据源的统一描述语言,对异构数据源进行抽象和描述。
为了实现服务自动化发布,需要对异构数据源进行统一描述。数据开放平台的数据源是通过一个可编辑的XML格式的文件统一描述的。这种统一描述的格式能够灵活支持不同的数据源,并且具有良好的扩展性。它能够支持对数据的投影、封装、组合和计算,并可以灵活地描述不同的数据表或者同一表中的不同字段,也支持对跨表数据的计算。这种统一描述独立于服务本身的数据结构,而只描述数据源本身,因此具有服务无关性。对数据库类型支持的扩展和对服务格式类型支持的扩展是平行的,互相没有影响。
解析框架负责解析该文件,并负责具体的数据抽取工作。框架支持不同的数据库,并具有支持二次开发的可扩展能力,增加跨数据库平台适应能力。
随着数据的积累愈加巨量,数据的格式愈加复杂,对数据开放服务形式的要求也日趋多样,服务的自动化发布技术可以使数据开放服务的分发和部署能够快速和有效进行。自动化发布引擎可以将数据资源通过一键式的方式,零编码实现对服务的自动化分发和部署,并为机器阅读和调用。这种引擎能够提供多种的服务绑定方式,比如可以绑定当前主流的基于SOAP的Web服务和基于REST的Web服务,并可以选择同时绑定或者分别绑定不同的服务协议。引擎亦支持可扩展的开发接口,二次开发者可通过该接口实现各种服务形式的绑定,丰富平台对外提供服务的能力。自动化发布的过程如图1所示。
图1 服务自动化发布过程Figure 1 Service automated publishing process
本系统是基于服务自动化发布技术的数据开放平台,其目的是为开放政府的公共数据提供平台支持。该数据开放平台也可以用作政府部门之间的数据共享和交换。
平台的整体架构如图2所示。
图2 数据开放平台组件架构Figure 2 Data open platform component architecture
平台的主要组件和功能包括:数据源的统一描述及其解析框架、服务的自动化发布以及服务的编排、安全、智能化管理和集群。
3.2.1 数据源的统一描述及其解析框架
数据源的统一描述是通过一个可编辑的XML格式文件表达的,该描述文件具有以下特征:
一是支持不同类型的数据库,默认支持主流的Oracle和MySQL数据库,并通过可扩展、自描述的语义结构,支持以后扩展到其他数据库。
二是支持对数据的投影、封装、组合和计算。可以灵活地描述不同的数据表或者同一表中的不同字段。也支持对跨表数据的封装、组合和计算。
另外,该描述文件独立于开放服务的数据结构,而只描述数据源本身,因此具有服务无关性。平台的数据源描述文件解析框架负责解析该文件,并负责具体的数据抽取工作。该框架具有支持二次开发的可扩展能力,可以灵活支持多种类型的数据库。
3.2.2 服务的自动化发布
经过解析框架抽取的数据,可以通过发布引擎自动化发布服务。该引擎支持:
第一,零编码实现对服务的自动化分发和部署,并且可以供机器阅读和调用。
第二,多种服务发布格式。平台默认基于SOAP的Web服务和基于REST的Web服务的自动化发布。所发布的Web服务的整体架构如图3所示。平台所自动化发布的Web服务以HTTP/HTTPS为底层网络传输协议,可以选择同时自动绑定或者分别绑定SOAP和REST两种不同的通信协议,并自动生成WSDL服务接口描述语言。以Web Service的形式作为服务接口可以实现跨平台和跨语言的调用,并且可以很容易跨越防火墙,对于内部和外部的数据服务调用都十分合适。
图3 Web服务整体架构和层次结构Figure 3 Web service architecture and hierarchy
第三,可扩展的开发接口。二次开发者可通过该接口实现其他形式的自动化发布引擎,从而进一步丰富平台的服务格式。
3.2.3 服务的编排
所谓服务编排是将一组现有的服务组合起来,从而定义一个新的Web服务。通过服务编排引擎,对平台已经发布的服务,或者存在于平台外部的服务,可以进行服务的编排。服务编排在Web服务中的层次如图3所示。该服务编排引擎:
第一,支持基于BPEL的编排。BPEL全称为Business Process Execution Language,即业务流程执行语言,是一种使用XML编写的编程语言,用于自动化业务流程。引擎支持导入BEPL格式的XML文件,并根据该文件自动实现服务的编排。
第二,支持平台内部发布服务的编排,也支持外部发布服务的编排以及内外部服务的组合编排。
第三,支持图形化工具的编辑方式,并可以保存为标准BPEL格式的XML文件,从而可以导入到编排引擎。
3.2.4 服务的安全
平台拥有完整的服务安全机制,从而保障数据开放服务的安全可靠。
第一,平台支持安全的传输方式,可以通过基于TLS的传输层加密,也可以采用应用层的签名加密方式,保障数据传输的机密性和完整性。
第二,统一的密钥发布和管理机制。平台采用基于AppKey/AppSecret的认证方法,并可以扩展为基于OAuth2.0标准协议的第三方用户授权机制。
第三,支持基于角色的权限控制和基于资源的权限控制相结合的用户授权方式。基于角色的权限控制将用户与权限解耦,而把权限与角色相关联,用户通过成为适当角色的成员而得到相应的权限。由于角色很少发生变化且类型较少,极大地简化了权限的管理。但基于角色的权限管理一般只针对操作权限,对数据资源(在本平台即服务资源)的控制力度较弱,因此结合基于资源的权限控制,可简单而有效地实现对服务细粒度的权限控制。
3.2.5 服务的智能化管理
数据的开放服务对平台管理提出了更高要求,平台的智能化管理组件支持:
第一,数据源统一描述文件的导入和服务的一键式自动化部署,服务编排文件的导入和部署。
第二,服务的流量控制管理。可实现在不同的服务上分别对用户或角色的流量控制,包括分时段控制和总量的控制。
第三,服务的相关状态信息展示。包括服务的属性和方法描述、是否在线等以及QoS统计信息,如服务被调用、服务失败情况等。
第四,服务质量(QoS)的仪表盘。把系统数据分析和挖掘的结果以数据仪表盘形式进行形象展现,并可通过动态交互的方式帮助管理员进行服务质量分析。
3.2.6 服务集群
随着开放数据量的增长和服务内容的增多,对服务的调用会迅速增加,单台服务器必然会难以满足需求。同时,单台服务器也存在单点故障问题,一旦服务器宕机就无法继续提供服务。因此,平台需要支持服务集群技术,具体有如下特点。
第一,弹性处理能力和水平扩展。平台具有水平扩展的能力,可以很好地支持服务的弹性和可伸缩性。在开始的时候只需一台服务器,在负载增大的时候加入服务器硬件,通过简单配置即可实现处理能力的扩展。
第二,路由和负载均衡。对多台服务器来说,需要有前端路由功能和负载均衡的能力,以使得服务能够动态和合理地分配到各个处理服务器上去。由于平台是一种Web服务器应用,因此可以采用多种成熟的路由解决方案及其热备方案。
第三,高可用性。服务集群天然支持高可用性,集群中某台处理服务器宕机后,路由服务器会实时监测到该服务器异常并把服务请求分发到其他服务器,因此单台或少数几台服务器的宕机不会导致服务中断。
第四,会话的共享。平台提供的服务本身一般是无状态的,因此无需共享彼此的状态。但对于平台的自身信息,例如用户的登录会话信息等,仍然需要在集群间共享。集群可采用简单的集中式会话共享方式,把会话信息存储在一台缓存服务器中,并使用热备的方式防止该服务器宕机造成的单点故障。
数据开放服务系统的部署结构如图4所示,主要包括以下几部分:数据源、管理服务器、门户服务器、业务服务器集群和数据存储。
图4 数据开放服务系统部署结构Figure 4 Data open service system deployment structure
第一,数据源支持多种类型的数据库(Oracle、MySQL),并扩展支持其他类型数据源,如文件、应用系统等。
第二,管理服务器根据数据源描述文件将包含的数据服务自动转化为Web服务,部署到业务服务器集群中,并通过门户服务器在前端统一展现,供用户浏览查询。此外,管理服务器还负责服务管理、用户管理、计费管理、监控管理、集群的控制管理等工作。
第三,数据存储用于保存平台的相关数据(如服务监控信息、系统状态监控信息、服务接口信息、用户信息等),不包括任何共享的业务数据内容。
在新一轮智慧城市建设的热潮中,政府数据开放的重要性越来越凸显。本文论述了基于服务自动化发布技术的数据开放平台的 原理、架构、主要组件和系统部署。该技术和平台已在一些智慧城市项目中得到实际应用。通过自动化发布技术便捷、安全和可控地开放政府数据,能够促进社会和公众参与城市管理和对政府的监督,提升公众服务和社会管理效率,鼓励社会创新和释放商业机会,使政府、社会和公众都能真正受惠于智慧城市的建设。