CN110535689B - 用于事件流中断补偿机制实现的中间件框架及方法 - Google Patents

用于事件流中断补偿机制实现的中间件框架及方法 Download PDF

Info

Publication number
CN110535689B
CN110535689B CN201910726489.3A CN201910726489A CN110535689B CN 110535689 B CN110535689 B CN 110535689B CN 201910726489 A CN201910726489 A CN 201910726489A CN 110535689 B CN110535689 B CN 110535689B
Authority
CN
China
Prior art keywords
data
event
eot
compensation
event stream
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.)
Active
Application number
CN201910726489.3A
Other languages
English (en)
Other versions
CN110535689A (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.)
Beijing Data Driven Technology Co ltd
Original Assignee
Beijing Data Driven Technology Co ltd
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 Beijing Data Driven Technology Co ltd filed Critical Beijing Data Driven Technology Co ltd
Priority to CN201910726489.3A priority Critical patent/CN110535689B/zh
Publication of CN110535689A publication Critical patent/CN110535689A/zh
Application granted granted Critical
Publication of CN110535689B publication Critical patent/CN110535689B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • H04L67/145Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/562Brokering proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及用于事件流中断补偿机制实现的中间件框架及方法。所述中间件框架包括Eot‑Processor、Eot‑BatchService、Eot‑SDK和存储组件,所述Eot‑Processor负责事件流注册、状态刷新、补偿、数据存储;所述Eot‑BatchService负责事件流定义、定时批量补偿任务定义及执行,历史数据检查,过期事件监听等;所述Eot‑SDK提供统一的SDK接口;所述存储组件包括中心缓存系统、文件系统和数据库系统。所述方法包括事件流实例注册、事件流实例执行状态刷新、事件流补偿、注册失败数据恢复、事件注册数据持久化和事件定义同步。本发明以少量的存储资源和CPU资源换取可靠性,提高了业务系统之间传递事件和数据的可靠性。

Description

