单一进程的流式数据计算执行调度任务并避免数据丢失的方法、系统及计算机设备技术方案

技术编号:25708554 阅读:19 留言:0更新日期:2020-09-23 02:55
本发明专利技术公开了一种单一进程的流式数据计算中执行调度任务并避免数据丢失的方法、系统及计算机设备,采用微服务提供Restful接口供数据写入并注册至Eureka集群,Flink从Eureka获取写入服务地址并调用接口进行数据持久化。在此基础上增加服务异常捕捉及休眠重试方案,利用Flink的背压机制、Kafka的可重放特性以及Eureka的高可用机制解决了实时统计数据写入时数据丢失的问题。

【技术实现步骤摘要】
单一进程的流式数据计算执行调度任务并避免数据丢失的方法、系统及计算机设备
指本专利技术属于大数据实时流式分布式计算领域,具体是一种单一进程的流式数据计算中执行调度任务并避免数据丢失的方法。
技术介绍
目前实时分布式流处理计算引擎在从分布式消息队列获取数据并进行统计之后完成数据持久化的方式主要有:通过用于执行结构化查询语言语句的应用程序接口写入关系数据库中;1、使用流式计算引擎和各种外部存储的连接器写入至分布式全文搜索引擎、分布式混合型非关系数据库、分布式列式数据库等外部存储,目前多数只能保证至少处理一次语义,少数可以保证刚好处理一次的语义;2、发送至分布式消息队列消息中间件,由其他流式计算任务消费队列数据完成数据持久化;3、直接写入到分布式文件系统等外部存储文件;4、使用流式计算引擎提供的应用程序接口将数据传输给服务提供方后持久化;在针对海量数据进行数据持久化时,在数据库服务不可用或者外部存储写入失败时会导致数据丢失,而这部分数据已经从分布式消息队列中消费获取,难以确定丢失数据对应的消息偏移量故无法准确恢复数据,这对于实时统计数据来说是不可接受的。
技术实现思路
本专利技术的目的在于提供一种单一进程的流式数据计算中执行调度任务并避免数据丢失的方法及系统,解决了实时统计数据写入时数据丢失的问题。实现本专利技术目的的技术解决方案为:一种单一进程的流式数据计算中执行调度任务并避免数据丢失的方法,采用微服务提供接口供数据写入并注册至Eureka集群,Flink从Eureka获取写入服务地址并调用接口进行数据持久化。进一步地,本专利技术单一进程的流式数据计算中执行调度任务并避免数据丢失的方法,具体步骤如下:步骤一:流式计算引擎实时消费分布式消息队列中的数据,启用检查点机制,计算数据节点,生成数据流至最末端数据节点;步骤二:判断缓存中是否存在写入微服务地址,若存在进入步骤三;若不存在,从服务发现框架集群的服务注册中心获取微服务地址,获取成功后缓存至内存中,执行步骤三;若获取失败,休眠后重试,一直到从服务注册中心获取微服务地址成功;步骤三:调用接口发送请求写入数据并主动捕捉异常,判断服务是否正常即数据是否可以写入;若捕捉到异常即写入失败,重新发送请求判断该微服务节点不可用;从集群获取其他可用节点地址,并调用接口验证是否可用。进一步地,所述流式计算引擎中的任务管理器定时对数据节点的缓冲区进行数据采样,并判断是否有数据堆积,若发生堆积,则减缓整个节点链路的数据处理速度来适配最慢的节点。进一步地,启用所述流式计算引擎的检查点机制,触发检查点机制时,将消息队列的消息偏移量及各个数据节点中的缓存数据持久化到分布式文件系统中。进一步地,所述分布式消息队列将数据持久化到磁盘,用以提供消息偏移量来获取历史数据。进一步地,微服务向所述服务发现框架注册服务后,节点之间互相同步注册信息,从任意一个服务注册中心均可获取服务地址;若集群在一定时间内未收到客户端的心跳信息,则认为服务不可用并注销该服务,其他正常的集群节点的服务发现和注册仍然可用。进一步地,所述调用接口时主动捕捉异常,判断服务是否正常即数据是否可以写入,若捕捉到异常则写入服务不可用,重新发送请求,若重复发送超过一定次数,判断该微服务节点为不可用,则从集群获取其他可用节点地址并调用接口验证是否可用。本专利技术单一进程的流式数据计算中执行调度任务并避免数据丢失的系统,包括:数据接入模块,用于采用流式计算引擎实时消费分布式消息队列中的数据,启用检查点机制,计算数据节点,生成数据流至最末端数据节点;数据计算模块,用于从服务发现框架集群的服务注册中心获取微服务地址并缓存至内存中;若获取失败,则目前无任一节点可用,按照一定的重试间隔继续获取服务地址,若服务提供者恢复心跳信息且重新注册,则从服务注册中心成功获取服务地址;数据写入模块,用于调用接口写入数据并主动捕捉异常,判断服务是否正常即数据是否可以写入;若捕捉到异常即写入失败,重新发送请求判断该微服务节点不可用,从集群获取其他可用节点地址,并调用接口验证该节点是否可用。一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:步骤一:流式计算引擎实时消费分布式消息队列中的数据,启用检查点机制,计算数据节点,生成数据流至最末端数据节点;步骤二:判断缓存中是否存在写入微服务地址,若存在进入步骤三;若不存在,从服务发现框架集群的服务注册中心获取微服务地址,获取成功后缓存至内存中,执行步骤三;若获取失败,休眠后重试,一直到从服务注册中心获取微服务地址成功;步骤三:调用接口发送请求写入数据并主动捕捉异常,判断服务是否正常即数据是否可以写入;若捕捉到异常即写入失败,重新发送请求判断该微服务节点不可用;从集群获取其他可用节点地址,并调用接口验证是否可用。本专利技术与现有技术相比,其显著优点:本专利技术利用服务发现框架提供的服务发现注册功能将实时统计数据通过微服务的应用程序接口写入外部存储,通过重试机制结合分布式流式计引擎的背压机制、服务发现框架的高可用特性以及消息队列的可重放机制来避免数据丢失。附图说明图1是本专利技术实施例采用的Flink背压机制的流程图。图2是本专利技术实施例采用的Flink检查点机制的流程图。图3是本专利技术实施例采用的Kafka可重放机制的流程图。图4是本专利技术实施例采用的Eureka高可用及分区一致性的原理图。图5是本专利技术实施例的技术架构图。图6是本专利技术实施例的方案流程图。具体实施方式对于海量实时数据持久化至外部存储存在数据丢失的问题,本专利技术的方案采用微服务提供应用程序接口作为数据写入的入口并注册至服务发现框架集群,流式计算引擎从服务发现框架获取数据写入的服务地址并调用应用程序接口进行数据持久化。在此基础上增加服务异常捕捉及休眠重试方案,利用流式计算引擎的背压机制、分布式消息队列中消息数据的可重放特性以及服务发现框架的高可用机制避免了实时数据的丢失。使用本专利技术提供的技术方案,具有多重保证如下:A、流式计算引擎的背压机制:流式计算引擎中的任务管理器会定时对数据节点的缓冲区进行数据采样来判断是否有数据堆积,当发生数据堆积时会减缓整个节点链路的数据处理速度来适配最慢的节点。B、流式计算引擎的刚好处理一次语义:在启用了流式计算引擎的检查点机制之后,会在检查点机制时将消息队列的消费数据偏移量及各个数据节点中的缓存数据持久化到分布式文件系统中,在从检查点机制中恢复时可以完整回溯到当时的数据节点状态。C、分布式消息队列的可重放机制:分布式消息队列将数据持久化到磁盘来提供消息的可重放机制,提供消息偏移量可获取历史数据,为消费系统提供了数据保障。D、服务发现框架的高可用机制以及分区一致性:微服务向服务发现框架注册服务后,节点之本文档来自技高网...

