获取数据的方法、装置及计算机可读存储介质与流程

文档序号:16856064发布日期:2019-02-12 23:18阅读:197来源:国知局
获取数据的方法、装置及计算机可读存储介质与流程

本公开涉及计算机技术领域,特别涉及一种获取数据的方法、装置及计算机可读存储介质。



背景技术:

kafka是由apache软件基金会开发的一个开源流处理平台,由scala和java编写。kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。

规模较大的企业kafka集群已做到数据读写分离。kafka数据读写相互解耦,上游写一份数据,可以有多个下游业务来消费这份数据,所以消费者的数量大于生产者的数据量。

为了做好数据存储灾备,对于数据量较大、业务等级较高的数据经常在多个集群上备份存储,通常为一个写集群、多个读集群。图1示出了消费者消费一个写集群、多个读集群的kafka集群的示意图。数据量、业务等级再上升一个等级的业务数据,则需要将一份业务数据拆成多份同时写进多个写集群,然后再将这多份写集群的数据汇成一份数据分别同步给多个读集群备份。图2示出了消费者消费多个写集群、多个读集群的kafka集群的示意图。而对于数据量不大、业务不重要的数据,则采取的方式为同一个读写不分离的集群。图3示出了消费者消费读写不分离的kafka集群的示意图。



技术实现要素:

本公开解决的一个技术问题是,如何根据用户的主题数据获取请求自动匹配读集群,实现kafka集群的自动化配置。

根据本公开实施例的一个方面,提供了一种获取数据的方法,包括:接收用户发送的主题数据获取请求,主题数据获取请求包含主题数据的标识;利用主题数据的标识查询预先创建的kafka集群主题数据信息表,在kafka集群中确定主题数据所在的集群,kafka集群主题数据信息表包含kafka集群中各个主题数据与所在的集群之间的映射关系;向用户发送主题数据所在的集群的配置参数和消费密钥,以便用户从主题数据所在的集群获取主题数据。

在一些实施例中,在kafka集群中确定主题数据所在的集群包括:若kafka集群中存在存储主题数据的读集群,从中选择负载最小的读集群作为主题数据所在的集群。

在一些实施例中,在kafka集群中确定主题数据所在的集群包括:若kafka集群中不存在存储主题数据的读集群、存在存储主题数据的读写集群,将读写集群确定为主题数据所在的集群。

在一些实施例中,在kafka集群中确定主题数据所在的读集群包括:若在kafka集群中不存在存储主题数据的读集群、不存在存储主题数据的读写集群、存在存储主题数据的写集群,从预先创建的存储集群拓扑图中查询写集群相关联的读集群;将写集群同步至相关联的读集群,并根据同步得到的读集群确定主题数据所在的集群。

在一些实施例中,将写集群同步至相关联的读集群,并根据同步得到的读集群确定主题数据所在的集群包括:若写集群为单同步类型,则将写集群同步至相关联的负载最小的读集群;若写集群为多同步类型,则将写集群同步至相关联的所有读集群,并从中选择负载最小的读集群作为主题数据所在的集群。

在一些实施例中,将写集群同步至相关联的读集群包括:通过多个同步任务将写集群同步至每个相关联的读集群,每个同步任务所同步的数据量不超过预设值;根据预设值以及各个同步任务所同步的各个主题数据的数据量,分别确定各个同步任务所同步的主题数据的数量。

在一些实施例中,主题数据获取请求还包含用户的业务等级;方法还包括:将业务等级与主题数据所在的集群相关联;根据各个集群关联的业务等级,确定各个集群的综合评估等级;根据各个集群的综合评估等级,对各个集群进行集群隔离。

根据本公开实施例的另一个方面,提供了一种获取数据的装置,包括:消息接收模块,被配置为接收用户发送的主题数据获取请求,主题数据获取请求包含主题数据的标识;集群确定模块,被配置为利用主题数据的标识查询预先创建的kafka集群主题数据信息表,在kafka集群中确定主题数据所在的集群,kafka集群主题数据信息表包含kafka集群中各个主题数据与所在的集群之间的映射关系;消息发送模块,被配置为向用户发送主题数据所在的集群的配置参数和消费密钥,以便用户从主题数据所在的集群获取主题数据。