用于事件流中断补偿机制实现的中间件框架及方法
技术领域
本发明涉及事件流中断补偿机制实现的中间件及方法,属电子信息技术领域。
背景技术
随着信息化建设的不断发展,越来越多的企业建立了自己的信息化平台,包含复数个业务系统,且各业务系统之间存在事件或数据的处理链路。随着信息化平台的不断建设,整个链路的复杂度不断上升,同时可靠性不断下降。
此时即产生了对于当一个事件流或数据流在执行到链路的某一步中断时,可以从链路起始位置或中断位置恢复处理的技术的需求。
发明内容
本发明的目的是弥补现有技术的不足,满足企业或其他系统的上述需求,在安全网络环境内部(企业私有云或公有云内部等)保证业务处理链条(事件流)中断后自动恢复。主要用于事件流或工作流因网络、硬件故障中断,允许实时、定时进行补偿。
本发明的技术方案是:用于事件流中断补偿机制实现的中间件框架,包括:
Eot-Processor:负责事件流注册、状态刷新、补偿、数据存储;
Eot-BatchService:负责事件流定义、定时批量补偿任务定义及执行,历史数据检查,过期事件监听等;
Eot-SDK:提供统一的SDK接口;
存储组件:包括中心缓存系统、文件系统和数据库系统。
用于事件流中断补偿机制实现的方法,包括:
事件流实例注册:包括业务系统事件流实例注册和Eot-Processor端事件流实例注册,所述业务系统事件流实例注册为:业务系统通过Eot-SDK提供的接口进行事件流实例注册,将事件流信封数据传入统一的SDK接口,经过数据校验合格后,作为参数传输到Eot-Processor,等待Eot-Processor的返回结果,若返回结果为注册未成功,将数据存储到文件,以备后期进行批量注册;所述Eot-Processor端事件流实例注册为:Eot-Processor接收到业务系统用于注册的参数后,将参数反序列化为事件流信封对象,进行参数的数据校验,校验通过后依次存储到缓存服务器、本地文件、本地缓存中,向业务系统返回注册成功的结果,若在注册过程的任一环节失败,则向业务系统返回注册失败的结果;
事件流实例执行状态刷新:包括业务系统事件流实例执行状态刷新和Eot-Processor端事件流实例执行状态刷新,所述业务系统事件流实例执行状态刷新为:业务系统通过Eot-SDK提供的接口进行事件流实例执行状态刷新,将事件流信封对象校验通过后作为参数传输到Eot-Processor中;所述Eot-Processor端事件流实例执行状态刷新为:Eot-Processor接收到业务系统用于刷新的参数,将参数反序列化为事件流实例。进行参数的数据校验,校验通过后判断其是否需要补偿,如果不需要补偿,则不刷新数据状态,如果需要补偿,则更新缓存服务器中对应的事件流实例对象的执行状态;
事件流补偿:包括Eot-Processor端事件流自动补偿、Eot-BatchService端定时任务进行批量补偿和Eot-BatchService端历史数据扫描批量补偿,所述Eot-Processor端事件自动补偿为:事件流实例注册时,将事件流实例对象放入到延时队列中,时间是事件流实例对象定义的超时时间,当达到超时时间,从队列中取出事件流实例对象主键,根据主键对比缓存服务器中事件流实例执行状态,查看其是否已经执行完成,若已经执行完成则不补偿,如果没有执行完成则进行补偿;所述Eot-BatchService端定时任务进行批量补偿为:定时任务建立在事件定义上,定时任务的执行为:根据事件定义去DB中拉取数据,当数据量达到阈值时执行状态检查,对数据进行遍历,若该事件已经执行成功,则不补偿,若没有执行成功则调用Eot-Processor批量补偿接口,进行缓存重建,并将数据放入用于补偿的延时队列中进行补偿;所述Eot-BatchService端历史数据扫描批量补偿为:每一设定时间段执行一次,执行方式为扫描缓存服务器中当前时间至设定时间段前的检查分区中的数据,拉取检查分区中的数据进行批量补偿,补偿成功删除旧的检查分区中的事件流实例对象主键,创建新的检查分区,将相关事件流实例对象主键存储到新的检查分区中;
注册失败数据恢复:注册失败的数据存储在文件中,用户调用注册失败数据恢复接口,传入时间参数,读取时间范围内的所有文件,读取文件中的数据,进行重新注册。
还可以包括事件注册数据持久化,所述事件注册数据持久化包括基于内存持久化事件注册数据到DB和基于本地文件持久化事件注册数据到DB,所述基于内存持久化事件注册数据到DB为:事件注册时将数据加入到本地缓存。从本地缓存中读取数据,达到时间阈值或数量阈值时将数据批量入库DB,如果入库失败,将失败的数据加入到一个新的延迟队列中,更新超时时间,待达到超时时间,从延时队列中取出该数据,达到时间阈值或数量阈值时批量入库,如果入库又失败,则更新超时时间重新加入到延时队列中,如此反复,直至入库成功,如果所属一个文件的事件注册数据都已经入库成功则删除此文件;所述基于本地文件持久化事件注册数据到DB为:在Eot-Processor项目启动后,读取所有的事件注册实例文件,批量入库DB,当所属同一个文件的数据全部批量入库DB成功后删除此文件。
还可以包括Eot-BatchService事件定义同步,所述Eot-BatchService事件定义同步为:Eot-BatchService提供web页面,用于进行事件定义的增删改查操作,在对事件定义进行增删改操作时,将最近的事件定义信息同步到Eot-Processor中。
所述补偿方式可以为:Eot-Processor根据事件流定义的请求地址以及事件流实例包装的请求参数,发起Http请求,将异常中断的请求重新执行。
补偿通常要进行多次,直到补偿成功或用尽限定的次数,次数限定由事件流实例定义,若用尽限定的次数后依然补偿不成功,则将补偿失败的数据存储到DB中以便用于批量补偿。
Eot-Processor批量补偿接口的工作方式可以为:接收到BatchService端请求,对请求参数进行校验,校验通过后,缓存服务器中重建缓存,创建缓存成功后,将数据写入本地缓存延时队列中,延时队列中的数据包含自动补偿数据和批量补偿数据,这些数据最终会被从队列中取出进行补偿。
本发明以少量的存储资源和CPU资源换取可靠性,能够通过中间件框架保留事件流信息的冗余数据,并通过延时检查对事件流状态进行验证和自动补发,提高了业务系统之间传递事件和数据的可靠性。整个信息化平台使用本发明的中间件框架,可大大提升平台的可靠性和可维护性。
附图说明
图1是本发明的整体架构示意图;
图2是业务系统通过Eot-SDK提供的接口进行事件流实例注册流程图;
图3是Eot-Processor端事件流实例注册流程图;
图4是业务系统通过Eot-SDK提供的接口进行事件流实例执行状态刷新流程图;
图5是Eot-Processor端事件流实例执行状态刷新流程图;
图6是Eot-Processor端事件流自动补偿流程图;
图7是Eot-BatchService端定时任务进行批量补偿流程图;
图8是Eot-BatchService端历史数据扫描批量补偿流程图;
图9是Eot-Processor 端批量补偿接口流程图;
图10是Eot-BatchService端批量补偿未补偿但已注册的数据流程图;
图11是Eot-SDK注册失败数据恢复流程图;
图12是基于内存持久化事件注册数据到DB流程图;
图13是基于本地文件持久化事件注册数据到DB流程图;
图14是Eot-BatchService事件定义同步流程图。
具体实施方式
一、核心概念说明
事件流定义:一条业务处理链路的定义,包含先后顺序,以及补偿入口定义;
事件流信封:事件流实例,一个用于包装事件流过程数据及状态信息的类,其每个实例代表一条事件流执行过程,该实例保证在任何时候,都至少存在一个备份可以用于补偿时的回溯;
冗余备份:同时在内存和磁盘两个物理层面上保证事件流信封的实例数据不会完全丢失,任何一个层面的数据丢失,都可以从其它层面恢复数据;
事件流实例状态检查:在Eot-Processor端,事件流实例注册完成后进入倒计时模式,当倒计时结束时,检查事件流实例状态,根据各个步骤的状态位确认整个流是否执行完成;
实时补偿:当框架发现某个事件流实例执行失败时,立刻执行补偿,将事件流过程数据发送至业务系统;
定时批量补偿:实时补偿多次仍然失败的数据,进入批量补偿库,定时进行补偿。
二、整体架构
参见图1,本发明采用中间件框架(或称系统)实现事件流中断补偿,所述中间件框架为软件系统,由下列四部分功能模块组成:
Eot-Processor:事件补偿处理服务,负责事件流注册、状态刷新、补偿、数据存储;
Eot-BatchService:事件补偿管理及跑批服务,负责事件流定义、定时批量补偿任务定义及执行,历史数据检查,过期事件监听等;
Eot-SDK:提供统一的SDK接口;
存储组件:包括中心缓存系统、文件系统和数据库系统。
三、核心流程
本发明基于所述中间件框架,采用下列核心流程实现事件流中断补偿机制,该核心流程亦为所述中间件(中间件框架)或者说其各功能模块的核心工作流程:
1)事件流实例注册
业务系统通过Eot-SDK提供的接口将一个事件流信封对象发送到Eot-Processor中,用于后续的刷新以及补偿等操作。
业务系统通过Eot-SDK提供的接口进行事件流实例注册流程如图2所示。具体可以为:业务系统将事件流信封数据传入统一的SDK接口,经过数据校验合格后,作为参数传输到Eot-Processor。等待Eot-Processor的返回结果,判断是否成功。若注册未成功则将数据存储到文件,后期由用户手动调用服务读取文件进行批量注册。
业务系统发起事件注册请求后,事件注册接口对事件流信封是否符合规范进行判断,如果不符合规范,则提示请求失败,如果符合规范,则调用服务端(Eot-Processor端)注册接口,向Eot-Processor发送用于注册的参数,并接收Eot-Processor的返回结果,若返回结果为注册不成功(注册失败),则将数据写入文件。
Eot-Processor端事件流实例注册流程如图3所示。具体可以为:Eot-Processor接收到业务系统的注册请求(用于注册的参数),将参数反序列化为事件流信封对象。进行参数的数据校验,校验通过后依次存储到缓存服务器、本地文件、本地缓存中。
本地缓存有两处:一处是普通的队列,用于批量持久化到DB。另一处是延时队列,用于执行补偿。
以上任何一个环节的失败,都返回业务系统失败。直到所有的环节成功才是真正的注册成功,返回业务系统成功。
若对参数反序列化不成功,返回给业务系统失败。
对请求参数是否符合规范进行判断,若不符合规范,返回给业务系统失败。
若存储缓存服务器不成功,返回给业务系统失败。
若存储本地缓存用于持久化到DB不成功,返回给业务系统失败。
若存储本地缓存用于补偿不成功,返回给业务系统失败。
2)事件流实例执行状态刷新
业务系统通过Eot-SDK提供的接口进行事件流实例执行状态刷新流程如图4所示。具体可以为:将事件流信封对象校验通过后作为参数传输到Eot-Processor中,提供同步单条刷新、异步单条刷新和异步批量刷新三种接口,同步单条刷新会返回刷新结果。异步刷新无结果返回。
事件流实例刷新主要需要字段包括:唯一标识、事件流定义唯一标识和执行状态。
判断事件流信封是否符合规范,如不符合,刷新失败,结束。
Eot-Processor端事件流实例执行状态刷新流程如图5所示。具体可以为:Eot-Processor接收到业务系统的刷新请求,将参数反序列化为事件流实例。进行参数的数据校验,校验通过后判断其是否需要补偿,如果不需要补偿,则不必刷新数据状态。如果需要补偿,则需要更新缓存服务器中其对应的事件流实例对象的执行状态。
若序列化不成功,刷新失败,结束。
若请求参数不符合规范,刷新失败,结束。
若不需要补偿,刷新失败,结束;若需要补偿,刷新缓存服务器中事件流实例的执行状态,刷新成功,结束。
3)事件流补偿
Eot-Processor端事件流自动补偿流程如图6所示。具体可以为:Eot-Processor进行事件流实例注册时,将事件流实例对象放入到延时队列中,时间是事件流实例对象定义的超时时间。当达到超时时间,事件流实例对象主键被从队列中取出,根据主键对比缓存服务器中事件流实例执行状态,查看其是否已经执行完成,若已经执行完成则不需要补偿。如果其没有执行完成则需要进行补偿。
补偿方式为:根据事件流定义的请求地址以及事件流实例包装的请求参数,发起Http请求。即Eot-Processor发起Http请求,将因设备故障等异常中断的请求重新执行。
补偿要进行n次(n≤事件流实例中补偿次数字段的值,由事件流实例定义n的最大限制),确保直到次数用尽补偿成功。若依然补偿不成功,则将其存储到DB中用于批量补偿。
自动补偿是基于内存数据进行补偿,批量补偿是基于补偿失败数据进行补偿。执行成功后需要删除DB和缓存服务器中相关数据。
Eot-BatchService端定时任务进行批量补偿流程如图7所示。具体可以为:项目提供web页面,以便进行批量补偿定时任务的定义。定时任务建立在事件定义上。定时任务的执行是:根据事件定义去DB中拉取数据,当数据量达到阈值,触发批量补偿。判断数据是否已执行成功。若该事件已经执行成功,则不需要再补偿。若没有执行成功则调用Eot-Processor批量补偿接口,进行缓存重建,并将数据放入用于补偿的延时队列中进行补偿。
Eot-BatchService端历史数据扫描批量补偿流程如图8所示。具体可以为:Eot-BatchService端历史数据扫描批量补偿每5分钟(或其他预定的时间间隔)执行一次。每次扫描缓存服务器中5分钟前至当前时间的检查分区中的数据,拉取这批数据,进行批量补偿。补偿成功删除旧的检查分区中其主键。因为补偿成功会创建新的检查分区,将其主键存储到新的检查分区中。
Eot-Processor 端批量补偿接口流程如图9所示。具体可以为:Eot-Processor接收到Eot-BatchService端请求,对请求参数进行校验,校验通过后,缓存服务器中重建缓存。创建缓存成功后,将数据写入本地缓存延时队列中,延时队列中的数据包含自动补偿数据和批量补偿数据,这些数据最终会被从队列中取出进行补偿。
Eot-Processor对请求参数进行验证,若请求参数不符合规范,则返回给Eot-BatchService失败。
如重建缓冲不成功,则返回给Eot-BatchService失败。
若写入本地缓冲延时队列不成功,则返回给Eot-BatchService失败。
Eot-BatchService端批量补偿未补偿但已注册的数据流程如图10所示,具体可以为:事件流注册时,持久化到DB的数据表。每天午夜(或其他设定时间)批量补偿这批数据。正常情况下,补偿成功会将事件流实例在DB中的对应的数据删除。但是如果注册成功补偿失败,那么只能通过持久化到DB中的数据进行恢复补偿。
4)注册失败数据恢复
Eot-SDK注册失败数据恢复流程如图11所示。具体可以为:注册失败的数据存储在文件中。用户调用注册失败数据恢复接口,传入时间参数,读取时间范围内的所有文件。读取文件中的数据,进行重新注册。
注册失败的原因可能为:缓存服务器宕机、Eot-Processor服务宕机、事件定义数据异常(事件定义已经不存在)。
所属同一个文件的数据全部重新注册完成后,删除该文件。
5)事件注册事件注册数据持久化数据持久化
基于内存持久化事件注册数据到DB流程如图12所示。具体可以为:事件注册时将数据加入到本地缓存,从本地缓存中读取数据,达到时间阈值或数量阈值时将数据批量入库DB。如果入库失败。将失败的数据加入到一个新的延迟队列中,相应超时时间是该数据对应的超时时间的1.5倍。待达到超时时间,数据被从延时队列中取出,达到时间阈值或数量阈值时批量入库。如果入库又失败,则更新超时时间重新加入到该延时队列中。
如果所属一个文件的事件注册数据都已经入库成功则删除此文件。
基于本地文件持久化事件注册数据到DB流程如图13所示。具体可以为:在Eot-Processor项目启动后,读取所有的事件注册实例文件,批量入库DB。由于在基于内存批量入库DB时,若Eot-Processor宕机则内存中的数据会丢失,所以Eot-Processor项目启动时,要先基于文件恢复数据持久化到DB。
当所属同一个文件的数据全部批量入库DB成功后删除此文件。
6)事件定义同步
Eot-BatchService事件定义同步流程如图14所示。具体可以为: Eot-BatchService提供web页面,可进行事件定义的增删改查操作,在对事件定义进行增删改操作时,要将最近的事件定义信息同步到Eot-Processor中,确保两者事件定义信息一致。
四、本发明具有以下明显的技术特点:
1)与业务系统解耦,可独立部署、独立运维。
2)核心补偿模块,数据的交换都在内存中进行,性能高,效率高。
3)引入文件存储,确保事件流数据百分百不丢失,此操作也保证了事件流百分百被补偿。
4)中间件框架具备重试机制,业务系统可以完全不需要实现重试机制,将重试交由中间件框架。
5)在中间件、缓存服务器、DB三者保证其中两者正常的情况下,中间件框架百分百补偿数据。例如,
注册:若中间件、缓存服务器、DB发生异常,数据被写入注册失败文件,可调用数据恢复接口进行重新注册;
刷新:若缓存服务器异常,刷新未成功,但不影响补偿流程,只是可能重复补偿,中间件保证一次或多次补偿,重复补偿交由用户处理;
补偿:若中间件、缓存服务器、DB发生异常,数据在注册阶段已经持久化到DB或文件,最终文件中的数据也会进入DB。批量补偿模块负责将DB中的数据进行重新补偿。
6)全程自动化操作
对于用户而言,无需过多的参与和复杂的处理。用户只需要注册数据、刷新数据状态。补偿阶段对用户完全隐藏。框架对整个补偿流程均为自动化操作,无需过多手动参与,降低框架的复杂度,提高效率。
7)非阻塞执行。
本发明公开的各优选和可选的技术手段,除特别说明外及一个优选或可选技术手段为另一技术手段的进一步限定外,均可以任意组合,形成若干不同的技术方案。

