CN109766363B - 流式数据处理方法、系统、电子设备及存储介质 - Google Patents
流式数据处理方法、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN109766363B CN109766363B CN201910017652.9A CN201910017652A CN109766363B CN 109766363 B CN109766363 B CN 109766363B CN 201910017652 A CN201910017652 A CN 201910017652A CN 109766363 B CN109766363 B CN 109766363B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- statistical index
- client
- computing node
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种流式数据处理方法、系统、电子设备及存储介质,每个计算节点与多个客户端节点连接;每个数据缓存节点与多个客户端节点连接,每个数据缓存节点与多个计算节点连接;每个客户端节点与多个数据缓存节点连接,每个客户端节点与多个数据缓存节点连接;当一个数据缓存节点或计算节点或客户端节点宕机后,正常的计算节点和/或数据缓存节点和/或客户端节点在检测n次后未收到宕机的数据缓存节点的回馈,则将该宕机的数据缓存节点或计算节点或客户端节点宕机踢出集群。通过上述计算节点、数据缓存节点和客户端节点的去中心化的连接方式,不存在单点故障,保证了该数据处理系统系统的高可用性。
Description
技术领域
本发明属于数据处理技术领域,具体涉及一种流式数据处理方法、系统、电子设备及存储介质。
背景技术
大数据(bigdata),或称巨量资料、海量资料,是指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。按照数据的输入类型不同,我们可以将其分为批量数据处理和流式数据处理。
随着大数据时代的到来,在大规模、高密度的实时数据处理中,现有技术中的流式数据处理框架包括Spark Streaming(流式数据计算系统)、Storm(容错的数据流处理系统)、Flink(框架和分布式处理引擎)等,在这些流式处理框架中都有相应的实时数据统计模块,此类流式处理框架将实时数据通过流处理,逐条地加载到高性能内存数据库中进行查询,上述框架可以对实时数据实现高效预设统计的查询,且查询数据延迟低。
然而,随着实时数据更高的吞吐量、更低的延时性、更多的统计指标数量、更灵活的统计指标实施等业务要求,现有技术中的流式数据处理系统由于受限于其内存容量,存在以下几个问题:
1.无法计算更多的历史数据;
2.查询数据延时不够低;
3.应用流式数据的统计指标不够灵活。
因此,如何能够计算更多的历史数据且查询的历史数据延迟低,并且统计指标更为灵活成为亟待解决的问题。
发明内容
本发明的目的是提供一种流式数据处理方法、系统、电子设备及存储介质,本发明为了解决在大规模、高密度的实时数据统计,高吞吐量低延时灵活实施的业务需求,本发明提出了一种流式数据处理方法、系统、电子设备及存储介质,采用分布式计算和分布式存储的方法,能够实时接收、读取、处理高并发、滚动时间轴、大流量的数据信息,在毫秒级的时间范围内,计算出业务客户所需要的统计指标数据。
本发明的技术方案是:
一种流式数据处理方法,所述流式数据处理方法包括以下步骤:
客户端节点从数据源获取第一实时数据,根据所述第一实时数据过滤统计指标配置列表数据获得第二实时数据,并对所述第二实时数据进行序列化、压缩以获得第一压缩数据,向计算节点发送第一压缩数据;
计算节点对第一压缩数据进行处理获得统计指标数据,并对所述统计指标数据进行分片以获得分片后的统计指标数据,将所述分片后的统计指标数据压缩后发送到数据缓存节点;
数据缓存节点对所述分片后的统计指标数据进行解压重新获得所述统计指标数据,并将所述统计指标数据存储在redis集群;
其中,当一个数据缓存节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的数据缓存节点的回馈,则将该宕机的数据缓存节点移出集群;
或当一个计算节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的计算节点的回馈,则将该宕机的计算节点移出集群;
或当一个客户端节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的客户端节点的回馈,则将该宕机的客户端节点移出集群;
其中n为大于1或等于1的自然数。
优选的,当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的数据缓存节点的回馈,则将宕机的数据缓存节点下线;
当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的计算节点的回馈,则将宕机的计算节点下线;
当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的客户端节点的回馈,则将宕机的客户端节点下线。
优选的,所述流式数据处理方法还包括步骤:
计算节点根据所述统计指标数据获得第一统计指标结果数据,对所述第一统计指标结果数据进行汇总生成第二统计指标结果数据进而生成第二压缩数据并发送至客户端节点;
客户端节点对所述第二压缩数据进行解压以重新获得第二统计指标结果数据,并将所述第二统计指标结果数据发送至客户业务系统。
优选的,所述统计指标配置列表数据是预先存储在客户端节点的数据库中的。
优选的,所述计算节点包括工作单元和任务单元;其中,所述分片后的统计指标数据通过以下步骤获得:
所述工作单元对第一压缩数据进行解压并反序列化获得第三实时数据,所述工作单元将所述第三实时数据发送到存取单元;
所述任务单元采用滑动窗口方法获取统计指标数据并将所述统计指标数据进行分片获得分片后的统计指标数据,将所述分片后的统计指标数据发送到数据缓存节点。
优选的,所述计算节点还包括存取单元,所述存取单元从数据缓存节点获取第三实时数据的历史数据。
一种流式数据处理系统,所述系统包括多个计算节点,多个数据缓存节点和多个客户端节点;
其中,每个计算节点与多个数据缓存节点连接,每个计算节点与多个客户端节点连接;
每个数据缓存节点与多个客户端节点连接,每个数据缓存节点与多个计算节点连接;
每个客户端节点与多个数据缓存节点连接,每个客户端节点与多个数据缓存节点连接;
客户端节点从数据源获取第一实时数据,根据所述第一实时数据过滤统计指标配置列表数据获得第二实时数据,并对所述第二实时数据进行序列化、压缩以获得第一压缩数据,向计算节点发送第一压缩数据;
计算节点对第一压缩数据进行处理获得统计指标数据,并对所述统计指标数据进行分片以获得分片后的统计指标数据,并将所述分片后的统计指标数据压缩后发送到数据缓存节点;
数据缓存节点对所述分片后的统计指标数据进行解压重新获得所述统计指标数据,并将所述统计指标数据存储在redis集群;其中,当一个数据缓存节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的数据缓存节点的回馈,则将该宕机的数据缓存节点移出集群;
或当一个计算节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的计算节点的回馈,则将该宕机的计算节点移出集群;
或当一个客户端节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的客户端节点的回馈,则将该宕机的客户端节点移出集群;
其中n为大于1或等于1的自然数。
优选的,当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的数据缓存节点的回馈,则将宕机的数据缓存节点下线;
当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的计算节点的回馈,则将宕机的计算节点下线;
当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的客户端节点的回馈,则将宕机的客户端节点下线。
一种电子设备,包括:处理器和存储装置,所述存储装置上存储有计算机程序,所述处理器执行所述存储装置上的计算机程序时实现上述任一项所述的流式数据处理方法。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一项所述的流式数据处理方法。
本发明的一种流式数据处理方法、系统、电子设备及存储介质,每个计算节点与多个客户端节点连接;每个数据缓存节点与多个客户端节点连接,每个数据缓存节点与多个计算节点连接;每个客户端节点与多个数据缓存节点连接,每个客户端节点与多个数据缓存节点连接;当一个数据缓存节点或计算节点或客户端节点宕机后,正常的计算节点和/或数据缓存节点和/或客户端节点在检测n次后未收到宕机的数据缓存节点的回馈,则将该宕机的数据缓存节点或计算节点或客户端节点宕机踢出集群。通过上述计算节点、数据缓存节点和客户端节点的去中心化的连接方式,不存在单点故障,保证了该数据处理系统系统的高可用性。
附图说明
图1是本发明实施例提供的一种流式数据处理系统的整体架构示意图;
图2是本发明实施例提供的一种流式数据处理方法的流程示意图;
图3是本发明实施例提供的一种流式数据处理系统的数据处理示意图;
图4是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
图1是本发明实施例提供的一种流式数据处理系统的整体架构示意图,参见图1:
系统采用在每个成员节点加入集群的时候,设置成员自己的角色。通过角色划分,可以将统计指标集群处理业务的系统划分为多个处理逻辑独立的子系统,每个子系统处理自己的业务逻辑,而且,划分得到的多个子系统都处于一个统一的统计指标集群中。因此,每个子系统也具备了集群所具有的特性,如故障检测、状态转移、状态传播等等。
统计指标集群由多个计算节点/数据缓存节点/客户端节点构成,这些节点有不同的业务处理逻辑,使用角色划分。所有节点在启动时会把自己的地址注册到Zookeeper上,计算节点/数据缓存节点/客户端节点启动时查询Zookeeper上种子节点的注册地址,使用这个地址加入集群。
其中,客户端节点,负责对接业务系统(数据源)的统计指标配置信息和业务实时数据。将统计指标配置平台生成的统计指标配置信息发送到集群的所有计算节点。
计算节点,负责并行计算统计指标。计算节点从客户端节点接收到实时数据信息后,创建计算任务单元(Task)计算统计指标。另外,本发明的计算节点可以启动1到N个。
数据缓存节点,负责缓存并持久化统计指标数据,该节点保持着与Redis集群的连接。数据缓存节点使用集群分片保证数据全局一致性。
实施例一一、一种流式数据处理方法
图2是本发明实施例提供的一种流式数据处理方法的流程示意图,参见图2,所述方法包括以下步骤:
S100:客户端节点从数据源获取第一实时数据,根据所述第一实时数据过滤统计指标配置列表数据获得第二实时数据,并对所述第二实时数据进行序列化、压缩以获得第一压缩数据,向计算节点发送第一压缩数据;
S200:计算节点对第一压缩数据进行处理获得统计指标数据,并对所述统计指标数据进行分片以获得分片后的统计指标数据,并将所述分片后的统计指标数据压缩后发送到数据缓存节点;
S300:数据缓存节点对所述分片后的统计指标数据进行解压重新获得所述统计指标数据,并将所述统计指标数据存储在redis集群;
其中,当一个数据缓存节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的数据缓存节点的回馈,则将该宕机的数据缓存节点移出集群;
或当一个计算节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的计算节点的回馈,则将该宕机的计算节点移出集群;
或当一个客户端节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的客户端节点的回馈,则将该宕机的客户端节点移出集群;
其中n为大于1或等于1的自然数。
进一步的,当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的数据缓存节点的回馈,则将宕机的数据缓存节点下线;
当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的计算节点的回馈,则将宕机的计算节点下线;
当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的客户端节点的回馈,则将宕机的客户端节点下线。
进一步的,所述流式数据处理方法还包括步骤:
计算节点根据所述统计指标数据获得第一统计指标结果数据,对所述第一统计指标结果数据进行汇总生成第二统计指标结果数据进而生成第二压缩数据并发送至客户端节点;
客户端节点对所述第二压缩数据进行解压以重新获得第二统计指标结果数据,并将所述第二统计指标结果数据发送至客户业务系统。
二、一种流式数据处理方法具体工作步骤
下面参照图1和图2详细说明实施例一的流式数据处理方法的具体工作步骤。
S100:客户端节点从数据源获取第一实时数据,根据所述第一实时数据过滤统计指标配置列表数据获得第二实时数据,并对所述第二实时数据进行序列化、压缩以获得第一压缩数据,向计算节点发送第一压缩数据;
其中,步骤S100可以包括以下子步骤S110-S140:
S110:统计指标配置平台将用户配置好的统计指标配置列表数据存储到数据库中,例如:可以将用户的信用卡卡号在最近3天内的交易数量、当天消费的金额等数据存储到数据库Mysql中。
通过所述统计指标配置平台,用户可以配置和部署统计指标;比如,“最近5分钟用户登陆次数”这个统计指标在统计指标配置平台上可表示为:“时间粒度是分钟、时间长度是5、统计方法是累计次数、指标维度是用户”,将上述统计指标配置好后发送到客户端节点,从而可以灵活配置统计指标。
其中:时间粒度,是指时间片按时间单位切分,其中,所述时间单位可以包括秒、分、时、日、月;时间长度,即时间片的个数;统计方法可以包括累计次数、累计求和、去重求次数、TOP排行、求最大值、求最小值、求平均值等常见方法;
指标维度,是指实时数据中的字段,比如:卡号/账号/身份证号码/手机号码等。
S120:客户端节点可以定时或不定时地加载统计指标配置列表数据,并将所述统计指标配置列表数据发送到计算节点,计算节点可以将统计指标配置列表数据存储到本地内存中。
S130:客户端节点从数据源接收第一实时数据,然后根据所述第一实时数据过滤统计指标配置列表数据以获得第二实时数据。
由于统计指标配置列表数据的数据较多,因此客户端节点根据第一实时数据过滤统计指标配置列表数据以获得第二实时数据,这样可以减少客户端节点与计算节点之间的网络传输的数据量;本实施例中,所述数据源例如可以是用户的信用卡,所述第一实时数据是信用卡的所发生的交易数据。
S140:客户端节点将所述第二实时数据序列化和压缩以获得第一压缩数据,然后向计算节点发送所述第一压缩数据。
优选的,本实施例中的客户端节点使用protobuf对第二实时数据序列化并使用deflater方式压缩获得所述第一压缩数据。
本实施例中的protobuf,是一种序列化数据结构的协议。对于透过管线(pipeline)或存储数据进行通信。该protobuf协议包含一个接口描述语言,通过描述数据结构并提供程序工具,根据描述的数据结构产生代码或解析数据流。
S200:计算节点对第一压缩数据进行处理获得统计指标数据,并对所述统计指标数据进行分片以获得分片后的统计指标数据,并将所述分片后的统计指标数据压缩后发送到数据缓存节点;
本实施例中,所述计算节点包括工作单元(Worker)、存取单元(TakeData)和任务单元(Task);所述存取单元根据计算节点保存的统计指标配置列表数据创建所述任务单元(Task);其中,统计指标配置列表数量等于任务单元数量。
具体的,所述步骤200包括以下子步骤S210-S220;
S210:所述计算节点的工作单元对第一压缩数据进行解压并反序列化获得可读的第三实时数据,所述工作单元将所述第三实时数据发送到存取单元。
优选的,本实施例中,所述工作单元对所述第一压缩数据使用inflater方式解压并使用protobuf反序列化获得所述第三实时数据;
优选的,所述存取单元还可以从数据缓存节点获取第三实时数据的历史数据,例如:在信用卡交易过程中产生有100个交易数据,在现有技术中需要对这100个交易数据统一进行计算,并存储到内存中给内存造成极大的负担;而本实施例中的存取单元从数据缓存节点数据缓存节点获取统计指标的历史数据是分片方式获取的,例如:信用卡的发生了100笔的交易数据、同时有100个卡号、50个数据缓存节点,那么这100个卡号对应的统计指标数据将平均分布在这50个数据缓存节点上,那么存取单元处理时就可以并行处理这100笔交易数据,从而可以减轻内存的负担。
S220:任务单元采用滑动窗口方法获取统计指标数据并将所述统计指标数据进行分片获得分片后的统计指标数据,将所述分片后的统计指标数据发送到数据缓存节点;
本实施例中,任务单元采用滑动窗口方法可以将第三实时数据按时间段分割成一个或多个窗口,并按时间粒度切分为多个时间片获取所述统计指标数据;其中,所述第三实时数据的产生时间即事件时间,首先,任务单元按事件时间获得当前第三实时数据对应的某一个时间片;然后将第三实时数据的行为保存在对应的时间片上;最后将所有的时间片进行汇总并发送至存取单元。
本实施例中的时间片是指按时间切分的时间列表,如1分、2分、3分;或1时、2时、3时;或1号、2号、3号等。
现有技术中的统计指标的多少是按每一个统计指标单独进行存储,这样如果用户在一个事件中配置了500个统计指标,一个事件的实时数据接收后要计算500个统计指标,即需要在存储设备上读取500次,使得处理延时较长。
本实施例中,利用指标环对统计指标数据进行存储;其中,指标环是指用于存储统计指标的数组对象,能够按时间片循环存储指标值,该循环是一个闭环的操作步骤。
所述指标环可以按时间片循环存储所述统计指标数据。其中,每一个统计指标对应一个指标环,多个指标环链接在一起存储到一个KEY(存储键值)中。这样,在计算一个事件的实时数据的统计指标时,可以只在存储设备上读取一次,因此采用指标环这种存储方式可以降低保证查询数据延时。
进一步的,本实施例中的流式数据处理方法还可以包括以下步骤:
S230:存取单元根据所述统计指标数据获得第一统计指标结果数据,对所述第一统计指标结果数据进行汇总生成第二统计指标结果数据,并对所述第二统计指标结果数据进行序列化和压缩获得第二压缩数据,并将所述第二压缩数据发送至客户端节点;
所述客户端节点对所述第二压缩数据进行解压、反序列化以重新获得第二统计指标结果数据,并将所述第二统计指标结果数据返回至客户业务系统,即本发明的数据处理系统的调用方。
优选的,所述存取单元采用滑动窗口算法对所述统计指标数据进行计算,获得第一统计指标结果数据,并对所述第一统计指标结果数据进行汇总,生成第二统计指标结果数据;所述存取单元可采用protobuf对所述第二统计指标结果数据进行序列化并采用deflater方式压缩以获得所述第二压缩数据;
优选的,所述客户端节点采用deflater方式对所述第二压缩数据解压,并采用protobuf进行反序列化重新获得所述第二统计指标结果数据。
S300:数据缓存节点对所述分片后的统计指标数据进行解压并反序列化,重新获得所述统计指标数据将所述重新获得所述统计指标数据采用哈希算法保存到Redis(Remote Dictionary Server)集群。
上述步骤S200和S300中的分片是数据库分区的一种,它将大型数据库分成更小、更快、更容易管理的部分,例如:卡号、身份证号、账号、商户号等。
数据缓存节点缓存了卡号、身份证号、账号、商户号等对应的统计指标数据;在一个实施例中,设有3个数据缓存节点(包括节点1、节点2和节点3),计算节点将卡号“123456789”计算后获得的统计指标数据通过预先设置的分片数量进行取模,并计算出当前数据应该发送到哪个节点上,通过这种算法相同的卡号会始终发送到相同的计算节点上,可以尽可能地使分片均匀分布、减少数据倾斜,同时也分散了计算节点的压力;也使得本发明的数据处理系统具有更好的可伸缩、可扩展性。
比如:实时数据“{cardNo=123456789,amount=1200,age=1,eventStartDate=1515196860000}”从客户端发送到计算节点,计算的统计指标结果“{a1=3600.0,a2=4}”发送回客户端节点,计算后的统计指标数据“[a1>1^12^5^1515196860000,1,3600.0,1,0,0,0,0,0,0,0,0<a1]|[a2>1^12^5^1515196860000,1,4,1,0,0,0,0,0,0,0,0<a2]”发送到数据缓存节点。
实施例二
一、一种流式数据处理系统
下面介绍本发明一个实施例提供的一种流式数据处理系统,参见图1-3,可以理解的是,图2仅是本发明的其中的一个示意性的例子,本发明的数据处理系统的各计算节点、数据缓存节点和客户端节点不限于图2示出的连接方式,还包括其他多种如下面描述所包含的其他连接方式,图2不构成对本发明的限制。
本实施例中的数据处理系统包括计算节点、数据缓存节点和客户端节点;所述系统包括多个计算节点,多个数据缓存节点和多个客户端节点;
其中,每个计算节点与多个数据缓存节点连接,每个计算节点与多个客户端节点连接;
每个数据缓存节点与多个客户端节点连接,每个数据缓存节点与多个计算节点连接;
每个客户端节点与多个数据缓存节点连接,每个客户端节点与多个数据缓存节点连接;
客户端节点从数据源获取第一实时数据,根据所述第一实时数据过滤统计指标配置列表数据获得第二实时数据,并对所述第二实时数据进行序列化、压缩以获得第一压缩数据,向计算节点发送第一压缩数据;
计算节点对所述第一压缩数据进行解压和汇总处理以获得统计指标数据,进而生成第二压缩数据并发送至客户端节点;
客户端节点对所述第二压缩数据进行解压和分片以获得分片后的统计指标数据,并将所述分片后的统计指标数据压缩后发送到数据缓存节点;
数据缓存节点对分片后的统计指标数据进行解压重新获得所述统计指标数据,并将所述统计指标数据存储在redis集群;
其中,当一个数据缓存节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的数据缓存节点的回馈,则将该宕机的数据缓存节点移出集群;
或当一个计算节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的计算节点的回馈,则将该宕机的计算节点移出集群;
或当一个客户端节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的客户端节点的回馈,则将该宕机的客户端节点移出集群;
其中n为大于1的自然数。
上述各个节点的具体实施方式与实施例一的各个方法步骤的具体实施方式大致一致;其中,在本实施例中,所述计算节点和数据缓存节点的可以分开设置,主要考虑到以下两点:
1.使用的资源不同
由于计算节点在运行过程中需要更多地使用CPU,而数据缓存节点需要更多地使用内存,因此根据业务数据和访问量来部署计算节点和数据缓存节点的数量;例如:若业务数据较多,则需要启动更多的数据缓存节点以满足数据缓存的需要;而若访问量很大,那么就需要启动更多的计算节点将计算分散负载以降低延迟。
2、统计指标计算和存储的JVM(Java Virtual Machine,Java虚拟机)异步
实施例一中步骤200和步骤300为并行进行,即计算节点对所述第一压缩数据解压、反序列化并汇总得到统计指标数据,再进行序列化、压缩得到第二压缩数据,并将所述第二压缩数据发送至客户端节点的步骤与客户端节点对所述第二压缩数据进行解压、反序列化和分片,获得分片后的统计指标数据,并将所述分片后的统计指标数据发送到数据缓存节点的步骤可以是并行进行,不会形成干扰也不会影响响应效率。
进一步的,本发明的计算节点也进行了功能优化:
所述计算节点采用随机分发方法向客户端节点发送第二压缩数据进行负载;
所述计算节点采用分片方法向数据缓存几点发送统计指标数据,以进行有状态的负载,通过分片键使所有交易分布在整个集群环境的各个节点上。通过这种方式分发消息,竞争共享资源的情况可以减少,能够在集群中的节点之间均衡负载。分片键的生成,采用一致性HASH对统计指标主维度值进行分片。
参见图1-3,本实施例的流式数据处理系统中只要有一个客户端节点或一个计算节点或一个数据数据缓存节点正常工作,该数据处理系统即可正常工作。
当计算节点宕机,其它节点(即正常的计算节点、数据缓存节点或客户端节点)检测n次没有回馈后将宕机的计算节点踢出集群就不会再有请求分发到宕机的计算节点;优选的,本实施例中的n可以取值为3,可以理解的是,在其他实施例中,n也可以取值为其他大于或等于1的其他数值;
或当数据缓存节点宕机,其它节点(正常的计算节点、数据缓存节点或客户端节点)检测n次没有回馈后将宕机的数据缓存节点踢出集群,就不会再有请求分发到宕机的数据缓存节点;优选的,本实施例中的n可以取值为3,可以理解的是,在其他实施例中,n也可以取值为其他大于或等于1的其他数值;
或当客户端节点宕机,其它节点(正常的计算节点、数据缓存节点或客户端节点)检测n次没有回馈后将宕机的客户端节点踢出集群,就不会再有请求分发到宕机的客户端节点;优选的,本实施例中的n可以取值为3,可以理解的是,在其他实施例中,n也可以取值为其他大于或等于1的其他数值。
二、流式数据处理系统的工作过程
下面主要以数据缓存节点宕机为例来说明本实施例的流式数据处理系统的工作过程。
参见图3,当计算节点或客户端节点再次访问宕机的数据缓存节点时,计算节点或客户端节点会选择正常的数据缓存节点;当宕机的数据缓存节点重启后,客户端节点的分片数据会恢复,在恢复的过程中收到的数据会被暂存(stash),恢复结束时不处理暂存的数据和后继的数据;客户端节点缓存发送失败请求,3秒后(在其他实施例中,也可以设置为其他数值的时长)重新发送;计算节点要保证重新发送的交易不重复计算,具体的,本实施例在统计指标数据上加客户端requestId(请求ID),客户端重新发送的请求比对requestId,如果相同则不再计算以保证重新发送的交易不重复计算。
若计算节点或客户端节点发生宕机时,本实施例中的流式数据处理系统的具体工作流程与数据缓存节点宕机时的工作过程类似,在此不再赘述。
进一步的,正常的计算节点、数据缓存节点或客户端节点会定时检测集群节点状态是否正常时,例如:
当正常的计算节点、数据缓存节点或客户端节点检测到“计算节点1”的状态为不可用时,并连续检测n+1次都是不可用时将“计算节点1”下线;优选的,n可以取值为3;
或当正常的计算节点、数据缓存节点或客户端节点检测到“数据缓存节点2”状态为不可用,连续检测n+1次都是不可用就将“数据缓存节点2”下线;优选的,n可以取值为3;
或当正常的计算节点、数据缓存节点或客户端节点检测到“客户端节点1”状态为不可用,连续检测n+1次都是不可用就将“客户端节点1”下线;优选的,n可以取值为3。
另外,本实施例中的计算节点、数据缓存节点或客户端节点如果有宕机情况发生,统计指标数据延时会发生抖动;计算节点、数据缓存节点或客户端节点宕机到下线期间,分发到宕机节点(如:计算节点、数据缓存节点或客户端节点)的统计指标请求会被缓存,3秒后(在其他实施例中,也可以设置为其他数值的时长)重新发送,这样就会增加延时,从而重新发送的统计指标请求保证了可以重新计算当前的统计指标请求,防止丢失统计指标数据。
实施例三
本发明实施例提供一种电子设备,如图4所示,该电子设备至少包括:处理器和存储装置;存储装置上存储有计算机程序,处理器在执行存储装置上的计算机程序时实现本发明任意实施例提供的方法。
本发明实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图3示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
实施例四
本发明实施例提供一种计算机可读存储介质,存储有计算机程序,该程序被处理器执行时实现本发明任意实施例提供的方法。
需要说明的是,本公开所述的计算机可读介质可以是算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。本发明的有益效果:
本发明的实施例中的每个计算节点与多个数据缓存节点连接,每个计算节点与多个客户端节点连接;每个数据缓存节点与多个客户端节点连接,每个数据缓存节点与多个计算节点连接;每个客户端节点与多个数据缓存节点连接,每个客户端节点与多个数据缓存节点连接;当一个数据缓存节点或计算节点或客户端节点宕机后,正常的计算节点和/或数据缓存节点和/或客户端节点在检测n次后未收到宕机的数据缓存节点的回馈,则将该宕机的数据缓存节点或计算节点或客户端节点宕机踢出集群。通过上述计算节点、数据缓存节点和客户端节点的去中心化的连接方式,不存在单点故障,保证了该数据处理系统系统的高可用性。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。
Claims (8)
1.一种流式数据处理方法,其特征在于,所述流式数据处理方法包括以下步骤:
客户端节点从数据源获取第一实时数据,根据所述第一实时数据过滤统计指标配置列表数据获得第二实时数据,并对所述第二实时数据进行序列化、压缩以获得第一压缩数据,向计算节点发送第一压缩数据;
计算节点对第一压缩数据进行处理获得统计指标数据,并对所述统计指标数据进行分片以获得分片后的统计指标数据,利用指标环按时间片循环存储分片后的统计指标数据,将所述分片后的统计指标数据压缩后发送到数据缓存节点,所述指标环是指用于存储统计指标的数组对象,所述指标环按时间片循环存储所述统计指标数据,每一个统计指标对应一个指标环,多个指标环链接在一起存储到一个存储键值中;数据缓存节点对所述分片后的统计指标数据进行解压重新获得所述统计指标数据,并将所述统计指标数据存储在redis集群;
其中,当一个数据缓存节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的数据缓存节点的回馈,则将该宕机的数据缓存节点移出集群;
或当一个计算节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的计算节点的回馈,则将该宕机的计算节点移出集群;
或当一个客户端节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的客户端节点的回馈,则将该宕机的客户端节点移出集群;
其中n为大于1或等于1的自然数;
所述计算节点包括工作单元和任务单元;其中,所述分片后的统计指标数据通过以下步骤获得:
所述工作单元对第一压缩数据进行解压并反序列化获得第三实时数据,所述工作单元将所述第三实时数据发送到存取单元;
所述任务单元采用滑动窗口方法获取统计指标数据并将所述统计指标数据进行分片获得分片后的统计指标数据,将所述分片后的统计指标数据发送到数据缓存节点;
所述计算节点还包括存取单元,所述存取单元从数据缓存节点获取第三实时数据的历史数据;以及
其中,在所述计算节点、数据缓存节点或客户端节点宕机到下线期间,分发到该宕机节点的统计指标请求被缓存,并在一定时间后重新发送。
2.根据权利要求1所述的流式数据处理方法,其特征在于:
当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的数据缓存节点的回馈,则将宕机的数据缓存节点下线;
当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的计算节点的回馈,则将宕机的计算节点下线;
当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的客户端节点的回馈,则将宕机的客户端节点下线。
3.根据权利要求1所述的流式数据处理方法,其特征在于:所述流式数据处理方法还包括步骤:
计算节点根据所述统计指标数据获得第一统计指标结果数据,对所述第一统计指标结果数据进行汇总生成第二统计指标结果数据进而生成第二压缩数据并发送至客户端节点;
客户端节点对所述第二压缩数据进行解压以重新获得第二统计指标结果数据,并将所述第二统计指标结果数据发送至客户业务系统。
4.根据权利要求1所述的流式数据处理方法,其特征在于:所述统计指标配置列表数据是预先存储在客户端节点的数据库中的。
5.一种流式数据处理系统,其特征在于,所述系统包括多个计算节点,多个数据缓存节点和多个客户端节点;
其中,每个计算节点与多个数据缓存节点连接,每个计算节点与多个客户端节点连接;
每个数据缓存节点与多个客户端节点连接,每个数据缓存节点与多个计算节点连接;
每个客户端节点与多个计算节点连接,每个客户端节点与多个数据缓存节点连接;
客户端节点从数据源获取第一实时数据,根据所述第一实时数据过滤统计指标配置列表数据获得第二实时数据,并对所述第二实时数据进行序列化、压缩以获得第一压缩数据,向计算节点发送第一压缩数据;
计算节点对第一压缩数据进行处理获得统计指标数据,并对所述统计指标数据进行分片以获得分片后的统计指标数据,利用指标环按时间片循环存储分片后的统计指标数据,并将所述分片后的统计指标数据压缩后发送到数据缓存节点,所述指标环是指用于存储统计指标的数组对象,所述指标环按时间片循环存储所述统计指标数据,每一个统计指标对应一个指标环,多个指标环链接在一起存储到一个存储键值中;
数据缓存节点对所述分片后的统计指标数据进行解压以重新获得所述统计指标数据,并将所述统计指标数据存储在redis集群;其中,当一个数据缓存节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的数据缓存节点的回馈,则将该宕机的数据缓存节点移出集群;
或当一个计算节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的计算节点的回馈,则将该宕机的计算节点移出集群;
或当一个客户端节点宕机后,正常的计算节点、数据缓存节点或客户端节点在检测n次后未收到该宕机的客户端节点的回馈,则将该宕机的客户端节点移出集群;
其中n为大于1或等于1的自然数;
所述计算节点包括工作单元和任务单元;其中,所述分片后的统计指标数据通过以下步骤获得:
所述工作单元对第一压缩数据进行解压并反序列化获得第三实时数据,所述工作单元将所述第三实时数据发送到存取单元;
所述任务单元采用滑动窗口方法获取统计指标数据并将所述统计指标数据进行分片获得分片后的统计指标数据,将所述分片后的统计指标数据发送到数据缓存节点;
所述计算节点还包括存取单元,所述存取单元从数据缓存节点获取第三实时数据的历史数据;以及
其中,在所述计算节点、数据缓存节点或客户端节点宕机到下线期间,分发到该宕机节点的统计指标请求被缓存,并在一定时间后重新发送。
6.根据权利要求5所述的数据处理系统,其特征在于:
当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的数据缓存节点的回馈,则将宕机的数据缓存节点下线;
当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的计算节点的回馈,则将宕机的计算节点下线;
当正常的计算节点、数据缓存节点或客户端节点检测n+1次后未收到宕机的客户端节点的回馈,则将宕机的客户端节点下线。
7.一种电子设备,其特征在于,包括:处理器和存储装置,所述存储装置上存储有计算机程序,所述处理器执行所述存储装置上的计算机程序时实现权利要求1至4任何一项所述的流式数据处理方法。
8.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4任一项所述的流式数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910017652.9A CN109766363B (zh) | 2019-01-08 | 2019-01-08 | 流式数据处理方法、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910017652.9A CN109766363B (zh) | 2019-01-08 | 2019-01-08 | 流式数据处理方法、系统、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109766363A CN109766363A (zh) | 2019-05-17 |
CN109766363B true CN109766363B (zh) | 2021-06-11 |
Family
ID=66453522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910017652.9A Active CN109766363B (zh) | 2019-01-08 | 2019-01-08 | 流式数据处理方法、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109766363B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338567B (zh) * | 2020-02-13 | 2021-09-17 | 苏州浪潮智能科技有限公司 | 一种基于Protocol Buffer的镜像缓存方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722354A (zh) * | 2012-06-04 | 2012-10-10 | 南京中兴软创科技股份有限公司 | 面向计费业务的数据实时抽取和关键性指标实时分析方法 |
CN103475500A (zh) * | 2012-06-07 | 2013-12-25 | 华为技术服务有限公司 | 一种网络性能指标获取方法、装置和系统 |
CN105608144A (zh) * | 2015-12-17 | 2016-05-25 | 山东鲁能软件技术有限公司 | 一种基于多层模型迭代的大数据分析平台装置及方法 |
CN108664549A (zh) * | 2018-03-29 | 2018-10-16 | 阿里巴巴集团控股有限公司 | 一种大数据处理系统、方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512162B (zh) * | 2015-09-28 | 2019-04-16 | 杭州圆橙科技有限公司 | 一种基于Storm的流数据实时智能化处理框架 |
KR101886072B1 (ko) * | 2016-12-21 | 2018-08-08 | 세림티에스지(주) | 분산 인 메모리 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템 및 방법 |
CN107070890A (zh) * | 2017-03-10 | 2017-08-18 | 北京市天元网络技术股份有限公司 | 一种通信网优系统中的流数据处理装置及通信网优系统 |
-
2019
- 2019-01-08 CN CN201910017652.9A patent/CN109766363B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722354A (zh) * | 2012-06-04 | 2012-10-10 | 南京中兴软创科技股份有限公司 | 面向计费业务的数据实时抽取和关键性指标实时分析方法 |
CN103475500A (zh) * | 2012-06-07 | 2013-12-25 | 华为技术服务有限公司 | 一种网络性能指标获取方法、装置和系统 |
CN105608144A (zh) * | 2015-12-17 | 2016-05-25 | 山东鲁能软件技术有限公司 | 一种基于多层模型迭代的大数据分析平台装置及方法 |
CN108664549A (zh) * | 2018-03-29 | 2018-10-16 | 阿里巴巴集团控股有限公司 | 一种大数据处理系统、方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109766363A (zh) | 2019-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947668B (zh) | 存储数据的方法和装置 | |
EP2948875B1 (en) | Method and system for using a recursive event listener on a node in hierarchical data structure | |
CN112118315A (zh) | 数据处理系统、方法、装置、电子设备和存储介质 | |
US20160034504A1 (en) | Efficient aggregation, storage and querying of large volume metrics | |
CN110535661B (zh) | 基于区块链的业务处理方法、装置、电子设备和存储介质 | |
CN113411404A (zh) | 一种文件下载方法、装置、服务器及存储介质 | |
CN111259060B (zh) | 数据查询的方法及装置 | |
CN112764948A (zh) | 数据发送方法、数据发送装置、计算机设备及存储介质 | |
CN109766363B (zh) | 流式数据处理方法、系统、电子设备及存储介质 | |
CN112181733A (zh) | 一种服务请求的处理方法、装置、设备及存储介质 | |
CN110933145A (zh) | 异地调度方法、装置、设备及介质 | |
CN116185578A (zh) | 计算任务的调度方法和计算任务的执行方法 | |
CN114945026A (zh) | 数据处理方法、装置和系统 | |
CN110019671B (zh) | 一种处理实时消息的方法和系统 | |
CN108984431B (zh) | 用于清空过期缓存的方法和装置 | |
CN110784775A (zh) | 一种视频分片缓存方法、装置及视频点播系统 | |
CN113726832B (zh) | 分布式存储系统的数据存储方法、装置、系统及设备 | |
CN112667607B (zh) | 一种历史数据的管理方法及相关设备 | |
CN112383312B (zh) | 一种数据处理方法、装置、电子设备以及存储介质 | |
US20240202207A1 (en) | Distributed function data transformation system | |
CN114928608B (zh) | 一种多媒体资源的处理方法、装置、设备及存储介质 | |
CN113111086B (zh) | 数据存储和查询响应方法、区块执行方法 | |
CN117057799A (zh) | 资产数据处理方法、装置、设备及存储介质 | |
CN113869977A (zh) | 订单处理系统 | |
CN118034895A (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 |