处理数据的方法和装置制造方法及图纸

技术编号:20119312 阅读:23 留言:0更新日期:2019-01-16 12:20
本申请提供了一种处理数据的方法和装置,该方法包括:主应用获取该主应用和至少一个备应用中的多个客户端模块的标识信息;该主应用根据该标识信息确定第一客户端模块的第一预配置关系和第二预配置关系,其中,该第一客户端模块为多个客户端模块中的任意一个,该第一预配置关系用于指示该第一客户端模块从卡夫卡kafka系统中获取第一数据块的分区位置,该第二预配置关系用于指示该第一客户端模块将处理的所述第一数据块存储至该kafka系统中的分区位置。本申请实施例的技术方案,能够保证处理数据块时分区有序。

Methods and devices for data processing

The application provides a method and device for processing data, which includes: the main application obtains identification information of multiple client modules in the main application and at least one standby application; the main application determines the first and second pre-configuration relationships of the first client module according to the identification information, in which the first client module is any of a plurality of client modules. Meanwhile, the first pre-configuration relationship is used to indicate that the first client module obtains the partition location of the first data block from the Kafka system, and the second pre-configuration relationship is used to indicate that the first data block processed by the first client module is stored in the partition location of the Kafka system. The technical scheme of the embodiment of the present application can ensure that the processing of data blocks is partitioned in an orderly manner.

