基于云和雾计算的亚健康信息管理系统构建方案

2018-07-23 02:14考书健虞丽娟
电子科技 2018年7期
关键词:数据结构亚健康节点

考书健,虞丽娟

(1.上海体育学院 运动科学学院,上海 200438;2.同济大学 物理科学与工程学院,上海 200092)

亚健康作为一种介于健康与疾病之间的生理功能低下的状态,包括生理及心理上不能确诊的不适感[1-2]。作为一种中间状态,亚健康状态可能演变为疾病,也可能成功康复。在对全国不同城市不同地区的上百万人口的调查中发现,城市亚健康状态人数超过了总人口的60%,部分地区甚至达到了70%以上,如上海、北京及广东省。北京亚健康人群所占比例最高,达到了75.31%。亚健康高发年龄段为31~50岁[3]。上述调查结果表明,大约每十个人中约有6个处于亚健康状态。因此,对亚健康状态的有效检测、综合管理和科学干预已成为社会的焦点问题之一。

目前国内外对于亚健康监测的数据采集、存储和处理等尚缺乏全面、科学的解决方案,主要体现在以下两个方面:新兴亚健康管理行业尚无统一的技术标准,集成系统也由于各主体自身利益与技术保护而无法开放协作。因此,亚健康数据的采集、存储、处理与管理等手段亟待提升[4]。

为了有效管理亚健康群体的信息数据,提高信息管理效率和管理的透明度,文中提出了一种基于物联网技术的云和雾计算协同作用的亚健康信息管理方案。该方案将不同企业与机构的不同终端通过物联网集成为一体来采集和存储相关信息。通过云计算和雾计算对这些数据进行处理和分析以实现对亚健康信息数据的综合管理。通过测试证明该系统具有足够的伸缩灵活性和可靠性,可为亚健康群体的健康恢复提供技术支撑和可靠管理。

1 相关工作

1.1 亚健康信息核心数据

经专家会议法筛选,亚健康信息管理系统的核心数据包括:个人信息数据(姓名、性别、身份证号等)、生理机能信息(身高、体重、心跳、血糖等);运动机能信息(日运动步数、爆发力、最大耐力等);营养膳食信息(日均果蔬量、日均肉蛋奶量等);生活方式信息(日均有效睡眠时长、日均饮酒量等);心理健康信息(心理压力指数)等。

1.2 亚健康核心数据的特点

采集到的核心数据具有以下几个特点:

(1)数据关联性弱。亚健康数据对完整性、同步性、实时性要求均不高,没有事务性的原子操作。例如采集运动信息时,运动步数与运动时间点不要求严格对应,其数据可延后传输;采集年龄时,可以只采集年龄区间。数据的采集可以独立分散进行,很少需要协同作业,非常适合运用雾计算进行处理;

(2)数据量大、种类多、多源异构,且需长期追踪。亚健康数据既有实时性和趋势性,也具有冗余性和互补性[5],同时数据量大、格式结构各异,存在结构化和非结构化数据特性[6],而且部分数据在时间维上存在动态冲突,例如运动机能信息会随着锻炼而逐渐变化。因此,亚健康数据难以按范式约束到关系型数据库中,只能以可变的数据结构存入NoSQL数据库;

(3)数据采集的手段多样。不同来源、结构的数据,其采集手段也不相同。生理生化与运动状况数据需通过穿戴式智能传感设备24小时监测采集;全面的体质检测数据需要在专业检测机构进行采集;膳食、生活方式、其它运动数据则需通过移动终端、人工手动记录进行采集;

(4)数据存储处理方式多样。亚健康数据管理需要对大量历史数据进行规范化并按主题建仓库;对于大批量的数据需要先进行预处理再进行存储;对于实时的、分散的数据,例如手机APP获取的运动数据,需要实时过滤、处理、传输和保存。

2 基于物联网的信息获取和存储

数据的上述特点决定了无法采用常规的数据采集、存储方式而需要根据各自的特点进行匹配。本文综合采用云计算、大数据、雾计算及Docker引擎等技术构建亚健康信息管理平台,以此解决数据高分散性、高实时性等问题。

2.1 亚健康核心数据的获取

本文采用基于无线传感网的物联网技术,通过各种无线终端对原始数据进行采集,所使用的获取路径包括以下几种:

(1)PC端获取:网页访问、电邮智能表格等;