在一些实施例中,集群确定模块被配置为:若kafka集群中存在存储主题数据的读集群,从中选择负载最小的读集群作为主题数据所在的集群。

在一些实施例中,集群确定模块被配置为:若kafka集群中不存在存储主题数据的读集群、存在存储主题数据的读写集群,将读写集群确定为主题数据所在的集群。

在一些实施例中,集群确定模块被配置为:若在kafka集群中不存在存储主题数据的读集群、不存在存储主题数据的读写集群、存在存储主题数据的写集群,从预先创建的存储集群拓扑图中查询写集群相关联的读集群;将写集群同步至相关联的读集群,并根据同步得到的读集群确定主题数据所在的集群。

在一些实施例中,集群确定模块被配置为:若写集群为单同步类型,则将写集群同步至相关联的负载最小的读集群;若写集群为多同步类型,则将写集群同步至相关联的所有读集群,并从中选择负载最小的读集群作为主题数据所在的集群。

在一些实施例中,集群确定模块被配置为:通过多个同步任务将写集群同步至每个相关联的读集群,每个同步任务所同步的数据量不超过预设值;根据预设值以及各个同步任务所同步的各个主题数据的数据量,分别确定各个同步任务所同步的主题数据的数量。

在一些实施例中,主题数据获取请求还包含用户的业务等级;装置还包括集群隔离模块,被配置为:将业务等级与主题数据所在的集群相关联;根据各个集群关联的业务等级,确定各个集群的综合评估等级;根据各个集群的综合评估等级,对各个集群进行集群隔离。

根据本公开实施例的又一个方面,提供了一种获取数据的装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行前述的获取数据的方法。

根据本公开实施例的再一个方面,提供了一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现前述的获取数据的方法。

本公开能够根据用户的主题数据获取请求自动匹配读集群,实现了kafka集群的自动化配置。

通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。

附图说明

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1示出了消费者消费一个写集群、多个读集群的kafka集群的示意图。

图2示出了消费者消费多个写集群、多个读集群的kafka集群的示意图。

图3示出了消费者消费读写不分离的kafka集群的示意图。

图4示出了本公开一个实施例的获取数据的方法的流程示意图。

图5示出了在kafka集群中确定主题数据所在的集群的流程示意图。

图6示出了本公开另一个实施例的获取数据的方法的流程示意图。

图7示出了实现获取数据的方法的应用例的系统工作流程。

图8示出了本公开一个实施例的获取数据的装置的结构示意图。

图9示出了本公开另一个实施例的获取数据的装置的结构示意图。

具体实施方式

下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。

发明人对消费者在锁定一份主题数据之后如何决定消费哪个集群上的数据进行了研究。对于大型的企业,kafka集群由统一团队来运维,业务部门一般只关心消费数据的准确性与高性能,而不会关心消费数据在哪个集群上。因此,业务部门具体消费哪个集群,需要运维团队来把关。也就是说,目前确定消费哪个集群上的数据时采用的方式为人工手动分配,即:首先,业务部门指定消费哪份主题数据,以邮件或填写web页面形式提交;然后,运维团队查询该主题数据在哪些集群上,并根据集群承载的业务分类以及负载等,手动分配某读集群上的该份数据给业务部门;最后,通过邮件或者web页面返回给业务部门集群的配置参数以及消费密钥。

发明人分析认为,以上相关的技术方案需要运维人员进行事前判断,手动分配给用户读集群,可能需要运维人员手动将主题数据从写集群同步至读集群,一方面人力成本较大,另一方面随着kafka集群的壮大,运维人员可能由于人工判断错误造成分配给业务部门读集群错误,导致业务部门消费不到数据或者集群资源的不合理分配。针对以上问题,本公开提供了新的获取数据的方法,能够根据用户的主题数据获取请求自动匹配读集群,实现了kafka集群的自动化配置。下面结合图4介绍本公开一个实施例的获取数据的方法。

图4示出了本公开一个实施例的获取数据的方法的流程示意图。如图4所示,本实施例中的获取数据的方法包括步骤s402~步骤s406。

在步骤s402中,接收用户发送的主题数据获取请求,主题数据获取请求包含主题数据的标识。

在步骤s404中,利用主题数据的标识查询预先创建的kafka集群主题数据信息表,在kafka集群中确定该主题数据所在的集群,kafka集群主题数据信息表包含kafka集群中各个主题数据与所在的集群之间的映射关系。

