城市供水系统监管平台企业数据服务接口的设计与实现
0 引言
“国家城市供水系统监管业务平台”(以下简称供水平台)需要实现对城市供水企业的水质相关数据信息获取。由此,供水平台需要构建一个有效获取城市供水企业数据接口服务体系,实现对城市供水企业水质相关数据的获取。另一方面,各城市供水企业信息系统建设时期不同,技术规范差异大,城市供水企业信息系统数据内部采集面临着数据源分散、技术规范差异大和数据库平台不统一等问题。总体而言,由于我国供水企业领域标准化工作起步较晚,信息化建设缺乏相关的标准,供水平台的城市供水企业数据服务接口需要借鉴其他行业的经验及先进的信息技术设计与实现。
1 数据服务接口设计
1.1 接口数据指标标准及需求分析
城市供水企业对接的数据分为3类,具体指标要求如下:
(1)在线监测水质数据。依据《城镇供水水质在线监测技术标准》(CJJ/T 271-2017)确定,包括水源水、出厂水和管网水和二次供水等指标,应用于供水平台内的数据查询、统计分析与展示。供水平台只调用监测结果日均值。
(2)实验室检测水质数据。水源水各指标的单位/量纲参照《地表水环境质量标准》(GB 3838-2002)、《地下水质量标准》(GBT 14848-2017),出厂水、管网水、管网末梢水、二次供水各指标的单位/量纲参照《生活饮用水卫生标准》(GB 5749-2006)。此部分数据应用于平台的大数据分析服务,并兼顾数据查询、统计分析与展示。
(3)综合指标信息。包括企业类型、设施能力、运行情况、财务经济、监测预警、用户服务和水厂基本信息类指标。
该部分数据主要用于平台效能评估,并兼顾数据查询、统计分析与展示,调用频率为每年1次。
综上所述,供水平台数据接口按其业务需求的实时性特点可分为实时接口和非实时接口两类接口进行设计与实现。
1.2 接口应用关键技术研究
(1)Web API技术。Web API是一种可以对接各种客户端(浏览器,移动设备),构建Http服务的框架。Web API的主要功能包括:(1)支持基于Http verb(GET,POST,PUT,DELETE)的CRUD(create,retrieve,update,delete)操作;(2)通过不同的http动作表达不同的含义,这样就不需要暴露多个API来支持这些基本操作;(3)请求的回复通过Http Status Code表达不同含义,并且客户端可以通过Accept header来与服务器协商服务器返回JSON格式还是XML格式;(4)请求的回复格式支持JSON,XML,并且可以扩展添加其他格式;(5)原生支持OData,支持Self-host或者IIS host;(6)支持大多数MVC功能,例如Routing/Controller/Action Result/Filter/Model Builder/IOC Container/Dependency Injection。
选择应用Web API技术的原因是其可以构建面向各种客户端的服务,利用Http协议的各个方面来表达服务(例如URI/request response header/caching/versioning/content format),配置较为简单,通讯安全可靠。
(2)ETL技术。数据抽取(Extract Transform Load,ETL)定义如下:将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
ETL负责将分散的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。ETL的过程是数据流动的过程,从不同异构数据源流向统一的目标数据。其间,数据的抽取、清洗、转换和装载形成串行或并行的过程。
ETL的核心是转换,而抽取和装载一般可以作为转换的输入和输出,其装载多采用批量装载工具。实现ETL,首先要实现ETL转换的过程。其可以集中地体现为以下几个方面:(1)空值处理:捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库;(2)规范化数据格式:可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式;(3)拆分数据:依据业务需求对字段可进行分解;(4)可验证数据正确性等。
本接口中的ETL以水质为主题,通过实时性数据及历史性归档数据的统一的和标准化的处理,有效整合供水企业水质相关数据信息资源,使供水企业水质业务数据资源整合为一个全面有效及统一的数据来源。
本接口中应用MS Integration Services(SSIS)工具实现ETL应用,如图1所示。
1.3 接口架构体系设计
构建Web API层作为一个供水平台的公共接口层,可以保证接口提供的应用层的数据一致性。另外,通过ETL技术获取城市供水企业内部实验室管理系统(LIMS)数据、管网在线监测系统等应用系统的数据,解决了城市供水企业面临的数据多来源、技术差异性和数据准确性等问题。由此构建的供水平台接口层实现了安全可靠的城市供水企业数据获取,提供了快捷灵活的接入。本接口框架体系如图2所示。
接口工作流程说明如下:通过ETL工具将供水平台所需的各类数据从城市供水企业内部各类信息系统业务数据按主题进行抽取,汇集统一处理及存储,采用Web API技术建立具有通用性和开放架构的供水企业供水生产全过程监管数据接口,实现供水企业数据集成接口服务,与城市供水全过程监管平台平滑集成对接。
1.4 数据接口设计与实现
1.4.1 非实时接口设计
(1)数据交互流程见图3。
(2)数据交换流程包括:(1)构造业务数据json字符串;(2)使用秘钥client key对json字符串进行3des加密并输出成base64编码字符串,作为data字段;(3)计算sign,拼接参数字符串;(4)组装提交给服务器的String数据;(5)post数据到服务器;(6)服务端按相同算法和密钥计算sign和post过来的sign进行比对验证合法性,逆向解密data数据;(7)服务器重复(1)~(4)步将响应结果组装成json格式数据返回给客户端,并返回200http状态码;(8)客户端重复第(6)步验证数合法性,并逆向解密得到服务端响应结果。各层加密过程中保持数据编码为GB2312(用于中文传输)。
1.4.2 实时接口设计
(1)实时接口协议说明。实时接口通讯协议建构在TCP/IP协议上,完整的命令由请求方发起、响应方应答组成,具体步骤如下:(1)请求方发送请求命令给响应方;(2)响应方接到请求后,向请求方发送请求应答(握手完成);(3)请求方收到请求应答后,等待响应方回应执行结果;如果请求方未收到请求应答,按请求回应超时处理;(4)响应方执行请求操作;(5)响应方发送执行结果给请求方;(6)请求方收到执行结果,命令完成;如果请求方没有接收到执行结果,按执行超时处理。
(2)实时接口通讯协议数据结构。所有的通讯包都是由ASCII码(汉字除外,采用UTF-8码,8位,1字节)字符组成。通讯协议数据结构如图4所示。
1.4.3 接口安全控制
(1)IP认证。实时接口通讯协议建构在TCP/IP协议上,当实时数据推送,供水监管云平台只会接受提前认证的IP推送的数据,对未认证的IP推送的数据会主动丢弃。
(2)端口指定。城市供水企业和供水平台之间通过指定的端口做例外处理,对非法的端口,双方都做了屏蔽。
(3)安全密钥。非实时数据是通过POST提交数据方式,每次推送数据,都会对指定的业务类型和密钥进行认证,认证通过的动作,才会有效。
(4)指定数据交换格式。对非法的数据格式,系统会主动丢弃。服务器之间的数据交换,必须严格按照指定的数据格式,进行传输。
2 接口部署和调用
2.1 接口部署
接口部署网络架构如图5所示。水务数据服务接口后台分Web API服务接口和Web API对接服务接口2部分独立部署。非实时数据传输通过HTTP协议对接2台服务器,而实时数据传输是通过TCP/IP协议和netty架构搭建的高可用负载均衡环境,满足后续数据服务接口服务集群横向扩展的需求。
供水企业将各个子系统的数据归集到数据ETL,城市供水企业的数据中心以ETL方式从应用系统抽取符合业务需求的数据,然后通过Web API对接服务器,调用Web API,将城市供水企业的数据推送到供水平台。
2.2 接口调用
非实时数据接口对接如表1所示。
实时监测数据对接为:(1)数据传输协议。客户端与服务器端采用的是TCP协议建立的长连接,服务器端是使用netty开发的,数据传输必须按照数据传输协议的数据包结构,否则服务器端无法接受到合法数据。netty服务器端和第三方客户端建立socket连接后以及接受到客户端发送过来的数据时会有相应的响应码反馈给客户端。(2)数据包结构见表2。(3)数据段结构见表3。
3 结语
在借鉴“十二五”水专项“城市供水管网智能管理系统关键技术研究与示范”课题成果基础上,参考其他行业相关信息化标准,实施构建了供水平台的城市企业数据服务接口系统,为供水平台提供了统一规范、实时连接的城市供水企业数据访问服务。该接口以ETL技术统一采集企业内部相关应用信息系统数据,处理生成统一数据格式,通过Web API接口推送到供水平台,实现了城市供水企业数据资源存储、访问及访问服务趋向标准化,接口通讯安全可靠,同时降低了供水平台集成对接各城市供水企业数据的复杂度,具有良好的实用性和经济性。
作者图片