【技术实现步骤摘要】
处理数据的方法和装置
本申请涉及信息
,并且更具体地,涉及一种处理数据的方法和装置。
技术介绍
互联网业务和技术的发展迎来了信息革命新高潮,带来数据的爆炸式增长,促使人类进入大数据时代。大数据时代,分析海量数据、寻找价值数据变得至关重要,分布式流处理技术无疑是对无边界数据集进行连续不断的处理、聚合和分析的最好工具。分布式流处理技术需求日益增加,包括支付交易、社交网络、物联网(IOT)、系统监控等。分布式流处理技术在大数据分析领域显得举足轻重。卡夫卡(Kafka)系统是一种高吞吐量的分布式发布订阅消息系统,已经成为目前最流行的分布式消息系统之一。所有主流的流处理应用都集成Kafka作用于为数据源输入到应用(DataSource)和用于输出应用产生的数据(DataSink)。流处理应用从Kafka的源主题(SourceTopic)中读取数据,处理数据,然后将结果写入Kafka的目标主题(SinkTopic)中。现有通常采用同步串行处理和异步处理集成Kafka作为DataSource和DataSink的流处理应用。在采用同步串行处理消息时,可以保证分区内消息有序,但是串行同步处理消息吞吐量低,消息延时高,难以满足高并发、低时延应用场景;在采用异步处理消息时,会出现消息分区内的乱序。
技术实现思路
本申请提供一种处理数据的方法和装置,能够保证处理数据块时分区有序。第一方面,提供了一种数据处理的方法,该方法适用于包括主应用和至少一个备应用的分布式系统中,该主应用和至少一个备应用中的每一个应用包括至少一个客户端模块,该客户端模块用于获取卡夫卡kafka系统中的数据块和向该kafka系统存储应用处理后的数据块,该方法包括:该主应用获取该主应用和至少一个备应用中的多个客户端模块的标识信息;该主应用根据该标识信息确定第一客户端模块的第一预配置关系和第二预配置关系,其中,该第一客户端模块为该多个客户端模块中的任意一个,该第一预配置关系用于指示该第一客户端模块从该kafka系统中获取第一数据块的分区位置,该第二预配置关系用于指示该第一客户端模块将处理的该第一数据块存储至该kafka系统中的分区位置。本申请实施例的技术方案,通过预配置应用中客户端模块与卡夫卡系统中分区位置的对应关系,从而能够保证处理数据块时分区有序。结合第一方面,在第一方面的某些实现方式中,该第一客户端模块包括第一消费模块和第一生产模块,该第一消费模块用于从该kafka系统中获取第一数据块,该第一生产模块用于向该kafka系统中存储处理后该第一数据块,该主应用根据该标识信息确定第一客户端模块的第一预配置关系和第二预配置关系包括:该主应用确定该第一消费模块的该第一预配置关系和该第一生产模块的第二预配置关系。应理解,在本申请的实施例中,每个应用中包括至少一个客户端模块,每个客户端模块由一个消费模块和一个生产模块组成,结合第一方面,在第一方面的某些实现方式中,该主应用根据该标识信息确定第一客户端模块的第一预配置关系和第二预配置关系,包括:该主应用根据该标识信息和预设关系确定该第一预配置关系和该第二预配置关系。结合第一方面,在第一方面的某些实现方式中,该方法还包括:该主应用获取该kafka系统中源主题和目标主题,该源主题用于指示该多个客户端获取数据块的分区位置信息,该目标主题用于指示该多个客户端模块存储处理的数据块的分区位置信息。结合第一方面,在第一方面的某些实现方式中,该主应用根据该标识信息确定该多个客户端模块中的第一客户端模块的第一预配置关系和第二预配置关系,包括:该主应用根据该标识信息、该预设关系、该源主题以及该目标主题确定该第一预配置关系和该第二预配置关系。结合第一方面,在第一方面的某些实现方式中,该主应用获取该主应用和至少一个备应用中的多个客户端模块的标识信息,包括:当该多个客户端模块在分布式注册服务zookeeper中完成注册时,该主应用从该zookeeper中获取该多个客户端模块的标识信息。在本申请实施例的技术方案中,分布式系统中主应用和至少一个备应用中的多个客户端模块在zookeeper中进行注册,zookeeper中包括多个客户端模块中每个客户端模块的标识信息,能够使得主应用或者任意一个备应用从zookeeper中可以获取多个客户端模块的标识信息。结合第一方面,在第一方面的某些实现方式中,该方法还包括:该主应用向该zookeeper发送该第一预配置关系和该第二预配置关系,用于指示该多个客户端模块中的任意一个客户端模块与该kafka系统分区位置的对应关系。在本申请实施例的技术方案中,主应用确定任意一个应用包括的客户端模块与分区的对应关系,确定后主应用将该对应关系发生至zookeeper中,分布式系统中的任意一个应用可以从zookeeper中获取每个客户端模块与kafka系统分区位置的对应关系。结合第一方面,在第一方面的某些实现方式中,该分布式系统中的每一个应用还包括分区保序模块,该分区保序模块用于对处理的数据块进行排序,该方法还包括:该主应用将处理的多个数据块按照不同的分区位置在该分区保序模块中进行排序。在本申请实施例的技术方案中,分布式系统中的每一个应用还可以包括分区保序模块,分区保序模块能够在应用采用异步并行处理数据块时,保证数据块不会跨分区乱序,此外还可以保证数据块在分区有序。结合第一方面,在第一方面的某些实现方式中,该分区保序模块中包括第一队列和第二队列,其中,该第一队列用于存储序号连续的数据块,该第二队列用于存储序号不连续的数据块,该主应用将处理的多个数据块按照不同的分区位置在该分区保序模块中进行排序,包括:该主应用处理第二数据块;若该第二数据块与该第一数据块位于同一分区,且该第二数据块的序号比该第一数据块的序列号大1,则该主应用将处理的该第二数据块存放在与该第一数据块同分区的第一队列中;若该第二数据块与该第一数据块位于同一分区,且该第二数据块的序号与该第一数据块的序列号不连续,则该主应用将处理的该第二数据块存放在与该第一数据块同分区的第二队列中。结合第一方面,在第一方面的某些实现方式中,该方法还包括:在该第二数据块存放在该第一队列后,该主应用依次扫描该第二队列;将与该第二数据块连续且比该第二数据块的序号大1的第三数据块移出该第二队列;将该第三数据块存放在该第二队列中。结合第一方面,在第一方面的某些实现方式中,该方法还包括:当该第一队列中的数据块的数量达到预配置的数量;或当该主应用的等待时间超过定时器的预设时长时,该主应用将该分区保序模块中该第一数据块所在分区的该第一队列中的数据块根据该第二预配置关系发送至该kafka系统。第二方面,提供了一种处理数据块的装置,该装置适用于包括该装置和至少一个备装置的分布式系统中,该装置和至少一个备装置中的每一个装置包括至少一个客户端模块,该客户端模块用于获取卡夫卡kafka系统中的数据块和向该kafka系统存储应用处理后的数据块,该装置包括:收发模块,用于获取该装置和至少一个备装置的多个客户端模块的标识信息;处理模块,用于根据该标识信息确定第一客户端模块的第一预配置关系和第二预配置关系,其中,该第一客户端为该多个客户端模块中的任意一个客户端模块,该第一预配置关系用于指示该第一客户端模块从该本文档来自技高网...

【技术保护点】
1.一种处理数据的方法,其特征在于,所述方法适用于包括主应用和至少一个备应用的分布式系统中,所述主应用和至少一个备应用中的每一个应用包括至少一个客户端模块,所述客户端模块用于获取卡夫卡kafka系统中的数据块和向所述kafka系统存储应用处理后的数据块,所述方法包括:所述主应用获取所述主应用和至少一个备应用中的多个客户端模块的标识信息;所述主应用根据所述标识信息确定第一客户端模块的第一预配置关系和第二预配置关系,其中,所述第一客户端模块为所述多个客户端模块中的任意一个,所述第一预配置关系用于指示所述第一客户端模块从所述kafka系统中获取第一数据块的分区位置,所述第二预配置关系用于指示所述第一客户端模块将处理的所述第一数据块存储至所述kafka系统中的分区位置。