在kafka集群中确定主题数据所在的集群的具体流程在后文的实施例中进行详细介绍。

在步骤s406中,向用户发送该主题数据所在的集群的配置参数和消费密钥,以便用户从该主题数据所在的集群获取该主题数据。

上述实施例能够根据用户的主题数据获取请求自动匹配读集群,实现了kafka集群的自动化配置。

下面结合图5详细介绍如何在kafka集群中确定主题数据所在的集群。

图5示出了在kafka集群中确定主题数据所在的集群的流程示意图。如图5所示,在kafka集群中确定主题数据所在的集群的过程具体包括步骤s5042~步骤s5046。

在步骤s5041中,判断kafka集群中是否存在存储该主题数据的读集群。

若kafka集群中存在存储该主题数据的读集群,则执行步骤s5042。

在步骤s5042中,从存储该主题数据的读集群中选择负载最小的读集群作为该主题数据所在的集群。

若kafka集群中不存在存储该主题数据的读集群,则执行步骤s5043。

在步骤s5043中,判断kafka集群中是否存在存储该主题数据的读写集群。

若kafka集群中存在存储该主题数据的读写集群,则执行步骤s5044。

在步骤s5044中,将读写集群确定为该主题数据所在的集群。

若在kafka集群中不存在存储该主题数据的读写集群,则执行步骤s5045。

在步骤s5045中,判断kafka集群中是否存在存储该主题数据的写集群。

若存在存储该主题数据的写集群,则执行步骤s5046。

在步骤s5046中,从预先创建的存储集群拓扑图中查询写集群相关联的读集群;

在步骤s5047中,将写集群同步至相关联的读集群,并根据同步得到的读集群确定主题数据所在的集群。

在同步过程中,若写集群为单同步类型,则将写集群同步至相关联的负载最小的读集群;若写集群为多同步类型,则将写集群同步至相关联的所有读集群,并从中选择负载最小的读集群作为该主题数据所在的集群。

同步时,可以通过多个同步任务将写集群同步至每个相关联的读集群,每个同步任务所同步的数据量不超过预设值。然后,根据预设值以及各个同步任务所同步的各个主题数据的数据量,分别确定各个同步任务所同步的主题数据的数量。

若不存在存储该主题数据的写集群,则执行步骤s5048。

在步骤s5048中,通知用户kafka集群中不存在存储该主题数据的集群。

上述实施例中,根据kafka集群中存储主题数据的集群的读写属性,优先将已有的读集群提供给用户能够节省系统开销、提高工作效率;次优将读写集群提供给用户,是因为读写集群的数据量较小、多用于存储重要性相对较低的主题数据,通过具有一定优先级的集群查找顺序,实现了为请求重要性相对较高的主题数据的用户更快速提供集群信息;备选将写集群同步得到的读集群提供给用户,能够在kafka集群中仅存在存储用户请求的主题数据的写集群时,保障为用户提供读集群以从读集群中获取主题数据。

此外,预先创建存储集群拓扑图中设置了写集群与读集群的关联关系,通过存储集群拓扑图能够实现写集群到读集群之间的自动同步,进一步实现了根据用户的主题数据获取请求自动匹配读集群,进一步实现了kafka集群的自动化配置。

下面结合图6介绍本公开另一个实施例的获取数据的方法。

图6示出了本公开另一个实施例的获取数据的方法的流程示意图。如图6所示,本实施例中的获取数据的方法还包括步骤s602~步骤s612。

在步骤s602中,接收用户发送的主题数据获取请求,主题数据获取请求包含主题数据的标识以及用户的业务等级。

在步骤s604中,利用主题数据的标识查询预先创建的kafka集群主题数据信息表,在kafka集群中确定该主题数据所在的集群,kafka集群主题数据信息表包含kafka集群中各个主题数据与所在的集群之间的映射关系。

在步骤s606中,向用户发送该主题数据所在的集群的配置参数和消费密钥,以便用户从该主题数据所在的集群获取该主题数据。

在步骤s608中,将业务等级与主题数据所在的集群相关联。

例如,将用户u1的业务等级为等级l2,则将等级l2关联至请求的主题数据所在的集群m1。

在步骤s610中,根据各个集群关联的业务等级,确定各个集群的综合评估等级。