Claims (6)

1.用于事件流中断补偿机制实现的方法,其特征在于包括:
事件流实例注册:包括业务系统事件流实例注册和Eot-Processor端事件流实例注册,所述业务系统事件流实例注册为:业务系统通过Eot-SDK提供的接口进行事件流实例注册,将事件流信封数据传入统一的SDK接口,经过数据校验合格后,作为参数传输到Eot-Processor,等待Eot-Processor的返回结果,若返回结果为注册未成功,将数据存储到文件,以备后期进行批量注册;所述Eot-Processor端事件流实例注册为:Eot-Processor接收到业务系统用于注册的参数后,将参数反序列化为事件流信封对象,进行参数的数据校验,校验通过后依次存储到缓存服务器、本地文件、本地缓存中,向业务系统返回注册成功的结果,若在注册过程的任一环节失败,则向业务系统返回注册失败的结果;
事件流实例执行状态刷新:包括业务系统事件流实例执行状态刷新和Eot-Processor端事件流实例执行状态刷新,所述业务系统事件流实例执行状态刷新为:业务系统通过Eot-SDK提供的接口进行事件流实例执行状态刷新,将事件流信封对象校验通过后作为参数传输到Eot-Processor中;所述Eot-Processor端事件流实例执行状态刷新为:Eot-Processor接收到业务系统用于刷新的参数,将参数反序列化为事件流实例,进行参数的数据校验,校验通过后判断其是否需要补偿,如果不需要补偿,则不刷新数据状态,如果需要补偿,则更新缓存服务器中对应的事件流实例对象的执行状态;
事件流补偿:包括Eot-Processor端事件流自动补偿、Eot-BatchService端定时任务进行批量补偿和Eot-BatchService端历史数据扫描批量补偿,所述Eot-Processor端事件自动补偿为:事件流实例注册时,将事件流实例对象放入到延时队列中,时间是事件流实例对象定义的超时时间,当达到超时时间,从队列中取出事件流实例对象主键,根据主键对比缓存服务器中事件流实例执行状态,查看其是否已经执行完成,若已经执行完成则不补偿,如果没有执行完成则进行补偿;所述Eot-BatchService端定时任务进行批量补偿为:定时任务建立在事件定义上,定时任务的执行为:根据事件定义去DB中拉取数据,当数据量达到阈值,触发批量补偿,判断数据是否已执行成功,若该事件已经执行成功,则不补偿,若没有执行成功则调用Eot-Processor批量补偿接口,进行缓存重建,并将数据放入用于补偿的延时队列中进行补偿;所述Eot-BatchService端历史数据扫描批量补偿为:每一设定时间段执行一次,执行方式为扫描缓存服务器中当前时间至设定时间段前的检查分区中的数据,拉取检查分区中的数据进行批量补偿,补偿成功删除旧的检查分区中的事件流实例对象主键,创建新的检查分区,将相关事件流实例对象主键存储到新的检查分区中;
注册失败数据恢复:注册失败的数据存储在文件中,用户调用注册失败数据恢复接口,传入时间参数,读取时间范围内的所有文件,读取文件中的数据,进行重新注册。
2.如权利要求1所述的方法,其特征在于还包括事件注册数据持久化,所述事件注册数据持久化包括基于内存持久化事件注册数据到DB和基于本地文件持久化事件注册数据到DB,所述基于内存持久化事件注册数据到DB为:事件注册时将数据加入到本地缓存,从本地缓存中读取数据,达到时间阈值或数量阈值时将数据批量入库DB,如果入库失败,将失败的数据加入到一个新的延迟队列中,更新超时时间,待达到超时时间,从延时队列中取出该数据,达到时间阈值或数量阈值时批量入库,如果入库又失败,则更新超时时间重新加入到延时队列中,如此反复,直至入库成功,如果所属一个文件的事件注册数据都已经入库成功则删除此文件;所述基于本地文件持久化事件注册数据到DB为:在Eot-Processor项目启动后,读取所有的事件注册实例文件,批量入库DB,当所属同一个文件的数据全部批量入库DB成功后删除此文件。
3.如权利要求2所述的方法,其特征在于还包括Eot-BatchService事件定义同步,所述Eot-BatchService事件定义同步为:Eot-BatchService提供web页面,用于进行事件定义的增删改查操作,在对事件定义进行增删改操作时,将最近的事件定义信息同步到Eot-Processor中。
4.如权利要求1-3任一所述的方法,其特征在于所述补偿方式为:Eot-Processor根据事件流定义的请求地址以及事件流实例包装的请求参数,发起Http请求,将异常中断的请求重新执行。
5.如权利要求4所述的方法,其特征在于Eot-Processor端事件流自动补偿要进行多次,直到补偿成功或用尽限定的次数,次数限定由事件流实例定义,若用尽限定的次数后依然补偿不成功,则将补偿失败的数据存储到DB中以便用于批量补偿。
6.如权利要求1-3任一所述的方法,其特征在于Eot-Processor批量补偿接口的工作方式为:接收到BatchService端请求,对请求参数进行校验,校验通过后,缓存服务器中重建缓存,创建缓存成功后,将数据写入本地缓存延时队列中,延时队列中的数据包含自动补偿数据和批量补偿数据,这些数据最终会被从队列中取出进行补偿。
CN201910726489.3A 2019-08-07 2019-08-07 用于事件流中断补偿机制实现的中间件框架及方法 Active CN110535689B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910726489.3A CN110535689B (zh) 2019-08-07 2019-08-07 用于事件流中断补偿机制实现的中间件框架及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910726489.3A CN110535689B (zh) 2019-08-07 2019-08-07 用于事件流中断补偿机制实现的中间件框架及方法

