CN115994190A - 一种航天海量数据的分布式实时处理方法及*** - Google Patents

一种航天海量数据的分布式实时处理方法及*** Download PDF

Info

Publication number
CN115994190A
CN115994190A CN202310287449.XA CN202310287449A CN115994190A CN 115994190 A CN115994190 A CN 115994190A CN 202310287449 A CN202310287449 A CN 202310287449A CN 115994190 A CN115994190 A CN 115994190A
Authority
CN
China
Prior art keywords
data
processing
frame
load data
load
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202310287449.XA
Other languages
English (en)
Other versions
CN115994190B (zh
Inventor
张健
宋磊
杨守信
郭丽丽
李绪志
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Technology and Engineering Center for Space Utilization of CAS
Original Assignee
Technology and Engineering Center for Space Utilization of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Technology and Engineering Center for Space Utilization of CAS filed Critical Technology and Engineering Center for Space Utilization of CAS
Priority to CN202310287449.XA priority Critical patent/CN115994190B/zh
Publication of CN115994190A publication Critical patent/CN115994190A/zh
Application granted granted Critical
Publication of CN115994190B publication Critical patent/CN115994190B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种航天海量数据的分布式实时处理方法及***,方法包括依据AOS协议标准对航天载荷进行处理恢复出载荷数据帧;实时拉取载荷数据帧,帧同步后对其进行处理,将其封装成载荷数据结构体;实时拉取载荷数据结构体,反序列化后存入数据库中,之后生成载荷数据帧产品和数据解帧质量分析报告;基于Flink处理框架,实时拉取载荷数据结构体,将其反序列化后对其进行分布式处理,将处理结果实时存储到数据库中;实时接收上一步发送的数据,最终生成载荷数据结果的产品文件。优点是:选取kafka作为消息中间件,基于Flink搭建集群对航天数据进行分布式实时处理,极大提高了地面处理***的处理速率、吞吐率,降低了处理时延迟,处理集群便于横向扩展。

Description

一种航天海量数据的分布式实时处理方法及***
技术领域
本发明涉及航天数据处理与存储领域,尤其涉及一种航天海量数据的分布式实时处理方法及***。
背景技术
随着我国在航天领域迈入高速发展的阶段,各类空间科学实验呈爆发式增长,各类载荷在实验中均需获取大量数据,同时天地传输链路和地面站的接收能力也随之大幅度提高,单次过站下传的航天数据急剧增长,且由于科学实验的特殊需求,对地面处理***提出了大数据量、高吞吐、强实时、高可靠、易查询的海量数据实时处理与存储挑战,传统的逐帧解析+关系数据库存储方法已经不能满足需求,面对这一问题,现有技术情况如下:
采用MPI + OpenMp/CUDA的混合并行编程模型,通过对海量遥感数据的处理进行算法分解、数据分解、功能分解以及任务分解,设计作业与资源管理***,搭建了一套遥感数据并行处理***。但是该技术编程模型复杂,实现难度很高,而且需要自行编写分布式集群的队列管理、节点管理组件,不利于动态扩展。
基于Hadoop、Phoenix等大数据批处理技术,能够解决大数据量的快速处理,具有较高吞吐和计算可靠性,但是这类技术主要用于处理历史数据,主要应用于数据挖掘领域,无法满足实时航天数据实时处理的需求。
借鉴MapReduce多线程并行模式,采用hash算法与归并排序算法相结合,提出了一种基于多线程并行处理的航天载荷高速数据流的实时处理方法。相较于传统的单线程逐帧解析模式,该方法能够大幅度提高解析速率和吞吐率,但该法方法仅利用单机的多线程,受限于服务器单机性能,其吞吐量和处理速率有瓶颈,不是真正意义上的分布式集群处理,无法横向扩展。
采用kafka + Spark /Storm + HDFS/Redis是目前航天领域用于实时处理与存储高速下行数据的主要方法。但是相关方法中:Spark作为一种通用并行计算框架,虽然适合大数据量的流式计算,但其内核是通过微批模式来模拟流式计算,其计算延迟只能控制在秒级左右,无法实现毫秒级的计算延迟,这类方法适合处理采集频率不高的遥测数据和一些实现性要求不高的工程、科学数据,无法满足强实时类航天数据的处理需求;Storm是一个主从架构的流计算框架,能够实现真正意义上的分布式实时流计算,但是实际应用中,其保证数据可靠的处理语义是“至少处理一次”,容易造成重复处理,同时纯流的技术框架,对于航天数据中需要开时间窗进行规则计算、拼合的场景无法适用。面对航天海量数据解析后的存储问题,传统的关系型数据库已然不能满足要求,现有***大多基于HDFS或Redis进行设计存储***。但是HDFS在检索效率上有所不足,针对定制化的检索需求表现不佳;Redis的高效存储和查询是基于内存实现的,内存价格昂贵,面对每天TB级别的数据结果,无法长期保存。
发明内容
本发明的目的在于提供一种航天海量数据的分布式实时处理方法及***,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种航天海量数据的分布式实时处理方法,包括如下步骤,
S1、AOS帧处理:
在数据下行计划时间范围内实时接收中继卫星下传的航天载荷数据,依据AOS协议标准对航天载荷进行处理恢复出载荷数据帧,并将载荷数据帧以数据流的方式发送到地面消息中间件kafka的预设主题中;
S2、载荷数据帧格式解析:
在数据下行计划时间范围内实时拉取S1中发送到预设主题中的载荷数据帧,帧同步后对其进行帧格式处理,以将其封装成载荷数据结构体,并在载荷数据结构体经过字节格式序列化后将其发送到预设主题中;
S3、载荷数据帧存储、产品及分析:
在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据,对其进行反序列化后,存储到数据库中;并在数据下行计划结束后,生成载荷数据帧产品以及数据解帧质量分析报告;
S4、载荷数据分布式解析存储:
基于Flink处理框架,在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据作为数据源,将数据源反序列化后对其进行分布式处理,将处理结果实时存储到数据库中,同时将处理结果的元信息以字符串的方式发送到预设主题中;
S5、载荷数据结果的产品文件生成:
在数据下行计划时间范围内实时接收S4中发送到预设主题中的处理结果元信息进行缓存,并在数据下行计划结束后,生成载荷数据结果的产品文件。
优选的,S1中,依据AOS协议标准对航天载荷进行处理恢复出载荷数据帧具体为,
依据AOS协议标准对航天载荷数据进行实时排序、解析、组包,以恢复出载荷数据帧。
优选的,S2中,载荷数据帧的帧格式处理具体为,
对同步成功的载荷数据帧,依据载荷数据的组包格式,对载荷数据帧的帧头进行解析,并提取帧头中各字段信息,判断载荷数据帧的正确性、完整性以及是否需要对其进行组包、拼包或其他特殊处理,将完成帧格式处理的载荷数据帧封装为“元数据+数据区”的载荷数据结构体,以字节格式进行序列化后发送到预设主题中。
优选的,S3中,将数据反序列化后存入到数据库中具体为,
将实时拉取的S2中发送到预设主题中的数据反序列化后,恢复为S2中所述的数据,提取元信息、数据区存储到数据库中;其中,数据库表需要依据元信息内容结合数据库特性合理设计包括分区键和排序键在内的元素。
优选的,S3中,数据下行计划结束后,生成载荷数据帧产品以及数据解帧质量分析报告的具体过程为,
从缓存的元信息中提取所需信息作为查询条件,从数据库中查询获取对应的载荷数据区,生成有序的载荷数据帧产品;
依据缓存的元信息,分类进行丢帧、重复帧、错误情况判断,生成数据解帧质量分析报告。
优选的,S4具体为,
基于Flink分布式处理框架,采用Source算子,加载集群运行环境,引入kafka连接器,创建consumer,在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据作为数据源,对数据源反序列化后,采用process算子对其进行分布式处理,采用sink算子将处理结果压缩后存入数据库,并将处理结果的元信息以字符串的方式发送到预设主题中。
优选的,S4中,采用process算子对其进行分布式处理具体为,
将数据解析字典预先加载到全局内存中;对数据源进行反序列化后,恢复成S2中的载荷数据结构体,提取元信息组成数据id,通过id与预先加载到全局内存中的数据解析字典进行映射,获取对应的解析规则,依据解析规则对数据区进行拆字节/位、编码转换、公式解析、物理值转换、阈值检测处理;采用Rebalance分区策略,将解析结果结构体分发到后续算子,进行入库存储;以Flink任务节点为单位,输出节点上Process算子的运行日志和处理统计日志;
采用sink算子将处理结果压缩后存入数据库具体为,
将处理结果的元信息内容按照Json格式封装后,转化为字符串,采用LZ4算法压缩存储到数据库中;对于入库存储成功的载荷数据帧解析结果结构体,将元信息以Json格式封装,序列化后,发送到预设主题中;以Flink任务节点为单位,输出节点上Sink算子的运行日志和处理统计日志;其中,数据库表需依据元信息内容结合数据库特性,合理设计包括分区键和排序键在内的元素。
优选的,S5具体为,将接收到的数据处理结果元信息进行缓存、排序后,在下行计划结束后,将其作为查询条件,从数据库中查询获取数据处理结果,解压后生成有序的载荷数据结果的产品文件。
优选的,所述数据库为Cassandra数据库。
本发明的目的还在于提供一种航天海量数据的分布式实时处理***,***用于实现上述任一所述的方法,所述***包括,
AOS帧处理模块:用于在数据下行计划时间范围内实时接收中继卫星下传的航天载荷数据,依据AOS协议标准对航天载荷进行处理恢复出载荷数据帧,并将载荷数据帧以数据流的方式发送到地面消息中间件kafka的预设主题中;
载荷数据帧格式解析模块:用于在数据下行计划时间范围内实时拉取S1中发送到预设主题中的载荷数据帧,帧同步后对其进行帧格式处理,以将其封装成载荷数据结构体,并在载荷数据结构体经过字节格式序列化后将其发送到预设主题中;
载荷数据帧存储、产品及分析模块:用于在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据,对其进行反序列化后,存储到数据库中;并在数据下行计划结束后,生成载荷数据帧产品以及数据解帧质量分析报告;
载荷数据分布式解析、存储模块:用于基于Flink处理框架,在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据作为数据源,将数据源反序列化后对其进行分布式处理,将处理结果实时存储到数据库中,同时将处理结果的元信息以字符串的方式发送到预设主题中;
载荷数据产品模块:用于在数据下行计划时间范围内实时接收S4中发送到预设主题中的处理结果元信息进行缓存,并在数据下行计划结束后,生成载荷数据结果的产品文件。
本发明的有益效果是:1、选取kafka作为消息中间件,基于Flink搭建集群对航天数据进行分布式实时处理,极大提高了地面处理***的处理速率、吞吐率,降低了处理时延迟,处理集群便于横向扩展。2、采用无中心、易扩展的分布式非关系型数据库Cassandra作为数据的高效存储、检索介质,结合航天数据特性,设计库表结构,实现了海量数据的长期保存、高效检索。
附图说明
图1是本发明实施例中实时处理方法流程示意图;
图2是本发明实施例中实时处理***的结构框架图;
图3是本发明实施例中AOS帧结构示意图;
图4是本发明实施例中载荷数据帧结构示意图;
图5是本发明实施例中帧格式解析流程图示意图;
图6是本发明实施例中载荷数据帧存储、产品以及分析的流程示意图;
图7是本发明实施例中基于Flink框架的实时处理流程示意图。
实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
实施例
如图1所示,本实施例中,提供了一种航天海量数据的分布式实时处理方法,该方法主要包括五个步骤,分别为:
一、AOS帧处理
对应S1的内容,具体为,地面接收软件在数据下行计划时间范围内实时接收中继卫星下传的航天载荷数据,依据AOS协议标准对航天载荷进行处理恢复出载荷数据帧,(选取kafka为地面数据传输中间件)并将载荷数据帧以数据流的方式发送到地面消息中间件kafka的预设主题中。
本实施例中,依据AOS协议标准对航天载荷进行处理恢复出载荷数据帧具体为,
依据AOS协议标准对航天载荷数据进行实时排序、解析、组包,以恢复出载荷数据帧。
二、载荷数据帧格式解析
对应S2的内容,具体为,创建解帧consumer,在数据下行计划时间范围内实时拉取S1中发送到预设主题中的载荷数据帧,帧同步后对其进行帧格式处理,以将其封装成载荷数据结构体,并在载荷数据结构体经过字节格式序列化后将其发送到预设主题中。
本实施例中,载荷数据帧的帧格式处理具体为,
对同步成功的载荷数据帧,依据载荷数据的组包格式,对载荷数据帧的帧头进行解析,并提取帧头中各字段信息,判断载荷数据帧的正确性、完整性以及是否需要对其进行组包、拼包或其他特殊处理,将完成帧格式处理的载荷数据帧封装为“元数据+数据区”的载荷数据结构体,以字节格式进行序列化后发送到预设主题中。
三、载荷数据帧存储、产品及分析
对应S3的内容,具体为,创建载荷数据帧入库/产品consumer,在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据,对其进行反序列化后,存储到数据库中;并在数据下行计划结束后,生成载荷数据帧产品以及数据解帧质量分析报告。
本实施例中,将数据反序列化后存入到数据库中具体为,
将实时拉取的S2中发送到预设主题中的数据反序列化后,恢复为S2中所述的数据,提取元信息、数据区存储到数据库中;其中,数据库表需要依据元信息内容结合数据库特性合理设计包括分区键和排序键在内的元素。
本实施例中,数据下行计划结束后,生成载荷数据帧产品以及数据解帧质量分析报告的具体过程为,
从缓存的元信息中提取所需信息作为查询条件,从数据库中查询获取对应的载荷数据区,生成有序的载荷数据帧产品;
依据缓存的元信息,分类进行丢帧、重复帧、错误情况判断,生成数据解帧质量分析报告。
四、载荷数据分布式解析存储
对应S4的内容,具体为,基于Flink处理框架,在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据作为数据源,将数据源反序列化后对其进行分布式处理,将处理结果实时存储到数据库中,同时将处理结果的元信息以字符串的方式发送到预设主题中。
具体地,基于Flink分布式处理框架,采用Source算子,加载集群运行环境,引入kafka连接器,创建consumer,在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据作为数据源,对数据源反序列化后,采用process算子对其进行分布式处理,采用sink算子将处理结果压缩后存入数据库,并将处理结果的元信息以字符串的方式发送到预设主题中。
本实施例中,采用process算子其进行分布式处理具体为,
将数据解析字典预先加载到全局内存中;对数据源进行反序列化后,恢复成S2中的载荷数据结构体,提取元信息组成数据id,通过id与预先加载到全局内存中的数据解析字典进行映射,获取对应的解析规则,依据解析规则对数据区进行拆字节/位、编码转换、公式解析、物理值转换、阈值检测处理;采用Rebalance分区策略,将解析结果结构体分发到后续算子,进行入库存储;以Flink任务节点为单位,输出节点上Process算子的运行日志和处理统计日志;
采用sink算子将处理结果压缩后存入数据库具体为,
将处理结果的元信息内容按照Json格式封装后,转化为字符串,采用LZ4算法压缩存储到数据库中;对于入库存储成功的载荷数据帧解析结果结构体,将元信息以Json格式封装,序列化后,发送到预设主题中;以Flink任务节点为单位,输出节点上Sink算子的运行日志和处理统计日志;其中,数据库表需依据元信息内容结合数据库特性,合理设计包括分区键和排序键在内的元素。
五、载荷数据结果的产品文件生成
对应S5的内容,具体为,在数据下行计划时间范围内实时接收S4中发送到预设主题中的处理结果元信息进行缓存,并在数据下行计划结束后,生成载荷数据结果的产品文件。
具体地,将接收到的数据处理结果原信息进行缓存、排序后,在下行计划结束后,将其作为查询条件,从数据库中查询获取数据处理结果,解压后生成有序的载荷数据结果的产品文件。
本实施例中,所述数据库为Cassandra数据库。
如图2所示,本实施例中,提供了一种航天海量数据的分布式实时处理***,***用于实现上述所述的方法,所述***包括,
AOS帧处理模块:用于在数据下行计划时间范围内实时接收中继卫星下传的航天载荷数据,依据AOS协议标准对航天载荷进行处理恢复出载荷数据帧,并将载荷数据帧以数据流的方式发送到地面消息中间件kafka的预设主题中;
载荷数据帧格式解析模块:用于在数据下行计划时间范围内实时拉取S1中发送到预设主题中的载荷数据帧,帧同步后对其进行帧格式处理,以将其封装成载荷数据结构体,并在载荷数据结构体经过字节格式序列化后将其发送到预设主题中;
载荷数据帧存储、产品及分析模块:用于在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据,对其进行反序列化后,存储到数据库中;并在数据下行计划结束后,生成载荷数据帧产品以及数据解帧质量分析报告;
载荷数据分布式解析、存储模块:用于基于Flink处理框架,在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据作为数据源,将数据源反序列化后对其进行分布式处理,将处理结果实时存储到数据库中,同时将处理结果的元信息以字符串的方式发送到预设主题中;
载荷数据产品模块:用于在数据下行计划时间范围内实时接收S4中发送到预设主题中的处理结果元信息进行缓存,并在数据下行计划结束后,生成载荷数据结果的产品文件。
***各模块的实现,与上述实施例中各部分的描述是相对应的,依据上述各部分的实施方法,采用Java等编程语言搭建***,可实现预期的技术效果,故***实现方法在此不再赘述。
本实施例中,***中AOS帧处理模块、载荷数据帧格式解析模块的处理逻辑简单,***开销不大,单节点和少量线程/进程就可以满足较高的吞吐量和处理性能;载荷数据帧存储、产品及分析模块、载荷数据产品模块均为一次下行结束后的批处理任务,主要是为了数据的可追溯、持久化以及数据分析,对于时效性要求不高。因此,从***实现功能独立、界面清晰以及模块划分的角度考虑,没有将上述模块纳入分布式处理框架内实现。
实施例
本实施例中,以空间站的部分工程、科学应用数据为例,对该方法及***的具体实施过程进行详细说明如下:
一、AOS帧处理
Kafka作为分布式消息队列***,其分布式的设计机制,使其拥有实时处理海量数据的能力,本发明实施例中选其作为不同解析过程中的数据缓冲队列,能够有效解决高并发、高吞吐以及快速响应的问题,同时在实时业务场景中能够和Flink、Cassandra等完美结合。
航天器载荷数据种类多、速率不同、格式不同,为了解决这一问题,充分共享空间链路资源,国内外航天数据的天、地传输大多遵循AOS协议标准。地面软件***依据下行计划实时接收到由中继星下传的AOS数据帧后,需先依据协议标准对其进行分类、组包,在数据区内恢复出载荷数据帧,如图3所示。恢复出的数据帧,以字节流的形式通过kafka发送到主题“Topic-s1”中,作为后续解析过程的数据输入。
二、载荷数据帧格式解析
创建kafka的consumer,在主题“Topic-s1”中实时拉取载荷数据帧,并对其进行帧格式解析。
如图4所示,在本发明实施例中选择了具有2层协议(信息***层+CCSDS层)的载荷数据帧来说明帧格式解析方法,实际航天数据由于载荷设计不同,协议结构的层次、设计均有所不同,但是本发明实施例中后续描述的帧格式解析方法均可适用。
(1)信息***层帧格式解析
如图5所示,对实时拉取获得的载荷数据帧,进行帧同步以提取信息***层数据帧,帧同步失败的载荷数据帧,直接将整帧封装为载荷数据结构体,统计帧同步失败数量后,对其序列化,通过kafka的producer发送到预设的主题“Topic-s2”中。载荷数据结构体如表1所示:对于同步失败的载荷数据帧,“元信息”中“信息***层包头”各部分采用预设的填充值,“其他”中“结构体类型标识”可用于区分信息***层载荷数据结构体和CCSDS层载荷数据结构体,“数据异常标志”可用于区分正确或者不同错误类型;“数据区”是按字节存储的整个载荷数据帧;
表1
帧同步通过的,依据信息***层协议按字段解析包头信息。包头信息解析完成后,依据有效数据长度提取数据区,获得信息***层数据帧,同时对包头信息进行正确性、合法性校验,校验数据帧累加和是否正确。将获得的信息***层数据帧及其校验信息封装为表1所示结构的载荷数据结构体:“元信息”中“信息***层包头”依据解析结果记录,“其他”中“数据异常标志”依据校验结果记录,包括正确帧以及元信息中各字段的各种错误情况;“数据区”为按照字节存储的整个数据帧。进行解帧信息统计后,将载荷数据结构体序列化,通过kafka的producer发送到预设的主题“Topic-s2”中。其中,对于信息校验、累加和校验通过的,仍需继续进行后续的CCSDS层数据解析。
到达数据下行结束时间后,统一输出处理日志和统计日志。
(2)CCSDS层帧格式解析
如前所述,对于完成信息***层格式解析的载荷数据帧,对其数据区以单字节为单位进行滑动同步,提取CCSDS层数据帧。帧同步失败的则判定为失步,将失步的数据区封装为载荷数据结构体,统计失步数量后,对其序列化,通过kafka的producer发送到预设的主题“Topic-s2”中。载荷数据结构体如表2所示:
对于失步数据区,“元信息”中“信息***层包头”为信息***层帧格式解析中获得,“CCSDS层包头”为预设的填充值,“其他”中的各字段含义与信息***层帧格式解析中描述的相同;“数据区”是按字节存储的整块失步数据。
表2
帧同步通过的,依据CCSDS层协议按字段解析包头信息。包头信息解析完成后,依据有效数据长度提取数据区,获得CCSDS层数据帧,同时对包头信息进行正确性、合法性校验,对数据帧进行32位的CRC校验。信息校验通过的CCSDS层数据帧,需依据解析后的包头信息,判断是否需要对其进一步的组包、拼包或者拆分等特殊处理。对于获得的CCSDS层数据帧或特殊处理后的数据帧,以及校验信息,封装为表2所示结构的载荷数据结构体:“元信息”依据解析结果记录,其中“数据异常标志”依据校验结果记录,包括正确帧或元信息中各字段的各种错误情况或特殊处理标记;“数据区”为按照字节存储的整个CCSDS数据帧或特殊处理后的全部数据帧。经过解帧信息统计后,将载荷数据结构体序列化,通过kafka的producer发送到预设的主题“Topic-s2”中。
到达数据下行结束时间后,统一输出处理日志和统计日志。
三、载荷数据帧存储、产品及分析
Cassandra是一款分布式非关系型数据库,具有去中心化、可弹性扩展、高性能、高可用等特点,其设计充分利用了服务器集群多CPU、多核的特点,运行在数十台基本商用服务器上,能够一致地提供极高的读、写吞吐量,同时随着服务器数量的扩展,几乎不损失性能。在存储容量方面,可以一致并且无缝地扩展到数百TB,去中心化的结构提高了容错能力,使其不存在单点故障的问题。Cassandra数据库的上述特性与航天海量数据的分布式实时处理过程中强实时、高吞吐的读、写需求以及低成本、易扩展、高可靠的存储需求非常契合,因此在本发明中选择Cassandra数据库用于存储载荷数据帧及后续载荷数据帧的解析结果。
如图6所示,处理程包括载荷数据帧的分类入库、数据产品生成、数据质量分析三部分:
(1)载荷数据帧的分类入库
创建kafka的consumer,在主题“Topic-s2”中实时拉取数据,经过反序列化后,恢复出载荷数据结构体,提取“元信息”,依据其中“结构体类型标识”进行分类入库存储:
表3
Fields 名称 值类型 键值类型
Device 设备名 string 分区键
Taskid 任务号 int 分区键
Plantime 下行计划结束时间 long 分区键
PK 分页序号 int 分区键
Seqnum 信息***层下行帧序号 long 排序键
Checksum 累加和 long 排序键
Timestamp 数据解析时间 long
Metadata 元信息 string
Content 数据区源码 blob
Dataid 数据ID uuid  
对于信息***层数据结构体,数据库表设计见表3。其中:Device为“下行过程标识_下行过程子标识_数据异常标志”构成的字符串,用于对信息***设备类型进行区分;PK为分页序号,可防止同类设备在一次任务下传的数据量太大而影响数据库集群的数据同步性能、读写性能,其值由Seqnum模N(N的值为预先加载的配置,通常依据载荷数据的采集频率设置)获得;Metadata是将元信息内容按照Json格式封装后,转化为字符串;Content为数据结构体中的数据区。为节约数据存储空间,本发明中采用LZ4压缩算法对Metadata和Content部分进行压缩后存储。
表4
Fields 名称 值类型 键值类型
Device 设备名 string 分区键
Taskid 任务号 int 分区键
Plantime 下行计划结束时间 long 分区键
PK 分区序号 int 分区键
Second 采集时间—秒 long 排序键
Subsecond 采集时间—微妙 int 排序键
Seqnum CCSDS层下行帧序号 long 排序键
Checkcrc CRC校验值 long 排序键
Timestamp 数据解析时间 long
Metadata 元信息 string
Content 数据区源码 blob
Dataid 数据ID uuid  
对于CCSDS层数据结构体,数据库表设计见表4。其中:Device为“应用进程ID_子***标识_数据类型_数据异常标志”构成的字符串,用于区分载荷设备的类型;Second和Subsecond是CCSDS数据帧的采集时间,是由“元信息”中的“内部时间码”拆分得到;PK由Second模N获得;Metadata是将元信息内容按照Json格式封装后,转化为字符串存储;Content为数据结构体中的数据区。为节约数据存储空间,本发明中采用LZ4压缩算法对Metadata和Content部分进行压缩后存储。
到达数据下行结束时间后,统一输出一次处理日志和数据入库统计日志。
(2)载荷数据帧产品的生成
对于数据入库过程中反序列化获得的载荷数据结构体,提取“元信息”,依据其中“结构体类型标识”进行分类缓存并生成对应的数据产品,可用于后续数据分析以及指定位置的批处理、重处理等操作。载荷数据帧产品的生成过程如下:
对于信息***层数据结构体,缓存其Device、Taskid、Seqnum、Plantime,设计有序的缓存队列,其中Device、Taskid用于做分类,Seqnum用于做排序。达到下行计划时间后,则锁定队列,依次、批量提取有序缓存队列中的信息,构成查询条件,到数据库中查询获得每帧数据的Content,解压后以字节流的形式写入文件***,生成信息***层的数据产品。有序缓存队列中全部信息被提取完毕后,清空缓存队列,输出本次处理和统计日志,并解锁有序缓存队列。
对于CCSDS层数据结构体,缓存其Device、Taskid、Second、Plantime,设计有序的缓存队列,其中Device、Taskid用于做分类,Second用于做排序。后续生成CCSDS层数据产品的过程,同上所述,此处不再赘述。
(3)载荷数据帧的数据质量分析
对于数据入库过程中反序列化获得的载荷数据结构体,提取“元信息”,依据其中“结构体类型标识”进行分类、有序缓存,到达下行计划结束时间后,锁定缓存队列,对缓存信息进行统计以及丢帧、重复帧等数据质量分析,生成数据质量分析报告,清空缓存队列,输出本次处理和统计日志,并解锁有序缓存队列。
表5
行号 内容
1. [Part0]数据包统计信息概述
2. 开始时间 结束时间 总帧数 正确数 同步头错误数 下行过程标识错误帧数 下行子标识错误帧数
3. …… …… …… …… …… …… ……
4. [Part1]单任务号统计信息概述
5. 过程标识 子过程标识 任务号 开始时间 结束时间 总帧数 正确帧 丢帧 重复帧 累加和异常
6. …… …… …… …… …… …… …… …… …… ……
7. [Part2]单任务号详细统计信息(不记正确帧详细信息)
8. 帧序号 错误类型 帧数
9. …… …… ……
10. …… …… ……
11. [Part1]单任务号统计信息概述
12. ……
13. [Part2]单任务号详细统计信息(不记正确帧详细信息)
14. ……
对于信息***层数据结构体,数据质量分析报告见表5。其中,[Part0]部分为数据的总体情况概述,包括:数据的开始、结束时间,接收到的总帧数,同步头、下行过程标识、下行过程子标识三类无法识别包头信息的错帧数量;[Part1]部分为对可识别包头信息的数据帧(正确帧),按任务号分别统计的情况;[Part2]是对[Part1]中丢帧、重复帧、累加和异常3种情况的展开描述,给出对应的帧序号、错误类型以及错误帧数量。一次数据下传,根据类型和任务号的不同,数据质量分析报告中[Part1]+ [Part2]部分是存在多个的。
对于CCSDS层数据结构体,数据质量分析报告见表6。各部分的处理思路同上所述,这里不再赘述。
表6
行号 内容
1. [Part0] CCSDS数据包统计信息概述
2. 开始时间 结束时间 总帧数 正确数 失步帧数 应用进程ID错误帧数 子***标识错误帧数
3. …… …… …… …… …… …… ……
4. [Part1]CCSDS数据包分路统计信息概述
5. 任务号 应用进程ID 子***标识 数据类型 总帧数 正确帧 丢帧 重复帧 CRC异常
6. …… …… …… …… …… …… …… …… ……
7. [Part2] CCSDS数据包详细统计信息(不记正确帧详细信息)
8. 采集时间(船上时) 帧序号 错误类型 帧数
9. …… …… …… ……
10. …… …… …… ……
11. [Part1]CCSDS数据包统计信息概述
12. ……
13. [Part2] CCSDS数据包详细统计信息(不记正确帧详细信息)
14. ……
四、载荷数据分布式解析、存储
载荷数据帧在完成帧格式解析,提取到CCSDS层数据结构体后,核心部分是依据接口数据单(inrerface data sheet,IDS)对其数据区进行逐个参数的解析,该过程涉及到数据区的拆字节、拆位、编码类型处理、物理值转换、公式计算等诸多定制处理,解析工作量极大。采用传统的单进程、单线程处理方法无法满足实时性要求;采用传统的多进程、多线程处理方法,面向海量数据时,多线程间的安全和同步、多进程间逻辑控制、调度策略以及跨服务器的部署都大大提高了实现复杂度。
Flink是一个流处理、批处理一体的分布式大数据处理框架,具有高吞吐、低延时、支持数据容错、准确计算一次以及易扩展等特点,与航天海量数据的分布式实时处理需求非常契合,图7为基于Flink框架的实时处理流程示意图,如图7所示:
采用Source算子,加载集群运行环境,建立kafka连接器,实时拉取主题“Topic-s2”中序列化的载荷数据结构体作为数据源向后续分发,采用Rebalance分区策略以保持负载均衡。
采用Process算子对获取的数据进行分布式处理,自定义算子处理函数,包括:1)加载IDS到内存;2)反序列化获得载荷数据结构体,提取“元信息”,依据“结构体类型标识”和“数据异常标志”筛选正确的CCSDS层载荷数据体;3)依据元信息构建字符串“应用进程ID_子***标识_数据类型_有效数据长度_包类型”作为数据唯一ID,依据数据ID与IDS建立映射关系,获取解析规则;4)提取“数据区”,依据解析规则对数据区进行逐个参数的解析,主要涉及拆字节/位、编码转换、公式解析、物理值转换、阈值检测等处理,各参数的解析结果按照{“参数代号”:参数名称_源码值_解析值_参数说明_是否超限}封装为Json格式,用解析结果替换掉原数据区的源码内容,形成载荷数据帧解析结果结构体;5)采用Rebalance分区策略,将解析结果结构体分发到后续算子,进行入库存储;6)以Flink任务节点为单位,输出节点上Process算子的运行日志和处理统计日志,便于后续分析;
采用Sink算子将获取的载荷数据帧解析结果结构体存入Cassandra数据库,以便后续生成产品以及实时监视、显示使用,数据库表设计与表4相同,入库过程主要包括:1)提取库表所需各类信息,其中Device同Process算子解析中构建的数据ID,Timestamp为Process算子中记录的解析时间,Metadata是将“元信息”内容按照Json格式封装后,转化为字符串,采用LZ4算法压缩存储,Content为解析结果的Json结构转字符串后压缩存储;2)对于入库存储成功的载荷数据帧解析结果结构体,将“元信息”以Json格式封装,序列化后,通过kafka进行分发,发送到主题“Topic-s4”中;3)以Flink任务节点为单位,输出节点上Sink算子的运行日志和处理统计日志,便于后续分析。
为使分布式实时处理性能更优,本发明实施例中各算子的并行N1,N2,N3之和等于Flink集群任务节点CPU的总核数,其中N1设置为与kafka主题“Topic-s2”的分区数一致,N2与N3的配比保持在20:1左右。
五、载荷数据产品
创建kafka的consumer,在主题“Topic-s4”中实时拉取数据,反序列化后获得载荷数据帧解析结果的“元信息”,提取其Device、Taskid、Second、Plantime进行缓存,其中Device、Taskid用于做分类,Seqnum用于做排序。达到下行计划时间后,则锁定队列,依次、批量提取有序缓存队列中的信息作为查询条件,从数据库中查询获得每帧数据的Content,解压后按照一帧一行,逐行生成csv格式的载荷数据帧解析后的产品,可用于后续数据分析、状态判读、数据挖掘等。
经过***仿真分析和空间站载荷数据分布式实时处理的实践验证:本发明提供的一种航天海量数据的分布式实时处理方法及***,能够有效支持信息***、基础单元以及各科学实验柜等数十大类、数百子类型的载荷数据帧实时解析,处理性能优于1.1Gbps,无累计时延,吞吐量可达8万帧/秒~20万帧/秒。
本发明涉及的分布式实时处理方案的成功应用,可以推广到其他航天飞行器、其他数据传输协议的载荷数据实时处理领域,能够有效提高数据解析、在线分析、异常检测以及数据高效存储方面的能力。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:
本发明提供了一种航天海量数据的分布式实时处理方法及***,通过选取kafka作为消息中间件,基于Flink搭建集群对航天数据进行分布式实时处理,极大提高了地面处理***的处理速率、吞吐率,降低了处理时延迟,处理集群便于横向扩展。采用无中心、易扩展的分布式非关系型数据库Cassandra作为数据的高效存储、检索介质,结合航天数据特性,设计库表结构,实现了海量数据的长期保存、高效检索。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。。