例如,集群m1会关联多个用户u1~u10的用户等级。可以将关联的这10个用户等级取平均,得到集群m1的综合评估等级m1。

在步骤s612中,根据各个集群的综合评估等级,对各个集群进行集群隔离。

例如,可以将不同综合评估等级的集群进行集群隔离。

上述实施例中,通过用户的业务等级实现了对集群等级的客观评估,并根据集群的综合评估等级实现了自动化集群隔离,因此进一步实现了kafka集群的自动化配置。

下面介绍实现本公开获取数据的方法的一个具体的应用例。本应用例通过kafka集群消费者管理系统、kafka集群间数据同步任务管理系统以及kafka集群信息管理系统来实现本公开获取数据的方法。

(一)kafka集群消费者管理系统

该系统记录了所有请求消费kafka数据的消费者信息,具体包括:

(1)消费者的业务信息,具体可以包括消费者所属的业务项目组、业务等级、用途描述等,以便kafka运维人员对集群所承载的业务量、业务重要性综合管理,便于运维人员按业务等级做集群隔离以及对业务项目为粒度使用的资源做成本核算;

(2)消费kafka数据的参数信息,具体可以包括消费哪份业务数据、这份业务数据的保存期限、这份业务数据的存储分区等,便于业务部门更加清晰的了解所消费数据的存储情况;

(3)消费者所需数据所在的集群的连接信息,具体可以包括连接集群的用户名密码、要连接的kafka读集群的具体服务器等,便于业务部门随时进行自助查询,无需在其他文本里进行记录。

kafka集群消费者管理系统中存有kafka集群主题数据信息表,在主题数据的生产方创建主题数据时,运维人员会根据业务分组将该主题数据分配至某个集群上,在该过程中kafka集群消费者管理系统自动记录下了主题数据与集群的关系。该系统对业务部门开放,也是业务部门发起消费kafka数据请求的入口。

(二)kafka集群间数据同步任务管理系统

该系统为kafka集群间数据同步的任务管理系统,是实现kafka业务读写分离的主要工具。在集群同步过程中,源集群一定为kafka的写集群,目标集群一定为kafka的读集群。在同步任务里除配置好运行的参数外,最重要的还要配置任务要同步的主题数据,配置过程如下:

(1)将每一个集群有哪些主题数据记录到一个表中;

(2)确定源集群;

(3)在步骤(2)确定好的源集群范围内选择要同步的业主题数据;

(4)确定目标集群;

(5)保存并启动同步任务。

每一个同步任务能够同步的主题数量,可以根据所同步的主题的数据量的大小来决定,当同步的数据量超过设定的阈值,则会启动新的同步任务。

(三)kafka集群信息管理系统

以kafka集群为粒度,对kafka集群进行配置参数维护、服务器信息维护、业务分组维护、集群拓扑关系等信息;集群信息管理系统在整个方案中起到信息字典的作用;该系统由运维人员根据集群的实际情况(例如在kafka集群扩容、缩容、增减机器、系统升级、参数变更等情况下由运维人员手动录入或者批量导入)来维护的。

本应用例主要通过在集群管理系统里维护的拓扑关系来实现自动将读集群的数据分配给业务部门。拓扑关系中,写集群具有相应的子集群,所谓子集群是指写集群上的主题数据对应的读集群,即在启动同步任务的时候,对应的目标集群。集群管理系统还需要记录各个集群的属性,该属性由运维人员定义的并在新建一个集群的时候录入kafka集群信息管理系统。读集群只允许业务部门从该集群读取数据,写集群只允许业务部门向该集群写数据;读写集群既允许业务部门向该集群写数据,同时也允许业务部门从该集群消费数据。集群同步的方式包括两种:单同步是指如果该集群的子集群有多个,则根据负载选择一个子集群进行数据同步;多同步是指如果该集群的子集群有多个,则分别向这些子集群进行数据同步。

图7示出了实现获取数据的方法的应用例的系统工作流程。从图7可以看出全程不需要运维人员的参与,业务部门发出请求后根据规则判断自动返回合理的读集群给业务部门。

本应用例代替了运维人员手动分配主题数据的kafka读集群,按照业务部门指定的主题数据,维护好集群字典以及程序里的逻辑规则自动匹配读集群,无须运维人员进行手动配置,实现了业务部门消费kafka数据获取集群配置信息的自动化。

