60中国安全防范技术与应用
2020年第6期摘 要:关键字:本文设计和实现了一个基于微服务架构的数据汇聚系统。系统采用微服务架构进行设计,利用Docker 容器技术
打包镜像部署,这使系统可随着接入数据量的增加纵向扩展部署微服务实例提高数据处理能力,可随着接入数据种类的增加横向开发新的微服务。通过API 网关为数据汇聚微服务系统提供了统一访问入口,在数据发送方和数据汇聚微服务应用之间起到了桥接作用。利用分布式发布订阅消息系统kafka 集作为消息队列,提高了汇聚数据的处理分析效率。通过发送方对采集数据的签名加密传输及接收方的身份及数据验证机制保证了发送方身份不可伪造和采集数据在传输过程中不可篡改这两个安全特性。
微服务架构 数据汇聚 数据处理
微服务架构下数据汇聚系统的
设计与实现
■ 文/公安部第一研究所 何芬 章磊 李鸿赟
1引言
数据汇聚是数据获取系统中很重要的一个环节,主
要负责对数据进行及时高效的组织和汇聚,并且将汇总
后的数据传输到后端存储系统。数据汇聚系统是采集系
统中不可或缺的部分,其性能也直接影响系统整体性能。
在传统的数据汇聚系统中,功能实现比较集中,大部分
功能都运行在同一个进程中,模块内部存在依赖,限制
了数据汇聚系统的扩展性和处理能力,进而导致系统很
难处理大数据量的接入。而且当数据汇聚系统需接入新
的数据种类时,则需对原有系统进行改动并重新部署才
可以接入新类型的数据。这势必影响了原有数据的接入
和系统运行的稳定性。因此需寻一种新的软件架构来
实现数据汇聚系统。
微服务架构模式是近几年在软件架构模式领域里非
常热门的架构模式。相比传统单体架构,解决了数据、
服务呈爆炸式增长带来的冲击问题。微服务架构作为一
种全新的架构模式,通过微服务将一个功能复杂的单体应用分解成一组小的服务,不同服务之间可以相互协调、互相配合,共同完成一个复杂功能。各微服务间均可单独部署,通过服务网关对外提供统一的服务接口。微服务网关具备路由、均衡负载、鉴权过滤等核心功能,并能整合服务治理、请求转发熔断机制、服务聚合等功能来优化系统,微服务架构模式非常适合数据汇聚的应用场景。因为数据汇聚的业务非常清晰,且不同种类数据的处理过程不尽相同,所以可按照接入的数据种类划分成一个个微服务。2 数据汇聚系统的设计采用微服务架构可以很好的解决在数据汇聚实际过程中可能会遇到的情况:1) 不同种类数据接入的数据量不一样,可定制化微服务实例的部署方案,使部署的微服务实例数量与实际业务需求相匹配;2) 微服务间的独立可在系统接入新的数据种类时不
分布式和微服务的关系61
C HINA S ECURITY P ROTECTION T ECHNOLOGY A N
D A
PPLICATION 2020年第6期影响数据汇聚原有微服务的运行和数据接入;
3) 在某类数据接入量猛增的情况下可快速部署该类数据的微服务实例,提高此类数据的汇聚能力;
4) 通过网关对外提供统一的接口可解决接入发送方差异性的问题。本文通过对数据汇聚系统的架构、汇聚流程和部署方案进行了设计,为系统的实现和部署提供了指导。2.1架构设计
基于微服务的生态系统,按照层次化的设计思想,对数据汇聚系统的架构设计如图1所示。系统自上而下分为接入层、服务层、支撑层和基础设施层。接入层通过API 网关将发送方回传数据的请求接入到数据汇聚系统。服务层是各类数据汇聚微服务功能实现的主体,采用微服务的方式实现对回传数据的接收、解密、验证和存储等功能。支撑层是为了支撑微服务能够更有效地运行,主要包括注册发现、负载均衡、配置管理、监控告警等。基础设施层能够有效地进行基础设施自动化以及弹性伸缩,进而支撑服务的弹性伸缩及保障服务的可用性。2.2汇聚流程设计发送方采集的数据汇聚到数据汇聚系统的流程主要分为四部分:采集数据的加密、数据的发送、数据的解密和数据的处理,具体过程如图2所示。2.2.1 数据加密过程 虽然现在有很多的安全防护技术用来保护计算机网络,但还是面临着各个方面的攻击,所以数据加密非常
重要。发送方在发送采集数据前,需对数据进行以下加密处理:1) 用对称密钥对发送的采集数据加密,得到加密的采集数据;2) 将采集数据中的重要字段组成数据摘要,并用MD5加密算法进行加密,得到加密的数据摘要;3) 对加密过的数据摘要用发送方私钥签名,得到签名的加密数据摘要;4) 用接收方公钥加密对称密钥得到加密后的对称密钥;5) 将加密的采集数据、签名的加密数据摘要和加密
后的对称密钥信息组成JSON 对象。
2.2.2 数据发送过程
数据汇聚服务模块都由统一API 网关进行封装对外提供服务。发送方调用数据汇聚系统API 网关对外提供的统一接口,采用安全的数据传输协议HTTPS 把采集数据发送到服务网关。服务网关接收到请求后,将根据地址信息转到对应的数据汇聚微服务,并采用负载均衡的
策略将请求分配到微服务实例进行处理。
2.2.3 数据解密过程
当微服务实例接收到数据后,需对数据进行以下处理:
1)用接收方私钥对加密后的对称密钥解密,得到对称密钥;
2)用对称密钥对加密的采集数据解密,得到原数据,解析设备ID 的值,若其已注册,则继续下面的步骤,否则返回设备ID 未注册警告;图1 数据汇聚系统的架构设计图图2 数据汇聚流程设计
62
中国安全防范技术与应用
2020年第6期 3 数据汇聚系统的实现基于SpringBoot 微服务架构实现数据汇聚系统,即将不同种类数据的汇聚开发成一个个微服务。每个微服务可部署多个实例,并注册到eureka 中心。每个微服务间的业务是相互独立的,并可单独运行,互不影响。这极大的保证了数据汇聚系统的高内聚、低耦合的特性。每个微服务都可分为数据接收模块、数据解密模块、数据验证模块和数据生成模块。3.1 数据接收模块数据接收模块主要负责接收和初步解析回传的采集数据。初步解析是指对回传数据解析出携带签
名的加密数据摘要、加密的采集数据和加密的对称密钥,这三个数据作为数据解密模块的输入数据。用Java 开发语言实现数据接收模块的示意代码如下。
3.2 数据解密模块
数据解密模块是对初步解析的加密数据解密,主要包括以下流程:
1) 用发送方的公钥对签名的加密数据摘要解签得到
3)将原数据中的重要字段组装成数据摘要B,并用MD5进行加密得到加密的数据摘要B;
4)用发送方的公钥对签名后的加密数据摘要进行解签得到加密的数据摘要A,若无法解签,则说明这条数据不是A 发的,返回身份被伪造警告;
5)若加密的数据摘要A 和加密的数据摘要B 相等则说明采集数据未被修改,否则说明数据在传输过程中被修改了,返回数据被篡改警告。
2.2.4 数据处理过程
在对解密后的采集数据进行微处理后将数据存储到消息队列中。采用Kafka 集作为消息中间件,其
具有高吞吐的特性,将实时数据快速导入分布式系统的内存当中,当消息队列中消息过多时还可以写入磁盘,保证了汇聚数据的安全,并将数据的汇聚过程与业务处理进行了解耦。2.3 部署方案设计
通过使用容器技术,部署多个微服务的工作将变得更为简便。Docker 是一个开源的容器引擎,在Linux 容器技术的基础上,进一步封装了容器的一些操作接口提供给开发者管理和使用容器。只要能运行 Docker,最终应用都能以容器的形式提供服务。采用Docker 技术将数据汇聚系统中每个微服务运行所需的应用程序和库组成的文件系统映像打包成一个个容器镜像,通过集管理器对这些容器镜像进行管理,并可根据容器所需资源和每个主机上可用的资源决定放置每个容器的位置。部署方案如图3所示。
图3 部署方案设计
63
C HINA
S ECURITY P ROTECTION T ECHNOLOGY A ND A
PPLICATION 2020年第6期发送的加密数据摘要,如果不能解签则给发送方返回身份伪造警告;
2) 用接收方私钥将加密的对象密钥解密得到对称密钥;
3) 用对称密钥将加密的采集数据解密得到采集数据。解密得到的采集数据和数据摘要作为数据验证模块的输入数据。用Java 开发语言实现数据解密模块的示意代码如下。3.3 数据验证模块
数据验证模块首先判断采集数据中的设备ID 信息是否已注册,若未注册,则返回设备ID 未注册警告,若已注册,则将该类数据的重要字段信息组成数据摘要,用MD5算法对数据摘要进行加密得到加密的数据摘要,用它和数据解密模块得到的数据摘要进行比对,若不一致,则返回数据传输过程中被篡改警告,若一致则将采集数据作为数据生成模块的输入数据。用Java 开发语言实现数据验证模块的示意代码如下。 3.4 数据生成模块数据生成模块将采集数据做微处理后生成最终数据,并调用kafka 集生产者接口将最终数据放入分布式发布订阅消息系统kafka 集的消息队列中。对采集数据进行微处理主要包括:1) 将携带base64码流的字段调用seaweed 存储接口将图片存到seaweed 集,并获取访问该图片的url 地址信息;
2) 给采集数据增加接收时间字段信息,值为当前时间。用Java 开发语言实现数据生成模块的示意代码如下。
4 典型应用基于微服务架构下的数据汇聚系统已成功应用于十九大安保机器人项目和一体化指挥调度项目。
4.1 十九大安保机器人应用
在十九大安保机器人项目中,数据汇聚系统负责巡逻机器人、安保机器人和服务机器人的位置、电量、环境温度、湿度等各类采集信息的汇聚。这些采集信息均需频繁上传,这给数据汇聚系统带来了一定的处理压力。此外,随着接入机器人数量的增加,这压力也将呈线性增长。在此应用中,通过估算接入机器人的数量及采集信息的上传频率计算出数据汇聚系统每秒需处理的数据量,进而估算出需部署的数据汇聚微服务实例数量。这极
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论