慧扬健康分布式文件系统在医疗行业中的应用

0分享至

用扫码二维码

分享至好友和朋友圈

前言

广州慧扬健康科技有限公司多年来一直致力于医疗信息系统的研发,对产品中分布式文件系统解决方案方面已经形成了自己特有的成熟架构,架构中不仅包含慧扬研发的一套分布式文件系统,还可通过适配器很容易连接HDFS、FastDFS、MinIO等主流分布式文件系统。借本篇文章向读者做一个简要介绍。

1医疗行业现状

经过几十年的发展,从业务范围、业务数据量、互联网化等方面来看,医疗信息系统变的日益庞大和复杂,原来主流的C/S模式的医疗信息系统已不能适应当前多终端、多用户、多层级的行业发展趋势,随着微服务架构的兴起以及国家倡导的信息系统国产化趋势,以微服务为主体架构的使用Java语言(平台无关性)开发的采用B/S模式的新一代医疗信息系统正成为行业信息系统的主流,目前各行业龙头公司都已经推出了自己的新一代系统。

这类新系统具备鲜明的两大技术特点:分布式微服务架构(高可用性)、支持大数据分析处理(BI)。既能为医疗机构提供多领域、全功能、一体化的分布式信息系统,也能通过区域数据汇集、清洗、分析等过程为卫健委等卫生管理部门的指导和监督职能提供决策支持。同时随着系统中接入的智能医疗设备日益增多,新一代系统已开始从传统的信息系统(数据表增删改查)向实时数据处理(kafka\redis\flink等)系统演进。其中以影像数据文件为主的非结构化数据的存储和访问设计成为了高水平的新一代医疗信息系统的重要指标之一。

高可用的、数据安全的、可动态扩展的分布式文件系统成为新一代医疗信息系统必不可少的重要组成部分,需要提供文件存储、文件访问、文件对比、图像搜索等基础功能。

2行业文件数据特性

业务过程中产生的文件主要集中在门诊或住院的医技检验、检查、病理、手术等过程中,其产生时间、文件大小、访问频次都有其特有的行业特征:

(1)产生时间比较集中(门诊高峰期);

(2)文件类型以图像文件为主,大小在几M到数百M之间,视频文件很少;

(3)文件一旦生成基本不会被修改;

(4)文件生成后大多数复诊时会被访问数次(诊断或影像打印时),之后很少访问。

针对上述特点,我们需要一个这样的分布式文件系统:

(1)能自动随着业务量的增减自动调节集群处理能力(提高访问吞吐量);

(2)生成后能在高性能的分布式缓存中滞留一段时间,或者在患者复诊前自动加载到缓存中备读,避免访问时从磁盘读取,提升访问速度;

(3)终端到服务器集群间的网络带宽要充足(硬件要求,本文不关注);

(4)对多读少写的应用场景有优化方案。

3慧扬健康分布式文件系统

3.1主流分布式文件系统简介

lHadoop/HDFS:功能完善,海量存储,访问时延较大,文件越多命名节点上文件寻址检索效率会变低,存储一定量的大文件更有优势。

lFastDFS: 以Group为扩容单位构建的分布式文件存储系统,采用组间静态负载均衡;无断点续传功能;实际应用场景下类似于本地存储+多机备份。更适用于文件数量大,文件尺寸小的应用场景,例如:网站、商城等。

lMinIO: 支持S3对象存储协议的面向低成本云端应用开发的一个轻量级分布式文件系统。部署与使用简单友好,更大优势在于使用MinIO的应用可无缝迁移到云平台上。

上述三种分布式文件系统都有其应用场景,简单地选择其中任何一种都不能很好地同时满足医疗行业对访问速度和存储容量的需求。我公司研发的分布式文件系统就是为解决这一普遍存在的问题而设计的。

3.2慧扬分布式文件系统架构

如上图,慧扬分布式文件系统是介于业务系统与传统分布式文件系统间的一个中间服务层,是技术中台的核心组件之一。慧扬文件系统通过文件存储策略接口和文件存取接口统一向业务中台中的微服务提供文件服务。这两个接口都采用了慧扬特有的动态接口适配器技术,微服务仅需依赖这两个标准接口,从而将业务系统与文件系统的耦合性降到了最低。同时,慧扬分布式文件系统通过“文件系统动态接口代理层”实现了与物理的文件系统的解耦。