【技术保护点】
1.一种单一进程的流式数据计算中执行调度任务并避免数据丢失的方法,其特征在于:/n采用微服务提供应用程序接口供数据写入并注册至服务发现框架集群,流式计算引擎从服务发现框架获取数据写入的服务地址,并调用应用程序接口进行数据持久化,同时实施服务异常捕捉及休眠重试方案。/n

【技术特征摘要】
1.一种单一进程的流式数据计算中执行调度任务并避免数据丢失的方法,其特征在于:
采用微服务提供应用程序接口供数据写入并注册至服务发现框架集群,流式计算引擎从服务发现框架获取数据写入的服务地址,并调用应用程序接口进行数据持久化,同时实施服务异常捕捉及休眠重试方案。


2.如权利要求1所述的方法,其特征在于,具体步骤如下:
步骤一:流式计算引擎实时消费分布式消息队列中的数据,启用检查点机制,计算数据节点,生成数据流至最末端数据节点;
步骤二:判断缓存中是否存在写入微服务地址,若存在进入步骤三;若不存在,从服务发现框架集群的服务注册中心获取微服务地址,获取成功后缓存至内存中,执行步骤三;若获取失败,休眠后重试,一直到从服务注册中心获取微服务地址成功;
步骤三:调用接口发送请求写入数据并主动捕捉异常,判断服务是否正常即数据是否可以写入;若捕捉到异常即写入失败,重新发送请求判断该微服务节点不可用;从集群获取其他可用节点地址,并调用接口验证是否可用。


3.如权利要求1或2所述的方法,其特征在于:所述流式计算引擎中的任务管理器定时对数据节点的缓冲区进行数据采样,并判断是否有数据堆积,若发生堆积,则减缓整个节点链路的数据处理速度来适配最慢的节点。


4.如权利要求1或2所述的方法,其特征在于:启用所述流式计算引擎的检查点机制,触发检查点机制时,将消息队列的消息偏移量及各个数据节点中的缓存数据持久化到分布式文件系统中。


5.如权利要求1或2所述的方法,其特征在于:所述分布式消息队列将数据持久化到磁盘,用以提供消息偏移量来获取历史数据。


6.如权利要求1或2所述的方法,其特征在于:微服务向所述服务发现框架注册服务后,节点之间互相同步注册信息,从任意一个服务注册...

【专利技术属性】
技术研发人员:黄春晖王刚
申请(专利权)人:苏宁云计算有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1