(2)移动端获取:微信智能表格(心理测试表等)[7]、穿戴式无线传感器(体质健康手环等);

(3)物联网获取:系统内联网设备如家庭跑步机、体质中心骨密度仪等[8];

(4)人工录入获取:个人基础信息、网络外信息补录(如医学体检信息等)。

利用Docker容器来存储获取的原始数据[9]。作为一种使用沙箱机制的虚拟化技术,不同的Docker容器相互独立,能把系统应用和所依赖的环境打包到一个可移植的软件运行容器中,然后将之发布或迁移到任一支持Docker容器的Linux服务器中。此外,Docker容器发布、启动和迁移的性能开销低,可方便地在雾节点和云中心之间共享。Docker容器为整个亚健康管理链中的各类智能设备和无线健康传感器供应商保护自身技术提供了支持,例如经与某健康手环公司协议,将手环数据发送至公司数据库后,由该数据库将指定个体的数据、参数、处理逻辑等封装在亚健康管理Docker中自动运行,整个Docker提交给云平台来处理自定义数据部分并按标准格式提供结果[10]。

2.2 亚健康核心数据的处理

本文采用云计算和雾计算相结合的综合处理技术来实现核心数据的处理。

云计算作为主要的计算方式能够提供可用、便捷、按需、基于网络的计算资源以应对亚健康持续增长的海量数据分配技术[11]。大数据处理技术[12]主要解决大量结构化与非结构化的数据处理(如日均摄入的食物分类汇总并折算热量),为促进个体健康提供技术支撑,也为群体健康研究提供基础平台[13]。而作为辅助计算方式的雾计算[14-15]也具有独特的优势,它对于密集型、高性能计算资源要求低,适合配置在类似跑步健身器等设备中以方便数据保存并提高整个系统的健壮性。更重要的是,雾计算为广大智能设备和传感器生产商参与到亚健康信息平台提供了契机,他们的产品可构建为雾节点,集成到亚健康信息平台上[16]。

3 基于云和雾计算的亚健康信息管理系统

如图1所示,亚健康信息管理系统从功能上可被划分为3个层次:中心云服务平台、周边雾服务节点、周边雾终端,它们由统一通讯协议和数据结构集成在一起。各层次内子系统和模块的结构及技术均统一,减少了系统的种类,增加了通用性,降低了系统复杂度。

图1 系统总体架构

3.1 中心云服务平台

中心云服务平台包括应用服务与数据服务两大系统,均用Docker集群来封装。应用服务系统可以保存并管理所有汇集的数据,并及时分析处理当前数据,输出分析结果、判断和建议。数据库采用MongoDB,后台数据接收传输及服务于亚健康用户的Web应用采用了NodeJS技术。

数据服务系统按照分析规则清洗汇集的大数据,从亚健康风险等级评估和体质指标体系间的相关性分析两个方面进行全面的、长期的分析和有效信息挖掘。尽管从数据分析角度看,数据库采用MongoDB + MySQL组合也许不是最合适的搭配,但这是综合存储、处理与日常分析需求的权衡选择。必要时,也可引入其它更专业的数据分析技术,如数据清洗、数据分析及数据挖掘的Web应用等。

3.2 周边雾服务节点

周边雾服务节点获取穿戴式、便携式体质健康监测传感器和周边健身、医学设备的雾终端的数据,进行预处理和存储,并适时转发给健康管理中心云服务平台[17]。

雾节点尽量统一采用Docker封装,例如在协作的医疗机构检测设备旁,附加工控机可用Docker或其集群封装雾节点,发回检测数据。由于目前Docker只能运行在主流的Linux环境中,可在windows里借用Node-Webkit里的Nodejs服务+IndexedDB数据库来实现;而移动应用中则可借用Android的后台服务+IndexedDB数据库来实现。

3.3 周边雾终端

周边雾终端主要有两种类型:基于Android Webview+IndexedDB的移动应用、设备界面和基于Node-Webkit+IndexedDB的桌面应用。

移动应用的任务是服务于亚健康用户,获取需要人工录入的数据和通过移动服务转发的数据,分析并输出体质健康评价结果和分级警示,并可访问健康管理中心云的应用服务,获取自己的健康风险报告和健康促进处方等。设备界面主要布置在专业体质检测机构、社区卫生室等场所,用户可自己操作设备,实时获取分析结果。桌面应用主要提供给亚健康服务工作人员使用,使其可以在医疗机构、亚健康服务点等场所管理和操作设备,分析数据、输出实时的健康报告和健康促进处方。