Claims (10)

1.一种航天海量数据的分布式实时处理方法,其特征在于:包括如下步骤,
S1、AOS帧处理:
在数据下行计划时间范围内实时接收中继卫星下传的航天载荷数据,依据AOS协议标准对航天载荷进行处理恢复出载荷数据帧,并将载荷数据帧以数据流的方式发送到地面消息中间件kafka的预设主题中;
S2、载荷数据帧格式解析:
在数据下行计划时间范围内实时拉取S1中发送到预设主题中的载荷数据帧,帧同步后对其进行帧格式处理,以将其封装成载荷数据结构体,并在载荷数据结构体经过字节格式序列化后将其发送到预设主题中;
S3、载荷数据帧存储、产品及分析:
在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据,对其进行反序列化后,存储到数据库中;并在数据下行计划结束后,生成载荷数据帧产品以及数据解帧质量分析报告;
S4、载荷数据分布式解析存储:
基于Flink处理框架,在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据作为数据源,将数据源反序列化后对其进行分布式处理,将处理结果实时存储到数据库中,同时将处理结果的元信息以字符串的方式发送到预设主题中;
S5、载荷数据结果的产品文件生成:
在数据下行计划时间范围内实时接收S4中发送到预设主题中的处理结果元信息进行缓存,并在数据下行计划结束后,生成载荷数据结果的产品文件。
2.根据权利要求1所述的航天海量数据的分布式实时处理方法,其特征在于:S1中,依据AOS协议标准对航天载荷进行处理恢复出载荷数据帧具体为,
依据AOS协议标准对航天载荷数据进行实时排序、解析、组包,以恢复出载荷数据帧。
3.根据权利要求1所述的航天海量数据的分布式实时处理方法,其特征在于:S2中,载荷数据帧的帧格式处理具体为,
对同步成功的载荷数据帧,依据载荷数据的组包格式,对载荷数据帧的帧头进行解析,并提取帧头中各字段信息,判断载荷数据帧的正确性、完整性以及是否需要对其进行组包、拼包或其他特殊处理,将完成帧格式处理的载荷数据帧封装为“元数据+数据区”的载荷数据结构体,以字节格式进行序列化后发送到预设主题中。
4.根据权利要求1所述的航天海量数据的分布式实时处理方法,其特征在于:S3中,将数据反序列化后存入到数据库中具体为,
将实时拉取的S2中发送到预设主题中的数据反序列化后,恢复为S2中所述的数据,提取元信息、数据区存储到数据库中;其中,数据库表需要依据元信息内容结合数据库特性合理设计包括分区键和排序键在内的元素。
5.根据权利要求4所述的航天海量数据的分布式实时处理方法,其特征在于:S3中,数据下行计划结束后,生成载荷数据帧产品以及数据解帧质量分析报告的具体过程为,
从缓存的元信息中提取所需信息作为查询条件,从数据库中查询获取对应的载荷数据区,生成有序的载荷数据帧产品;
依据缓存的元信息,分类进行丢帧、重复帧、错误情况判断,生成数据解帧质量分析报告。
6.根据权利要求1所述的航天海量数据的分布式实时处理方法,其特征在于:S4具体为,
基于Flink分布式处理框架,采用Source算子,加载集群运行环境,引入kafka连接器,创建consumer,在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据作为数据源,对数据源反序列化后,采用process算子对其进行分布式处理,采用sink算子将处理结果压缩后存入数据库,并将处理结果的元信息以字符串的方式发送到预设主题中。
7.根据权利要求6所述的航天海量数据的分布式实时处理方法,其特征在于:S4中,采用process算子对其进行分布式处理具体为,
将数据解析字典预先加载到全局内存中;对数据源进行反序列化后,恢复成S2中的载荷数据结构体,提取元信息组成数据id,通过id与预先加载到全局内存中的数据解析字典进行映射,获取对应的解析规则,依据解析规则对数据区进行拆字节/位、编码转换、公式解析、物理值转换、阈值检测处理;采用Rebalance分区策略,将解析结果结构体分发到后续算子,进行入库存储;以Flink任务节点为单位,输出节点上Process算子的运行日志和处理统计日志;
采用sink算子将处理结果压缩后存入数据库具体为,
将处理结果的元信息内容按照Json格式封装后,转化为字符串,采用LZ4算法压缩存储到数据库中;对于入库存储成功的载荷数据帧解析结果结构体,将元信息以Json格式封装,序列化后,发送到预设主题中;以Flink任务节点为单位,输出节点上Sink算子的运行日志和处理统计日志;其中,数据库表需依据元信息内容结合数据库特性,合理设计包括分区键和排序键在内的元素。
8.根据权利要求1所述的航天海量数据的分布式实时处理方法,其特征在于:S5具体为,将接收到的数据处理结果元信息进行缓存、排序后,在下行计划结束后,将其作为查询条件,从数据库中查询获取数据处理结果,解压后生成有序的载荷数据结果的产品文件。
9.根据权利要求1所述的航天海量数据的分布式实时处理方法,其特征在于:所述数据库为Cassandra数据库。
10.一种航天海量数据的分布式实时处理***,其特征在于:***用于实现上述权利要求1至9任一所述的方法,所述***包括,
AOS帧处理模块:用于在数据下行计划时间范围内实时接收中继卫星下传的航天载荷数据,依据AOS协议标准对航天载荷进行处理恢复出载荷数据帧,并将载荷数据帧以数据流的方式发送到地面消息中间件kafka的预设主题中;
载荷数据帧格式解析模块:用于在数据下行计划时间范围内实时拉取S1中发送到预设主题中的载荷数据帧,帧同步后对其进行帧格式处理,以将其封装成载荷数据结构体,并在载荷数据结构体经过字节格式序列化后将其发送到预设主题中;
载荷数据帧存储、产品及分析模块:用于在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据,对其进行反序列化后,存储到数据库中;并在数据下行计划结束后,生成载荷数据帧产品以及数据解帧质量分析报告;
载荷数据分布式解析、存储模块:用于基于Flink处理框架,在数据下行计划时间范围内实时拉取S2中发送到预设主题中的数据作为数据源,将数据源反序列化后对其进行分布式处理,将处理结果实时存储到数据库中,同时将处理结果的元信息以字符串的方式发送到预设主题中;
载荷数据产品模块:用于在数据下行计划时间范围内实时接收S4中发送到预设主题中的处理结果元信息进行缓存,并在数据下行计划结束后,生成载荷数据结果的产品文件。
CN202310287449.XA 2023-03-23 2023-03-23 一种航天海量数据的分布式实时处理方法及*** Active CN115994190B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310287449.XA CN115994190B (zh) 2023-03-23 2023-03-23 一种航天海量数据的分布式实时处理方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310287449.XA CN115994190B (zh) 2023-03-23 2023-03-23 一种航天海量数据的分布式实时处理方法及***