标准文件存储过程如下:

(1)从文件存储策略器中获得目标对象目标属性的文件的绝对存储路径。

(2)调用文件存取接口中的文件存储方法,并通过参数指定文件的存储位置。

(3)文件存取器先将文件存储到临时文件区。当对象存储成功(事务结束后)后调用文件存取器提供的文件持久化方法,该方法先通过FSDIP层将文件保存到外接的物理持久层中,然后再将文件预热到内存分布式文件系统中。

(4)至此文件存储完毕,内存分布式文件中的预热文件,将由文件存储策略器中的文件预热器负责释放。

标准文件读取过程如下:

(1)通过文件存储策略器,根据某对象某属性存储的文件名称获取该文件的绝对存储路径,或者根据给定的文件URI地址获取该文件的绝对存储路径。

(2)调用文件存取接口中的文件读取方法,传入文件的绝对存储路径。

(3)文件存取器首先到内存分布式文件系统中读取该文件。如果不存在则通过FSDIP从物理存储层中读取文件并缓存到内存分布式文件系统中。

(4)文件存取器从内存分布式文件系统中读取文件数据并返回给调用方。

慧扬分布式文件系统架构主要以下几部分组件构成:

3.2.1文件存储策略接口

基于对象存储思想,慧扬文件系统为对象的文件类型的属性提供存取定位服务。文件存储策略接口是一个标准接口,采用慧扬接口动态适配技术将其多个实现类聚合起来,统一向外提供服务。该接口包含两个方法:

(1)文件访问地址获取方法(文件定位器实现):

传入对象域类型、对象类名称、对象文件类属性名称、文件类型、对象ID五个参数,返回一个全局访问URL地址。可通过浏览器直接访问该地址查看或下载文件内容。

(2)文件存储地址获取方法(文件定位器实现):

传入对象域类型、对象类名称、对象文件类属性名称、文件类型、对象ID、默认文件名称六个参数,返回一个文件存储的全路径绝对地址。该地址被后续介绍的文件存取接口使用来保存文件数据。

文件存储策略接口由文件存储策略器实现。

3.2.2文件存储策略器

文件存储策略器主要由:文件定位器、文件持久化器和文件预热器组成。文件定位器和文件持久化器是必须实现的,文件预热器是可选的。其中,文件定位器提供了前述的文件访问地址获取方法和文件存储地址获取方法。它决定了某类文件的存储地址和访问地址。

文件定位器是无状态的,同类文件存储策略器的多个实例之间文件定位器可共存;文件持久化器和文件预热器在同类文件存储策略器的多个实例之间,分别仅允许存在一个激活状态的,其他的处于睡眠状态。

默认实现的文件存储策略器按“/{对象域类型}/{文件类型}/{类名}/{实体对象ID}/{属性名}/{文件名称(无后缀)}”向外提供文件访问URL地址和文件存储位置服务。文件名称按调用方可预先推断的、公开的、明确的规则产生(默认采用存储时输入的文件名称)。

文件持久化器主要是对内存分布式文件系统中的某对象域或域内某类的所有文件类属性对应的存储路径中的文件进行监测:

l对外提供方法:当对象保存成功后将临时文件移动到持久化目录下。

l定时清除临时文件区内(/{对象域类型}/{文件类型}/{类名}/{实体对象ID}目录即为临时文件区)超时的临时文件。清除前会检查对应路径的持久化目录下是否已经有了该临时文件对应的持久化文件,如果没有则检查实体对象对应属性值,如果属性值与临时文件名称匹配,则将该临时文件移动到对应的持久化目录下并按持久化文件名称规则修改文件名。

文件预热器主要功能是将文件策略器管理的对象域中的相关实体对象关联的文件提前预热加载到内存分布式文件系统中。是否需要文件预热视对象域中相关业务需求而定的。文件预热器同时也负责将已“冷却”的文件数据从内存分布式文件系统中清除。