3.4 通讯协议与数据结构

健康管理中心云服务平台、周边雾服务节点及周边雾终端之间采用HTTP通讯协议,应用JSON数据格式,并构建了WebService的服务与访问。敏感数据在JSON格式内部做加密处理,形成了协同运行网络。

数据结构包括通讯接口的数据结构和数据库结构。顶层采用统一的标准结构,细部可自定义结构,便于不同的数据源进行存储和传输,并用版本号标识出数据结构的演变,例如图2所示的通讯接口发出请求的通信数据结构。

图2 请求服务的数据结构

图2中,主数据结构及子数据结构的头部是必须设置的标准结构,所有数据都是统一的、标准的。其它省略号部分的数据可自行定义,用数据结构类型(type)、数据结构版本(version)注册,并记录结构说明和常用的处理函数。使用者或Agent代理根据注册结构的说明及常用函数来使用对应结构的数据。

从技术上分析,亚健康信息平台同化和对称化相当明显:界面开发主要是HTML;功能逻辑主要是JavaScript (node.js的语法与JavaScript一致),某些特定功能可用其它主流技术如C++、.NET、Java等,并打包为nodejs的功能模块,由nodejs统一调度使用;数据库主要是MongoDB和IndexedDB,其内部的操作也是JavaScript、MySQL及SQL语言。

图3 任务分解架构

从任务分解上看,整个亚健康信息平台架构可简化为图3的形式。不同的区块相互联系比较弱,通过已定义的标准接口进行分离。从总体上看,各区块都是围绕数据库按标准数据结构执行功能逻辑,包括自动数据输入、自动数据输出及人机交互的数据访问运用。这样的系统架构既便于团队任务管理,也便于技术知识管理、服务人员选配调剂等。

4 原型系统

由于研究条件有限,尽量选择最小的系统规模,用最少的资源去验证整个平台的可行性和效果。

4.1 原型系统的中心云服务器

中心云服务器部署在一台Think Server RD340服务器上。该服务器主要硬件配置是:双CPU(24个逻辑内核)、16 GB内存、4块3 TB的SATA硬盘做RAID5;操作系统采用64位Ubuntu16.04,并安装了Docker,版本18.02.0,如图4所示。

图4 中心云服务器

其中,两个MongoDB集群各由8个ubuntu16.04的Docker组成。每个MongoDB集群各有2个Docker运行一个Config Server,有2个Docker各运行一个Shard Server,并为每个Shard Server配一个副本用Docker、一个仲裁用Docker,mongos放在了对应的应用集群和分析集群的每个Docker里。而MySQL集群由4个ubuntu16.04的Docker组成,首先用keepalived实现两两互备,再把两个keepalived用作两个分区,用Spider引擎做分布式集成,但这4个ubuntu16.04的Docker仅安装有MySQL。两个Web应用集群各有2个ubuntu16.04的Docker组成。每个Web应用集群里的Docker都是一样的配置,由负载均衡来选择哪个Docker提供服务。

后台分析集群由3个ubuntu16.04的Docker组成,通过MapReduce机制分解任务,轮流分配给各Docker处理。任务进程定时汇报进展程度,完成后汇总结果数据;后台传输集群由两个ubuntu16.04的Docker组成,各自独立轮询周边雾服务节点收集数据,当该雾节点被另一Docker询访时,则自动跳过。同时也被动接收数据,由负载均衡配置给相对空闲的Docker。询访连接有超时机制,后台传输Docker或雾节点僵死,另一方到时可自动脱离,Docker僵死时其它Docker下次会来询访取走数据,雾节点僵死则由Docker记录并报告情况;后台清洗集群由两个ubuntu16.04的Docker组成,各自独立轮询并锁定某一范围数据,执行清洗工作,其它Docker会跳开该部分数据。

4.2 原型系统的周边雾服务