Publications (2)

Publication Number Publication Date
CN115994190A true CN115994190A (zh) 2023-04-21
CN115994190B CN115994190B (zh) 2023-05-19

Family

ID=85995324

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310287449.XA Active CN115994190B (zh) 2023-03-23 2023-03-23 一种航天海量数据的分布式实时处理方法及***

Country Status (1)

Country Link
CN (1) CN115994190B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116225667A (zh) * 2023-05-08 2023-06-06 中国科学院空天信息创新研究院 面向高轨多星定位的实时流式并行调度处理***
CN116827411A (zh) * 2023-06-27 2023-09-29 北京和德宇航技术有限公司 一种载荷数据解析方法、装置、电子设备和存储介质
CN117112162A (zh) * 2023-08-07 2023-11-24 北京和德宇航技术有限公司 一种数据处理方法、装置、设备和存储介质
CN117234697A (zh) * 2023-11-16 2023-12-15 中国人民解放军国防科技大学 一种保守时间同步并行事件调度计算架构和方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8312056B1 (en) * 2011-09-13 2012-11-13 Xerox Corporation Method and system for identifying a key influencer in social media utilizing topic modeling and social diffusion analysis
CN107783839A (zh) * 2017-09-05 2018-03-09 中国科学院空间应用工程与技术中心 一种多载荷数据处理方法及***
CN114598378A (zh) * 2022-02-25 2022-06-07 中国人民解放军63921部队 航天器载荷数据分发装置及方法
CN115129736A (zh) * 2022-07-04 2022-09-30 东方合智数据科技(广东)有限责任公司 基于规则引擎的规则事件动态加载与更新方法及相关设备
CN115757875A (zh) * 2022-10-30 2023-03-07 中国人民解放军32032部队 一种卫星有效载荷指令链的编制及发控方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8312056B1 (en) * 2011-09-13 2012-11-13 Xerox Corporation Method and system for identifying a key influencer in social media utilizing topic modeling and social diffusion analysis
CN107783839A (zh) * 2017-09-05 2018-03-09 中国科学院空间应用工程与技术中心 一种多载荷数据处理方法及***
CN114598378A (zh) * 2022-02-25 2022-06-07 中国人民解放军63921部队 航天器载荷数据分发装置及方法
CN115129736A (zh) * 2022-07-04 2022-09-30 东方合智数据科技(广东)有限责任公司 基于规则引擎的规则事件动态加载与更新方法及相关设备
CN115757875A (zh) * 2022-10-30 2023-03-07 中国人民解放军32032部队 一种卫星有效载荷指令链的编制及发控方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LEI SONG: "An Automatic Interpretation Method based on Parameter Threshold for Space Utilization Payloads", 2018 IEEE 4TH INFORMATION TECHNOLOGY AND MECHATRONICS ENGINEERING CONFERENCE (ITOEC 2018) *
张健: "基于区间划分的云资源调度方法", 《华中科技大学学报 自然科学版》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116225667A (zh) * 2023-05-08 2023-06-06 中国科学院空天信息创新研究院 面向高轨多星定位的实时流式并行调度处理***
CN116827411A (zh) * 2023-06-27 2023-09-29 北京和德宇航技术有限公司 一种载荷数据解析方法、装置、电子设备和存储介质
CN116827411B (zh) * 2023-06-27 2024-03-01 北京和德宇航技术有限公司 一种载荷数据解析方法、装置、电子设备和存储介质
CN117112162A (zh) * 2023-08-07 2023-11-24 北京和德宇航技术有限公司 一种数据处理方法、装置、设备和存储介质
CN117234697A (zh) * 2023-11-16 2023-12-15 中国人民解放军国防科技大学 一种保守时间同步并行事件调度计算架构和方法
CN117234697B (zh) * 2023-11-16 2024-02-06 中国人民解放军国防科技大学 一种保守时间同步并行事件调度计算架构和方法