Publications (2)

Publication Number Publication Date
CN110535689A CN110535689A (zh) 2019-12-03
CN110535689B true CN110535689B (zh) 2022-08-02

Family

ID=68661545

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910726489.3A Active CN110535689B (zh) 2019-08-07 2019-08-07 用于事件流中断补偿机制实现的中间件框架及方法

Country Status (1)

Country Link
CN (1) CN110535689B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111738728A (zh) * 2020-05-15 2020-10-02 苏宁金融科技(南京)有限公司 交易补偿方法及装置
CN111984447B (zh) * 2020-08-10 2022-06-28 江苏苏宁银行股份有限公司 一种银行交易超时或异常场景中的注册补偿系统及方法
CN113377815B (zh) * 2021-06-10 2023-03-14 西安热工研究院有限公司 一种面向实时数据库的写快照断点续传的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101777154A (zh) * 2010-02-01 2010-07-14 浪潮集团山东通用软件有限公司 一种工作流管理系统中工作流数据的持久化方法
CN102200932A (zh) * 2010-03-26 2011-09-28 微软公司 预测性和持久性事件流
CN105871603A (zh) * 2016-03-29 2016-08-17 中国科学院软件研究所 一种基于内存数据网格的实时流式数据处理失效恢复系统及方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6918053B1 (en) * 2000-04-28 2005-07-12 Microsoft Corporation Compensation framework for long running transactions
CN103020147B (zh) * 2012-11-22 2015-10-21 用友软件股份有限公司 数据集成系统和数据集成方法
CN103873287B (zh) * 2012-12-17 2016-12-28 中车青岛四方机车车辆股份有限公司 一种基于企业服务总线消息监控平台的消息补偿方法
US9406040B2 (en) * 2014-08-13 2016-08-02 Sap Se Classification and modelling of exception types for integration middleware systems
CN109933412B (zh) * 2019-01-28 2021-02-23 武汉慧联无限科技有限公司 基于分布式消息中间件的分布式事务处理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101777154A (zh) * 2010-02-01 2010-07-14 浪潮集团山东通用软件有限公司 一种工作流管理系统中工作流数据的持久化方法
CN102200932A (zh) * 2010-03-26 2011-09-28 微软公司 预测性和持久性事件流
CN105871603A (zh) * 2016-03-29 2016-08-17 中国科学院软件研究所 一种基于内存数据网格的实时流式数据处理失效恢复系统及方法