图1中移动服务采用Android的Service程序实现,安装入某厂家的智能手表,采集的数据先存储在手表内,定时汇总后发送到中心云服务器同时检查数据总量,超过限制的话就按时间顺序删除最旧的数据。智能设备采用华为的X1平板来测试,用随机时间,把一定量的之前采集数据发送到中心云服务器,查看协作的效果。本原型用于体育院校体质检查。一台性能好的PC打开桌面程序,在界面录入人工采集获得的数据的同时,开放后台服务以接入其他雾终端采集数据,包括PC设备和移动设备,使数据汇总到一起便于集中发送给中心云服务。如图5所示,启动http服务,打开9002端口监听访问。

图5 周边雾服务

4.3 原型系统的周边雾终端

在移动应用中,Android的Activity仅用作为框架而不涉及业务逻辑,在其中嵌入WebView控件,包括WebView自带的IndexedDB数据库。用HTML+Javascript来实现数据采集和缓存,并实现手动或自动数据同步给移动服务(周边雾服务)。使用NW桌面程序作为框架,利用HTML+JavaScript来实现数据采集和缓存,并实现手动或自动数据同步给NW服务(周边雾服务),如图6所示。

图6 NW桌面应用

5 测试结果分析

系统搭建完成后,通过自动发送或界面人工输入的方式将上海体育学院体质健康中心6 000条个体数据和新增的120名个体30天动态监测数据、补充医学体检数据等注入到平台中测试,排除网络信号干扰后及系统bug之后的测试情况如下:

(1)测试中故意关闭MongoDB和MySQL的Docker,服务切换的瞬间响应有1~5 s的延迟,但对后台自动进程的工作毫无影响。故意关闭Web应用的Docker,对当前的访问有影响,有时候会出现访问中止画面,刷新后即恢复正常。关闭传输、清洗、分析的Docker会明显增加处理的时间,但系统仍会完成处理任务;

(2)测试中故意关闭周边雾服务或周边雾终端,则被关闭设备采集的数据会停止同步到中心云服务,但之前通过该服务提交数据的终端会自动寻找列表中还能连上的其它周边雾服务并提交数据。若配置有中心云服务,最后也会尝试连接中心云服务;

(3)测试中模拟了不同厂家提供的数据解析程序。在一个Docker中配置MongoDB保存多个数据解析程序,并配置nodejs的HTTP服务,通过帐号授权发布这些程序。实现了程序在网络中的传递并保存到中心云服务和周边雾服务的数据库中,最后成功调用并解析数据;

(4)经过多组测试,目前系统运行稳定。在从传感器抓取数据、提交数据到中心云服务的正常情况下,耗时<3 s,数据仓库归类准确率可达到98.3%。即使数据链路发生拥堵导致数据堆积在雾服务节点中,在发现情况及时干预后数据可很快同步到中心云服务;

(5)通过协议转换,在不同品牌与类型的智能传感器设备之间实现了搭桥通讯协议标准化,智能传感器、PC端、移动端与中心云服务之间互访稳定,传输顺畅;

(6)数据处理达到设计要求,可对个体与群体亚健康数据进行有效聚类、分层分析,输出单一指标历史曲线、多指标相关性分析,回归基于有限可动态监测指标的亚健康风险评价模型函数(风险度建模函数为FXD=CR*-0.6963+ATL*-0.0809+ UA*0.2915+BUN*-0.2931+TC*-0.1231+TG*0.08744+HDL*0.6363+LDL*0.08825+GLU*-0.1845+1.374)。

实验结果表明,本文方法对数据归类精确度高度达到了98.3%,满足实时收发数据的要求。

6 结束语

基于物联网和大数据处理技术的亚健康信息管理系统集合了多个系统的功能,获取的原始数据类型复杂多样,数据处理过程涉及到不同领域的关键技术,如无线传感技术、云计算以及Docker存储技术等。通过本文的研究与实践成功地用尽可能少的技术将上述技术集成到了一起,最终实现了对亚健康群体信息数据的有效分析与管理,助力亚健康个体早日回到健康状态。由于平台架构还不够成熟,在数据处理层次的划分原则、标准和方法以及智能节点间协同与调度等方面,还需要进一步的深入研究。

猜你喜欢
数据结构亚健康节点
CM节点控制在船舶上的应用
Analysis of the characteristics of electronic equipment usage distance for common users
基于AutoCAD的门窗节点图快速构建
甩掉亚健康 我们在行动
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
高职高专数据结构教学改革探讨
抓住人才培养的关键节点
猪群亚健康
《内经》治未病与亚健康的干预
儿童亚健康防治