【技术特征摘要】
1.一种处理数据的方法,其特征在于,所述方法适用于包括主应用和至少一个备应用的分布式系统中,所述主应用和至少一个备应用中的每一个应用包括至少一个客户端模块,所述客户端模块用于获取卡夫卡kafka系统中的数据块和向所述kafka系统存储应用处理后的数据块,所述方法包括:所述主应用获取所述主应用和至少一个备应用中的多个客户端模块的标识信息;所述主应用根据所述标识信息确定第一客户端模块的第一预配置关系和第二预配置关系,其中,所述第一客户端模块为所述多个客户端模块中的任意一个,所述第一预配置关系用于指示所述第一客户端模块从所述kafka系统中获取第一数据块的分区位置,所述第二预配置关系用于指示所述第一客户端模块将处理的所述第一数据块存储至所述kafka系统中的分区位置。2.根据权利要求1所述的方法,其特征在于,所述第一客户端模块包括第一消费模块和第一生产模块,所述第一消费模块用于从所述kafka系统中获取第一数据块,所述第一生产模块用于向所述kafka系统中存储处理后的所述第一数据块,所述主应用根据所述标识信息确定第一客户端模块的第一预配置关系和第二预配置关系包括:所述主应用确定所述第一消费模块的所述第一预配置关系和所述第一生产模块的第二预配置关系。3.根据权利要求1或2所述的方法,其特征在于,所述主应用根据所述标识信息确定第一客户端模块的第一预配置关系和第二预配置关系,包括:所述主应用根据所述标识信息和预设关系确定所述第一预配置关系和所述第二预配置关系。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:所述主应用获取所述kafka系统中源主题和目标主题,所述源主题用于指示所述多个客户端获取数据块的分区位置信息,所述目标主题用于指示所述多个客户端模块存储处理的数据块的分区位置信息。5.根据权利要求3或4所述的方法,其特征在于,所述主应用根据所述标识信息确定所述多个客户端模块中的第一客户端模块的第一预配置关系和第二预配置关系,包括:所述主应用根据所述标识信息、所述预设关系、所述源主题以及所述目标主题确定所述第一预配置关系和所述第二预配置关系。6.根据权利要求1至5中任一项所述的方法,其特征在于,所述主应用获取所述主应用和至少一个备应用中的多个客户端模块的标识信息,包括:当所述多个客户端模块在分布式注册服务zookeeper中完成注册时,所述主应用从所述zookeeper中获取所述多个客户端模块的标识信息。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:所述主应用向所述zookeeper发送所述第一预配置关系和所述第二预配置关系,用于指示所述多个客户端模块中的任意一个客户端模块与所述kafka系统分区位置的对应关系。8.根据权利要求1至7中任一项所述的方法,其特征在于,所述分布式系统中的每一个应用还包括分区保序模块,所述分区保序模块用于对处理的数据块进行排序,所述方法还包括:所述主应用将处理的多个数据块按照不同的分区位置在所述分区保序模块中进行排序。9.根据权利要求8所述的方法,其特征在于,所述分区保序模块中包括第一队列和第二队列,其中,所述第一队列用于存储序号连续的数据块,所述第二队列用于存储序号不连续的数据块,所述主应用将处理的多个数据块按照不同的分区位置在所述分区保序模块中进行排序,包括:所述主应用处理第二数据块;若所述第二数据块与所述第一数据块位于同一分区,且所述第二数据块的序号比所述第一数据块的序列号大1,则所述主应用将处理的所述第二数据块存放在与所述第一数据块同分区的第一队列中;若所述第二数据块与所述第一数据块位于同一分区,且所述第二数据块的序号与所述第一数据块的序列号不连续,则所述主应用将处理的所述第二数据块存放在与所述第一数据块同分区的第二队列中。10.根据权利要求9所述的方法,其特征在于,所述方法还包括:在所述第二数据块存放在所述第一队列后,所述主应用依次扫描所述第二队列;将与所述第二数据块连续且比所述第二数据块的序号大1的第三数据块移出所述第二队列;将所述第三数据块存放在所述第二队列中。11.根据权利要求10所述的方法,其特征在于,所...

【专利技术属性】
技术研发人员:刘加财单卫华
申请(专利权)人:西安华为技术有限公司
类型:发明
国别省市:陕西,61

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

1