3.2.3文件存取接口

文件存取接口是一个标准接口,采用慧扬接口动态适配技术将其多个实现类聚合起来,统一向外提供服务。

文件存取接口除定义了获取指定文件长度方法外,还定义了一组文件读写方法,其中包含有为断点续传功能提供的,支持读取范围参数的方法。

3.2.4 文件存取器

文件存取器实现了文件存取接口,对业务系统提供文件存取服务。

当外部应用读取文件时,文件存取器首先会到内存分布式文件系统中对应路径中查找指定文件,如果不存在则会调用文件系统动态接口代理层(FSDIP)提供接口将目标文件读出并写入到内存分布式文件系统内的对应路径中(这种文件在访问时加载到内存中的方式,我们称为“文件冷加载”)。

3.2.5 内存分布式文件系统

我们采用了Apache Ignite 的IGFS文件系统作为我们的内存分布式文件系统,感兴趣的读者可自行查阅相关资料。

3.2.6 文件系统动态接口代理层

文件系统动态接口代理层(FSDIP)是一系列文件存取接口实现类的结合,通过采用慧扬接口动态适配技术聚合了这些文件存取接口实现类,对调用层以文件存取接口为标准提供统一的访问传统分布式文件系统的功能。FSDIP是慧扬文件存取接口与传统分布式文件系统Client接口的一个转换层。通过这个转换层可充分解耦和集成第三方的分布式文件系统,提高了慧扬文件系统的可扩展性和兼容性。

FSDIP根据调用参数和系统中存在的分布式文件系统Client代理对象,来动态适配文件数据的存储和访问通道。每个Client代理对象根据预定义的存储规则对外提供文件存取服务,例如: HDFS Client代理对象支持存取50M以上或CT影像类型的文件;而50M以下或CT影像类型的缩略文件则由FastDFSClient代理对象支持;而用户身份证照片数据可通过代理存储数据库或FastDFS中。

此外,根据项目或业务需求,可动态新增、启停或切换各类Client代理对象,可对Client代理对象进行规则和优先级设置。FSDIP层完美地解耦了分布式文件系统不同实现对业务平台的影响。

慧扬分布式文件系统非常适合多读少写的业务场景,大量的文件可预热到IGFS中,IGFS是一套高性能的内存分布式文件系统,可通过Apache Ignite提供的连接器连接到Spark、Flink等并行处理组件,作为这些组件的加速器为业务层提供文件并行处理能力。

3.3 应用场景举例

3.3.1 T+n天就诊人员影像文件预热机制

根据挂号信息将n天内要复诊的病人的相关检查影像文件数据提前预热到内存分布式文件系统中。这样在看诊时病人相关检查影像文件加载速度就比“冷加载”(访问时才加载到内存)方式快很多;结合前端加载文件时采用多线程分段加载措施,则影像文件数据加载将会更快。

3.3.2 患者电子病历文档预热机制

患者电子病历文档是一个内容复杂的XML格式文件。医生或患者在终端上查询或打印电子病历文档时速度很慢,甚至不敢开放给患者访问。使用慧扬分布式文件系统后,医生或患者可在使用前提前预热好需要的电子病历文档,为实际应用时提速。而其他文件系统无法为用户提供这样的功能。

3.3.3 为病历全文检索提供高速二级缓存

要实现病历全文检索需要将病历文档“装入”ES等全文检索组件中,病历的装载速度成为了重要的性能指标之一。此时可将一个耗时的装载过程分为两个并行的较短的阶段来完成:第一阶段,从物理存储层中将病历文档数据装载到内存分布式文件系统中;第二阶段,再从内存分布式文件系统中将病历文档数据转载到ES中。这样增加了单位时间的病历文档的数据加载吞吐量,同时缩短了ES服务器数据装置的占用的时间,提供了数据装置效率。

4结束语

存储和访问具备医疗行业特性文件数据,各公司不同项目的商业目标不同而有所取舍,没有最好只有最合适。慧扬公司循着推动和引领医疗行业信息技术革新的初心,将继续为广大客户提供更好的产品!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

/阅读下一篇/

返回网易首页 下载网易新闻客户端