Also Published As

Publication number Publication date
CN110535689A (zh) 2019-12-03

Similar Documents

Publication Publication Date Title
CN110535689B (zh) 用于事件流中断补偿机制实现的中间件框架及方法
CN110569305B (zh) 区块同步方法、装置、介质和计算设备
CN111666162B (zh) 分布式消息传输方法、装置、计算机设备及存储介质
CN110647580B (zh) 分布式容器集群镜像管理主节点、从节点、系统及方法
KR101616967B1 (ko) 다수의 처리 명령어를 실시간으로 취급하고 처리하는 것과 관련된 개선
US8032790B2 (en) Testing of a system logging facility using randomized input and iteratively changed log parameters
CN102971711A (zh) 用于处理批工作单元的设备
CN111400104B (zh) 数据同步方法及装置、电子设备、存储介质
US20150189016A1 (en) Episodic Coordination Model for Distributed Applications
CN110427422A (zh) 数据同步异常时数据一致性校验方法、设备及存储介质
CN112995262B (zh) 分布式事务提交方法、系统及计算设备
CN112596801A (zh) 事务处理方法、装置、设备、存储介质、数据库
CN111880947B (zh) 一种数据传输方法及装置
EP4060514A1 (en) Distributed database system and data disaster backup drilling method
CN112632093A (zh) 工单处理方法、设备、系统、存储介质及程序产品
CN111813607B (zh) 一种基于内存融合的数据库集群恢复日志处理系统
US20120191645A1 (en) Information processing apparatus and database system
CN113553067A (zh) 一种基于rest的多框架机器学习模型部署预测方法
CN111752911A (zh) 一种基于Flume的数据传输方法、系统、终端及存储介质
US7933873B2 (en) Handling transfer of bad data to database partitions in restartable environments
CN116319068B (zh) 一种强隔离环境下提高穿透数据处理效率的方法及系统
CN116775325A (zh) 分布式事务处理方法及系统
CN117453825A (zh) 数据同步方法、装置、介质和存储设备
CN117648129A (zh) 请求异常处理方法、装置、设备及介质
CN117675843A (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