彭 锋,宋文欣,孙浩峰,刘 丹
(武汉智领云科技有限公司,湖北武汉 430000)
云计算与大数据技术的发展进一步加快了智慧医疗与智慧健康建设的脚步。但现有智慧医疗建设仍面临医疗信息系统种类纷乱、资源利用不合理、运维成本高及安全性无法保障等问题,尤其是新冠疫情突发后,诸如系统资源无法快速扩展、性能和稳定性难以保证等难题亟待解决。因此,合理利用大数据技术在医疗行业及重大疫情防控中的应用成为智慧医疗发展重点。
当前医院信息化建设面临着数据标准化、系统规划是否完善等诸多难题,如何有效利用云计算及大数据技术成为新的发展方向。开展医院信息化建设需注重对云计算和大数据技术的有效应用,实现医院信息化管理发展目标,以提升医院发展质量,更好地满足患者需求。众多研究者针对医院信息化建设路径提出了多种建设思路[1-4]。王觅也等[5]在介绍医疗大数据集成应用现状的基础上,提出“云平台+数据资源+应用”的大数据集成平台构建方案,介绍了平台系统设计与应用效果,推动了医疗大数据应用发展;钱敏[6]提出受医疗政策、诊疗模式及疫情等多种因素的影响,医疗模式处于动态之中,必须通过不断扩展更新才能适应不断变化的内在医疗需求。因此,在医院规划设计中需妥善处理近期需求与长远发展的相互关系,大数据应用云平台及弹性扩容设计可为医院不定期扩展更新提供动态的发展思路。
上述研究利用大数据解决了部分医疗信息化改革中的难题,但未针对在智慧医疗的具体场景下(比如新冠疫情下海量数据的处理)如何利用云计算及大数据技术展开深入研究。本文以武汉健康云项目为例,明确武汉健康云服务系统开发任务与系统建设目标,针对项目难点分析智领云大数据应用云平台解决方案,介绍该平台系统结构与功能模块,详述系统内部设计,并以疫情防控为应用背景,介绍该云平台快速弹性扩容等创新之处。
医疗信息化的快速发展使新冠疫情爆发后,社会整体应对手段和能力得到显著提升。疫情预警、应急响应、传染源隔离、病患治疗、远程医疗、互联网医院、物资调度等疫情防控所需的信息处理技术及应用在全国各地得到普及。疫情期间,人工智能、大数据等技术在从最新疫情数据发布、虚假新闻信息辟谣、人群活动监控和管理、疫情和生活物资流动,到高危人员的调查、追踪,病毒感染者的发现、诊断和治疗,以及普通人群特殊时期日常生活工作等疫情防控各环节发挥着卓有成效的作用,中国正在用“新武器”打赢这场“新冠”战斗。
武汉市卫健委响应国家智慧医疗建设,积极筹备了武汉健康云项目,该项目以病人就诊的“一卡通”、电子病历“一本通”、同级医院检查检验结果的“一单通”为基础,是利用云计算、大数据、物联网和移动互联网等先进技术及理念打造的城市公共健康与医疗综合性服务平台。“武汉健康云”作为武汉市惠民服务工程,需为全市近千万市民提供互联网+健康医疗服务,采用传统架构模式无法满足要求,因此该项目采用基于先进云计算和大数据技术的智领云大数据应用云平台解决方案,规范、高效地实现全民健康信息化项目要求的各项应用功能,同时为深层次大数据应用提供灵活、安全、可靠的基础支撑架构。
“武汉健康云”有3 层架构。第一层是各级各类医疗卫生机构的信息化基础层,第二层是统一的武汉健康大数据云平台,第三层是在平台之上提供的服务,包括互联网+健康服务、分级诊疗服务大数据应用服务,以及特色健康服务等。本文重点阐述大数据应用云平台建设项目组织和实施过程,该应用云平台为“武汉健康云”武汉健康大数据云平台(第二层)提供了坚实的PaaS 层平台,可为平台之上运行的应用(第三层)提供高效稳定的发布、监控、运维及升级服务支撑。
2.1.1 项目需求
武汉健康云大数据应用云平台项目主要需求有4 点:①在同一个平台上支持运行13 家医疗应用厂商与数十种不同后台服务及大数据应用软件;②能部署在两个不同的IaaS 平台(楚天云、电信天翼云);③支持运行两个不同的网络(医疗专网、互联网外网);④以尽可能少的虚拟机资源运行更多的后台服务,并具有快速扩展能力。
2.1.2 项目难点
项目需求带来的难点主要表现在4 个方面。
(1)医疗应用厂商的应用系统有数十种,基于不同的操作系统及开发语言,使用不同类型的数据库。如果使用传统方式,在同一个平台上分布这些应用服务,则需为不同类型的操作系统、不同版本的软件系统分配不同的虚拟机,使整个资源规划异常复杂。因为各应用厂家独立申请资源,无法实现资源共享,导致系统资源利用率低,资源浪费严重。同时,因为各应用厂家独立安装所需系统中间件,其版本、架构不统一,使运维难度增大、成本增加。该部署方式后期也难以进行扩展。当系统访问量急剧增长的时候,如果系统不能快速扩展,则难以保证系统的稳定运行。
(2)从数据层面来看,使用传统方式建设云平台将造成数据集成困难。因为医疗应用厂商将数据保存在各自的数据库系统,造成原始数据和日志数据的管理无法统一,形成大量数据孤岛,应用数据的集成需花费大量精力且无法平滑扩展。
(3)从应用层面来看,开发新的大数据应用将难以实现。因为按照传统模式,数据采集、数据清理、脱敏、机器学习/人工智能应用需单独的系统实现,对接不同应用厂商使用的各种数据库系统,难以实现整体安全策略,无法在保证数据安全的条件下快速实施数据应用。
(4)从部署方式上看,所有应用需部署在内外网的两套IaaS 系统上,其部署流程应方便快速并且保持一致性,而传统部署模式难以保证部署的高效性。
针对以上难点,采用以Mesos 为底层资源管理,以Docker 容器运行微服务应用的云原生架构。
(1)使用Docker 将所有应用服务转化成微服务架构,微服务架构将不同操作系统、不同语言开发的应用都封装到容器里,这样不同的应用系统可运行在同一个虚拟机上,极大降低了部署复杂性并提升了资源利用率。
(2)使用Mesos 管理底层资源(CPU、内存和存储空间),可将所有虚拟机资源当作一个资源池进行管理,自动将容器部署在任何满足容器资源要求的虚拟机之上而无需人工干预。这种资源管理方式进一步降低了系统部署的复杂性,并且能实现统一的应用监控、报警、运维和升级,可在系统访问量急剧增长时快速实现系统扩展。
(3)在微服务架构下,不同应用厂商的应用实现了与数据库系统的分离,使这些应用可共享数据库资源。而共享的数据库资源也部署在统一的云原生架构上,极大简化了数据采集复杂度,可避免数据孤岛的出现,为未来数据中台建设创造条件。
(4)Mesos+容器的云原生架构可提供方便的负载均衡管理,能够轻松满足在内外网环境下的应用服务访问需求,保证应用服务被安全地访问。
武汉健康云大数据应用云平台项目整体规划解决方案采用先进的资源管理系统Mesos 与基于Docker 的微服务架构,实现了医疗应用的PaaS(Platform-as-a-Service)平台。该解决方案架构有3 层,如图1 所示。
(1)底层是整个集群的虚拟机资源,每个虚拟机都安装同一版本的操作系统且配置相同(网络、文件卷及用户)。这种配置在新增资源扩展集群时,可以快速地将一个新的虚拟机加入集群而不需要额外配置。
(2)在虚拟机之上是Mesos 资源管理系统,将虚拟机集群管理成一个统一的资源池,所有CPU、内存和硬盘资源都进行统一的自动化管理。Mesos 支持Marathon 容器调度框架,可以轻松实现容器部署、运维和升级。
(3)在Mesos 资源管理系统之上运行的是智领云BDOS(Data-driven IT Architectured PaaS Platform)大数据操作系统。该系统提供统一的图形化界面管理应用整个生命周期,完成应用安装(容器创建)、发布、和升级。同时,BDOS实现了一个统一的微服务应用监控、报警和运维平台,使各个不同的应用开发厂商可以独立发布、监控和运维各自开发的程序应用。同时,平台运营商可在同一个平台上运维和管理数据库系统。
Fig.1 The architecture of BDOS platform图1 大数据应用云平台整体架构
武汉健康云大数据应用云平台包含下列软件系统:
(1)开源的Mesos 及Marathon 系统。首先针对Mesos 系统开发了一套集群自动检测和部署系统,其中检测系统能对集群中所有虚拟机进行初始(用户、网络、磁盘及安全性)配置,以满足Mesos 安装需求;其次部署系统以并发的方式进行集群部署,极大加速了集群部署速度。
(2)智领云自主研发的BDOS 大数据操作系统。该系统包括7 个子系统:①集群管理。应用云平台提供服务器集群的基础管理功能,包括集群基础信息查询、当前应用总览、集群节点管理功能,包括添加、删除节点和修改节点配置等;②系统服务。为平台提供核心的系统服务,包括二进制文件管理、负载均衡管理;③应用管理。为平台提供应用的发布与配置管理,包括应用部署的资源配置、实例数配置、健康检查配置、服务发现配置、负载均衡配置、日志配置等,还有应用版本控制管理、应用运行状态监控与管理,包括应用状态查询、应用启停控制等;④日志操作管理。为应用云平台提供系统及应用的日志收集、日志存储、日志收索及分析功能,记录系统中所有操作,包括操作人员、参数和运行结果,并提供记录的查询功能;⑤监控报警管理。为应用云平台提供系统与应用的各种资源及状态指标的监控功能,包括硬件资源指标、系统运行状态指标、数据库资源指标、应用状态指标等,并根据预设的报警规则提供报警功能;⑥用户管理。为应用云平台提供用户管理功能,包括个人用户管理、安全组管理,并提供多用户支持、资源隔离、功能隔离、数据隔离和应用隔离等;⑦运维管理。为系统运维开发提供实用工具,包括基于Web 页面操作的Ping 工具、Telnet 工具及Terminal 等。
如图2 所示,BDOS 大数据应用云平台运行在管理虚拟机资源的Mesos 系统以及容器调度框架Marathon 之上。应用云平台本身也是微服务架构,运行多个容器应用。其中,核心应用包含BDOS Core 应用与BDOS Web 应用,这两个应用元数据均保存在MySQL(以容器方式运行)中。BDOS Core 应用通过接口提供各种服务,包括集群管理、系统服务、应用管理、运维工具等。BDOSWeb 应用为系统管理人员提供了图形化操作界面。应用云平台运行的其他容器应用包括提供监控报警管理的Prometheus 和Grafana应用、提供日志管理的Logviewer 应用、提供多用户管理的Keycloak 应用、提供安全认证管理的Kerberos 应用以及提供授权管理的Ranger 应用。
Fig.2 The design of BDOS platform图2 大数据应用云平台整体设计
BDOS 容器应用发布设计如图3 所示。首先,BDOS 容器应用发布有一套标准的配置文件,系统管理人员按照要求从BDOS 图形化操作界面输入容器的Dockerfile,监控面板配置(兼容开源软件Grafana 的配置文件格式)、对外提供服务的接口、监控报警配置(兼容开源软件Prometheus 的配置文件格式)等其他配置选项,然后将应用一键发布成容器。
Fig.3 The design of application deployment图3 大数据应用云平台容器应用发布设计
该容器运行在BDOS 应用云平台之后会与Prometheus监控报警系统、Grafana 监控面板、Logviewer 日志系统进行自动对接,不需要再进行任何手工配置。容器应用安装和部署均由BDOSCore 应用完成。首先在安装过程中,BDOSCore 根据Dockerfile 和其他配置文件,生成该应用容器镜像,然后将镜像推送到BDOS 镜像仓库。在部署过程中,BDOS Core 在收集了该容器应用的所有配置文件后,通过接口调用,将这些文件分别发送到Prometheus(及Pro⁃metheus Alert Manager)和Grafana 应用中,并使新的配置文件在Prometheus 和Grafana 应用中得到启用。同时,BDOS Core 生成该应用的Marathon 任务文件并通过接口调用发送给Marathon,Marathon 会从容器镜像拉取该应用的镜像进行容器部署。需注意在宿主机上部署容器时,容器应用会将日志写入指定的宿主机目录。而每个宿主机都将运行一个Logviewer Agent 容器,收集指定目录的所有日志,并通过BDOSWeb 应用中的Logviewer 界面展示给系统管理人员。另外,在宿主机中,BDOS 运行一个Node Exporter 容器应用收集宿主机资源(CPU、内存、硬盘、网络)监控指标并发送给Prometheus,以完成集群资源监控和报警。最后,每个容器应用配置一个App Exporter 服务将该容器应用的监控指标(比如Http 访问请求数、Http 请求处理时长等)传送给Prometheus,从而实现应用级别的监控和报警。
BDOS 支持多用户系统,每个用户使用同一个ID 和账号登录系统中的所有应用,并使用同一ID 安全访问大数据系统的所有组件。多用户安全体系设计如图4 所示。
首先,用户在应用中的身份认证通过OpenID Connect协议完成。每个新用户创建时,BDOSCore 应用会在开源的Keycloak 应用中创建该用户(和其所属的组),同时在集群所有宿主机上创建该用户Linux 账号,并在Kerberos 应用中创建该用户密钥Keytab 文件。BDOS 运行的系统应用(通过相应的代码开发与集成)运行OpenID Connect 插件,当用户登录这些系统应用时,系统应用通过Keycloak 应用进行身份认证,认证通过以后,用户即可使用同一个账号登录进入系统应用,这与使用微信账号登录多部手机应用是同一道理。当用户需要访问大数据组件(Hadoop、Hive、Spark和Kafka 等)时,BDOS Core 应用会将该用户的ID 以及密钥Keytab 文件传送给需要访问的大数据组件。这些大数据组件首先访问Keycloak 应用,确认该用户已注册并获取用户所属组的信息;然后与ApacheRanger 应用通讯,确认该用户和其所属的组有访问该大数据组件的授权;最后与Ker⁃beros 应用通讯,确认该用户的Keytab 密钥是有效的。当这些安全认证和资源授权通过以后,该用户即可在相应的大数据组件上读写数据。BDOS 应用云平台对应用层开源大数据应用Hue、Superset、Zeppelin 和Jupyter Notebook,以及大数据开源组件Hadoop、Hive、Spark 和Kafka 均进行了开源代码修改,以确保整个用户安全认证体系的统一实现,这些修改将被提交到相应开源项目以回馈开源社区。
Fig.4 The design of multi-tenancy system图4 大数据应用云平台多用户安全体系设计
在项目规划初期,按照传统各厂商部署模式,武汉健康云预估的虚拟机是130 台,但实施大数据应用云平台方案以后,仅使用72 台虚拟机,将规划资源(虚拟机,CPU,内存,硬盘)降低了30%~50%。将所有应用转换成微服务架构后,各厂商自行进行应用发布和升级,从预估以周为单位的发布升级提升为以天为单位的发布升级。由于不同应用厂商发布的应用可运行在同一个虚拟机之上,系统资源使用率从预估的5%增长到30%,提高5~6 倍。
大数据应用云平台上线以后,整个系统支持弹性扩展和按需扩容,从三年规划变为一年规划。首先是软件弹性扩容。例如:一个厂商在上线前突然需发布两个新的应用,在新的架构下,几分钟之后即可发布上线,无需等待分配新机器及配置。新的应用也无需到任何机器上安装,直接从界面上传到容器仓库。在负载增大时可直接点击配置界面,一键扩容,将一个应用实例扩展为N 个应用实例,无需指定任何机器,手动安装,或者手动配置负载均衡;其次是硬件的弹性扩容,需要增加新的虚拟机进入集群时,系统管理人员仅需运行几个命令,5min 之内即可将一台新的虚拟级加入集群。本文将在疫情防控案例分析中详细阐述弹性扩容设计和实现。
大数据应用云平台支持图形化的方式进行应用发布和管理。每个应用开发厂商均有独立的账号,登录后可以进行各自的应用发布和管理,互相不干扰。应用发布和管理的界面可将Tomcat 的war 包、Java 开发的Jar 包以及其他语言开发的系统,以统一配置的方式发布成容器应用,发布后可进行容器启动、停止、扩容、降容、配置修改、配置回滚等各种操作。同时,各系统之间的调用通过Mesos 内置的L4 自动负载均衡加虚拟IP(VIP)实现,无需安装内部DNS 系统,或者以固定IP 或手动配置方式实现负载均衡。这一特性极大简化了服务访问配置复杂性,在扩容或负载迁移的情况下均无需更改配置。
大数据应用云平台支持系统的高可用。首先是整个系统没有无单点失效,当某个应用崩溃的时候,Mesos 会将该应用进行自动重启;其次是当某个虚拟机遭遇硬件故障下线时,Mesos 会自动将该虚拟机上运行的应用迁移到其他有效的并且满足应用资源需求的虚拟机上。同时,由于使用了负载均衡及虚拟IP 模式部署容器应用,各应用实例之间不会出现资源冲突(端口、存储、第三方库),所以可保证容器应用迁移成功。
大数据应用云平台支持统一、自动的监控、报警和日志管理。BDOS 大数据操作系统通过容器应用发布的统一配置,使每个运行的容器应用以统一方式对外发布监控指标,进行监控报警配置,同时将应用日志写入统一的本地硬盘目录。因此这些容器应用的监控指标将被Prometheus监控系统自动收集,它们的监控配置也会自动发送到Pro⁃metheus 的Alert Manager 并进行监控。BDOS 自带的日志系统通过部署在每个虚拟机的代理程序将这些容器应用发布的日志统一收集起来并在图形化的界面上进行展示。除了容器应用的监控,BDOS 还在各虚拟机部署了节点资源监控及容器监控代理服务,将节点资源(CPU、内存、硬盘空间)容器使用资源(CPU、内存、容器文件空间)均纳入了统一的监控系统。
大数据应用云平台上线以后,支撑了武汉健康云13 家医疗应用厂商开发的数十种不同后台服务及大数据应用软件的稳定运行。在疫情期间,由于需支持数百万人同时在线进行核酸检测结果查询,平台在几个小时之内的访问量急剧上升,多个应用出现访问瓶颈,同时系统资源使用率也攀升到90%左右。在这种情况下,系统管理员快速进行了软件和硬件的弹性扩容,在短短的十几分钟之内将系统负载和资源使用率降到平稳程度,可满足急剧增加的访问请求,保证系统稳定运行。
弹性扩容的实现首先需依靠对容器应用和系统资源的监控。本文在介绍系统设计时,已指出BDOS 支持对应用级与虚拟机资源的监控和报警。系统管理人员可通过BDOS 可视化监控面板监测应用及系统的运行情况(彩图扫OSID 码可见),集群资源监控面板中,集群节点CPU和内存使用情况一目了然。应用级别的监控面板对应用资源的最高使用率用红色标注以引起系统管理人员的注意。BDOS 报警系统在系统出现异常情况时,例如某个应用的Http 访问请求数急剧增加,某个节点资源使用率达90%以上,将通过内部邮件或短信的形式通知系统管理人员,进行有效干预。
在疫情期间,由于数百万人同时在线进行核酸检测结果查询,负责结果查询的容器应用的Http 访问请求数急剧增加,同时Http 请求处理时间也出现延时。系统管理人员在收到报警信息后,通过观察监控面板确认访问流量增加,立即实施了容器应用的软件扩容。软件扩容首先是底层系统的支持,Mesos 本身支持容器实例快速扩容,使各虚拟机从统一的容器仓库拉取容器镜像进行快速安装和启动;其次,BDOS 图形化界面提供应用一键扩容功能,系统管理人员仅需点击鼠标,在几秒钟之内即可完成容器应用的扩容。当多个容器应用均需进行软件扩容时,依靠在Mesos 中实现的带权重的DRF(Dominant Resource Fairness)算法[7]实现资源分配。该算法是带权重的最大最小化公平分配算法(Max-Min Fair Share Algorithm)[8],是在多种资源情况下的一种实现,尽量满足容器应用资源请求中的最小需求,然后将集群中剩余的资源公平地分配给剩下的容器应用。带权重的DRF 算法在实践中被证实比其他公平性算法有更好的总体性能[7]。最近研究表明,该算法还可被改进以进一步提高资源使用率[9]。
在应对疫情期间访问流量急剧增加的过程中,系统管理人员还发现系统资源不足的情况,即集群没有足够资源满足软件弹性扩容的需求,需执行硬件弹性扩容。首先系统管理人员将预先准备的虚拟机节点IP 信息输入到BDOS图形化界面,然后点击“一键扩容”。接着,BDOSCore 应用启动虚拟机部署程序,该程序支持并发式部署模式,可在很短时间内完成对多个虚拟机节点初始配置和软件安装,将虚拟机加入到集群中并投入使用。在实际操作中,加入一个新的虚拟机节点时耗在5min 以内,在演练过程中,同时加入5 个虚拟机节点用时在10min 左右。
BDOS 大数据应用云平台弹性扩容机制在疫情期间发挥了重要作用,对于系统管理人员和应用开发厂商而言,该机制从操作简便性与反应快速性方面均远超传统方式下的软硬件扩容方案。传统方式下,新应用的安装及新虚拟机的配置需手动操作,步骤繁琐而且非常耗时,同时通过人工判断如何进行资源分配很难达到预期效果。相比之下,BDOS 支持图形化界面操作,应用及系统监控是可视化界面,软硬件扩容也是可视化界面一键操作,非常方便。同时,容器应用弹性扩容所需资源由DRF 算法保证其公平性,保证了多个容器应用弹性扩容需求能被自动、公平地完成。
现有大型信息化系统云化、容器化是必然趋势,使用一个统一、高效、可靠的PaaS 平台是关键。在建设武汉健康云项目的过程中,基于Mesos+Docker 的大数据应用云平台方案证明是符合需求的架构。从开始架构设计(2017 年10 月)到集成13 家厂商的应用系统上线(2017 年11 月),时耗控制在1 个月以内。从系统目前运营情况,包括应用集成、发布升级速度,系统稳定性,资源使用的效率以及运维灵活方便性等方面来看,该平台达到了设计要求。在大数据应用云平台之上建设的武汉市健康云也成功打通了全市43 家公立医院和204 家基层医疗机构及部分部、省属医院,是武汉市智慧医疗建设的一次提档升级。国家卫生健康委基层司将该项目定位为全国基层健康信息惠民应用试点示范项目。
与大部分企业信息化发展历程相似,医疗行业在发展初期大多强调业务软件开发与功能的实现,随着系统的增多,各种应用烟囱效应逐渐暴露,在数据使用和资源利用方面也出现了相同问题。武汉市城市“智慧健康”项目借助智领云BDOS 提供的大数据应用云平台方案,真正实现了资源的高效利用,尤其在新冠疫情期间,系统能在两天内实现快速弹性扩容,支撑数百万人在线核酸检测结果查询,在突如其来的疫情中实现了最大化的应急防控,该项目建立的可持续发展的医疗服务平台更为健康中国建设起到了添砖加瓦的作用。