下面结合图8描述本公开一个实施例的获取数据的装置。

图8示出了本公开一个实施例的获取数据的装置的结构示意图。如图8所示,本实施例中的获取数据的装置80包括:

消息接收模块802,被配置为接收用户发送的主题数据获取请求,主题数据获取请求包含主题数据的标识;

集群确定模块804,被配置为利用主题数据的标识查询预先创建的kafka集群主题数据信息表,在kafka集群中确定主题数据所在的集群,kafka集群主题数据信息表包含kafka集群中各个主题数据与所在的集群之间的映射关系;

消息发送模块806,被配置为向用户发送主题数据所在的集群的配置参数和消费密钥,以便用户从主题数据所在的集群获取主题数据。

上述实施例能够根据用户的主题数据获取请求自动匹配读集群,实现了kafka集群的自动化配置。

在一些实施例中,集群确定模块804被配置为:若kafka集群中存在存储主题数据的读集群,从中选择负载最小的读集群作为主题数据所在的集群。

在一些实施例中,集群确定模块804被配置为:若kafka集群中不存在存储主题数据的读集群、存在存储主题数据的读写集群,将读写集群确定为主题数据所在的集群。

在一些实施例中,集群确定模块804被配置为:若在kafka集群中不存在存储主题数据的读集群、不存在存储主题数据的读写集群、存在存储主题数据的写集群,从预先创建的存储集群拓扑图中查询写集群相关联的读集群;将写集群同步至相关联的读集群,并根据同步得到的读集群确定主题数据所在的集群。

上述实施例中,根据kafka集群中存储主题数据的集群的读写属性,优先将已有的读集群提供给用户能够节省系统开销、提高工作效率;次优将读写集群提供给用户,是因为读写集群的数据量较小、多用于存储重要性相对较低的主题数据,通过具有一定优先级的集群查找顺序,实现了为请求重要性相对较高的主题数据的用户更快速提供集群信息;备选将写集群同步得到的读集群提供给用户,能够在kafka集群中仅存在存储用户请求的主题数据的写集群时,保障为用户提供读集群以从读集群中获取主题数据。

此外,预先创建存储集群拓扑图中设置了写集群与读集群的关联关系,通过存储集群拓扑图能够实现写集群到读集群之间的自动同步,进一步实现了根据用户的主题数据获取请求自动匹配读集群,进一步实现了kafka集群的自动化配置。

在一些实施例中,集群确定模块804被配置为:若写集群为单同步类型,则将写集群同步至相关联的负载最小的读集群;若写集群为多同步类型,则将写集群同步至相关联的所有读集群,并从中选择负载最小的读集群作为主题数据所在的集群。

在一些实施例中,集群确定模块804被配置为:通过多个同步任务将写集群同步至每个相关联的读集群,每个同步任务所同步的数据量不超过预设值;根据预设值以及各个同步任务所同步的各个主题数据的数据量,分别确定各个同步任务所同步的主题数据的数量。

在一些实施例中,主题数据获取请求还包含用户的业务等级;装置80还包括集群隔离模块808,被配置为:将业务等级与主题数据所在的集群相关联;根据各个集群关联的业务等级,确定各个集群的综合评估等级;根据各个集群的综合评估等级,对各个集群进行集群隔离。

上述实施例中,通过用户的业务等级实现了对集群等级的客观评估,并根据集群的综合评估等级实现了自动化集群隔离,因此进一步实现了kafka集群的自动化配置。

图9示出了本公开另一个实施例的获取数据的装置的结构示意图。如图9所示,该实施例的获取数据的装置90包括:存储器910以及耦接至该存储器910的处理器920,处理器920被配置为基于存储在存储器910中的指令,执行前述任意一个实施例中的获取数据的方法。其中,存储器910例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(bootloader)以及其他程序等。

获取数据的装置90还可以包括输入输出接口930、网络接口940、存储接口950等。这些接口930、940、950以及存储器910和处理器920之间例如可以通过总线960连接。其中,输入输出接口930为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口940为各种联网设备提供连接接口。存储接口950为sd卡、u盘等外置存储设备提供连接接口。

本公开还包括一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现前述任意一个实施例中的获取数据的方法。

本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1