Also Published As

Publication number Publication date
CN115994190B (zh) 2023-05-19

Similar Documents

Publication Publication Date Title
CN115994190B (zh) 一种航天海量数据的分布式实时处理方法及***
CN109101627B (zh) 异构数据库同步方法及装置
US9619430B2 (en) Active non-volatile memory post-processing
CN112099948B (zh) 数字孪生制造单元协议标准化与工业大数据实时集成方法
Qian et al. Timestream: Reliable stream computation in the cloud
USRE47106E1 (en) High-performance log-based processing
CN111949633B (zh) 一种基于并行流处理的ict***运行日志分析方法
CN111241038B (zh) 卫星数据处理方法及***
US20160292162A1 (en) Streamlined system to restore an analytic model state for training and scoring
CN111125013B (zh) 一种数据入库方法、装置、设备及介质
Miller et al. Open source big data analytics frameworks written in scala
CN113220716A (zh) 一种提高实时数据库数据处理性能的装置及处理方法
CN109086457B (zh) 一种分布式视频帧随机读取的元数据服务***及工作方法
CN102033959A (zh) 一种分布式计算***中对象传递的方法
Membrey et al. A disk based stream oriented approach for storing big data
Zhao et al. An integrated processing platform for traffic sensor data and its applications in intelligent transportation systems
CN112965805B (zh) 基于内存映射文件的跨进程异步任务处理方法及***
CN115905413A (zh) 一种基于Python协程和DataX的数据同步平台
CN113626510A (zh) 交易核对方法、装置、电子设备及存储介质
Liang Design and Implementation of Big Data Visual Statistical Analysis Platform
CN107169098B (zh) 数据搬运方法、数据搬运装置及电子设备
Deshmukh et al. DESIGN AND DEVELOPMENT OF AN EFFICIENT XML PARSING ALGORITHM: A REVIEW
Tangxiao et al. Data transmission scheme based on publish/subscribe in workshop
CN111800635B (zh) 一种基于avs标准的推测并行视频解码方法
CN104572763A (zh) 一种分布式计算***中对象传递的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant