日志消费方法和装置与流程

文档序号:27425299发布日期:2021-11-17 19:39阅读:93来源:国知局
日志消费方法和装置与流程

1.本公开的实施例涉及计算机技术领域,具体涉及日志消费方法和装置。


背景技术:

2.通常,数据库都具有日志,用于记录所有事务(event)以及每个事务对数据库所做的修改。
3.例如,binlog是一种用于记录数据库变更的日志。实践中,通过mq(message queuing,消息队列)消费binlog日志,是生产上比较常用的一种手段。其中,binlog有三种模式,分别是raw、statement和mixed。通常raw模式最为常用。在raw模式下可以了解到数据库中的哪张表,哪行所变更的具体内容。当对数据库中的数据进行大量更新操作时,往往会产生很多变更事件。


技术实现要素:

4.本公开提出了日志消费方法和装置。
5.第一方面,本公开的实施例提供了一种日志消费方法,该方法包括:获取目标日志队列的队头指针指向的日志,其中,目标日志队列中的日志是用于记录对目标数据库进行行变更操作的信息;响应于所获取的日志符合预设合并条件,合并与目标日志队列相对应的目标日志列表中的第一数量条日志,得到第二数量条合并后日志,其中,第一数量大于或等于2,第二数量小于第一数量;对第二数量条合并后日志进行消费。
6.在一些实施例中,日志包括操作信息和表信息,操作信息指示对目标数据库中的数据进行的操作,表信息指示包括所操作的数据的表,目标日志列表包括的各个日志包括的操作信息指示相同的操作,目标日志列表包括的各个日志包括的表信指示相同的表。
7.在一些实施例中,预设合并条件包括:与目标日志队列相对应的目标日志列表非空,以及以下之一:所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间间隔,大于或等于预设时间间隔;所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间差,小于预设时间间隔;并且,目标日志列表包括的列尾指针指向的日志包括的操作信息或表信息与所获取的日志包括的操作信息或表信息,指示不同的操作或表。
8.在一些实施例中,合并与目标日志队列相对应的目标日志列表中的第一数量条日志,包括:将目标日志列表包括的各个日志合并为一组日志。
9.在一些实施例中,在响应于所获取的日志符合预设合并条件,合并与目标日志队列相对应的目标日志列表中的第一数量条日志,得到第二数量条合并后日志之前,该方法还包括:响应于与目标日志队列相对应的目标日志列表为空,将所获取的日志插入与目标日志队列相对应的目标日志列表,以及记录所获取的日志的插入时刻。
10.在一些实施例中,在响应于所获取的日志符合预设合并条件,合并与目标日志队列相对应的目标日志列表中的第一数量条日志,得到第二数量条合并后日志之前,该方法
还包括:响应于满足预设插入条件,将所获取的日志插入与目标日志队列相对应的目标日志列表;其中,预设插入条件包括:与目标日志队列相对应的目标日志列表非空;所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间间隔,小于预设时间间隔;目标日志列表包括的列尾指针指向的日志包括的操作信息与所获取的日志包括的操作信息,指示相同的操作;目标日志列表包括的列尾指针指向的日志包括的表信息与所获取的日志包括的表信息,指示相同的表。
11.在一些实施例中,在获取目标日志队列的队头指针指向的日志之后,该方法还包括:从目标日志队列删除该目标日志队列的队头指针指向的、已获取的日志。
12.在一些实施例中,在对第二数量条合并后日志进行消费之后,该方法还包括:响应于完成对第二数量条合并后日志的消费,从目标日志列表删除目标日志列表包括的、已消费的日志。
13.第二方面,本公开的实施例提供了一种日志消费装置,该装置包括:获取单元,被配置成获取目标日志队列的队头指针指向的日志,其中,目标日志队列中的日志是用于记录对目标数据库进行行变更操作的信息;合并单元,被配置成响应于所获取的日志符合预设合并条件,合并与目标日志队列相对应的目标日志列表中的第一数量条日志,得到第二数量条合并后日志,其中,第一数量大于或等于2,第二数量小于第一数量;消费单元,被配置成对第二数量条合并后日志进行消费。
14.在一些实施例中,日志包括操作信息和表信息,操作信息指示对目标数据库中的数据进行的操作,表信息指示包括所操作的数据的表,目标日志列表包括的各个日志包括的操作信息指示相同的操作,目标日志列表包括的各个日志包括的表信指示相同的表。
15.在一些实施例中,预设合并条件包括:与目标日志队列相对应的目标日志列表非空,以及以下之一:所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间间隔,大于或等于预设时间间隔;所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间差,小于预设时间间隔;并且,目标日志列表包括的列尾指针指向的日志包括的操作信息或表信息与所获取的日志包括的操作信息或表信息,指示不同的操作或表。
16.在一些实施例中,合并单元包括:合并子单元,被配置成将目标日志列表包括的各个日志合并为一组日志。
17.在一些实施例中,该装置还包括:第一插入单元,被配置成响应于与目标日志队列相对应的目标日志列表为空,将所获取的日志插入与目标日志队列相对应的目标日志列表,以及记录所获取的日志的插入时刻。
18.在一些实施例中,该装置还包括:第二插入单元,被配置成响应于满足预设插入条件,将所获取的日志插入与目标日志队列相对应的目标日志列表;其中,预设插入条件包括:与目标日志队列相对应的目标日志列表非空;所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间间隔,小于预设时间间隔;目标日志列表包括的列尾指针指向的日志包括的操作信息与所获取的日志包括的操作信息,指示相同的操作;目标日志列表包括的列尾指针指向的日志包括的表信息与所获取的日志包括的表信息,指示相同的表。
19.在一些实施例中,该装置还包括:第一删除单元,被配置成从目标日志队列删除该
目标日志队列的队头指针指向的、已获取的日志。
20.在一些实施例中,该装置还包括:第二删除单元,被配置成响应于完成对第二数量条合并后日志的消费,从目标日志列表删除目标日志列表包括的、已消费的日志。
21.第三方面,本公开的实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行,使得该一个或多个处理器实现如上述日志消费方法中任一实施例的方法。
22.第四方面,本公开的实施例提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述日志消费方法中任一实施例的方法。
23.本公开的实施例提供的日志消费方法和装置,通过获取目标日志队列的队头指针指向的日志,其中,目标日志队列中的日志是用于记录对目标数据库进行行变更操作的信息,然后,响应于所获取的日志符合预设合并条件,合并与目标日志队列相对应的目标日志列表中的第一数量条日志,得到第二数量条合并后日志,其中,第一数量大于或等于2,第二数量小于第一数量,最后,对第二数量条合并后日志进行消费,减少了所需消费的日志的数量,提高了日志的消费速度,降低了电子设备进行日志消费的压力。
附图说明
24.通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本公开的其它特征、目的和优点将会变得更明显:
25.图1是本公开的一个实施例可以应用于其中的示例性系统架构图;
26.图2是根据本公开的日志消费方法的一个实施例的流程图;
27.图3是根据本公开的日志消费方法的一个应用场景的示意图;
28.图4是根据本公开的日志消费方法的又一个实施例的流程图;
29.图5是针对图4的一个应用场景的流程图;
30.图6是根据本公开的日志消费装置的一个实施例的结构示意图;
31.图7是适于用来实现本公开的实施例的电子设备的计算机系统的结构示意图。
具体实施方式
32.下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
33.需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
34.图1示出了可以应用本公开的实施例的日志消费方法或日志消费装置的实施例的示例性系统架构100。
35.如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
36.用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送数据等。终端设备101、102、103上可以安装有各种客户端应用,例如购物类应用视频播放
软件、新闻资讯类应用、图像处理类应用、网页浏览器应用、、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
37.终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是具有数据传输功能的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务的软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
38.服务器105可以是提供各种服务的服务器,例如基于终端设备101、102、103发送的数据,对数据库(例如用于存储用户数据的数据库)进行操作的后台服务器。后台服务器可以基于终端设备101、102、103发送的数据对数据库进行更新、添加、删除、查询等操作。作为示例,服务器105可以是云端服务器。
39.需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
40.还需要说明的是,本公开的实施例所提供的日志消费方法可以由服务器执行,也可以由终端设备执行,还可以由服务器和终端设备彼此配合执行。相应地,日志消费装置包括的各个部分(例如各个单元、子单元)可以全部设置于服务器中,也可以全部设置于终端设备中,还可以分别设置于服务器和终端设备中。
41.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。当日志消费方法运行于其上的电子设备不需要与其他电子设备进行数据传输时,该系统架构可以仅包括日志消费方法运行于其上的电子设备(例如服务器或终端设备)。
42.继续参考图2,示出了根据本公开的日志消费方法的一个实施例的流程200。该日志消费方法,包括以下步骤:
43.步骤201,获取目标日志队列的队头指针指向的日志。
44.在本实施例中,日志消费方法的执行主体(例如图1所示的服务器或终端设备)可以通过有线连接方式或者无线连接方式从其他电子设备或者本地,从目标日志队列获取该目标日志队列的队头指针指向的日志。其中,目标日志队列中的日志是用于记录记录对目标数据库进行行变更操作的信息。
45.其中,上述目标日志队列可以是存储于mq(message queuing,消息队列)中的日志队列。通常情况下,对于每个mq,可以启动一个协程。
46.作为示例,目标日志队列中的日志可以是binlog日志。其中,binlog日志是mysql(关系型数据库管理系统)数据库的二进制日志,用于记录对目标数据库进行行变更操作的信息。这里,用户可以通过sql语句对数据库进行行变更操作。实践中,可以通过mq消费binlog日志。其中,binlog有三种模式,分别是raw、statement和mixed。通常raw模式最为常用。在raw模式下可以了解到数据库中的哪张表,哪行所变更的具体内容。当对数据库中的数据进行大量更新操作时,往往会产生很多变更事件。
47.在本实施例的一些可选的实现方式中,日志包括操作信息和表信息。其中,操作信
息指示对目标数据库中的数据进行的操作。表信息指示包括所操作的数据的表。目标日志列表中的各个日志包括的操作信息指示相同的操作。目标日志列表中的各个日志包括的表信指示相同的表。
48.步骤202,响应于所获取的日志符合预设合并条件,合并与目标日志队列相对应的目标日志列表中的第一数量条日志,得到第二数量条合并后日志。
49.在本实施例中,在步骤201中所获取的日志符合预设合并条件的情况下,上述执行主体可以合并与目标日志队列相对应的目标日志列表中的第一数量条日志,得到第二数量条合并后日志。其中,第一数量大于或等于2,并且,小于或等于当前(例如执行该步骤202时)目标日志列表中包括的日志的数量。上述第二数量小于第一数量,并且,大于或等于1。通常情况下,上述第一数量条日志可以彼此相邻,也即,在目标日志列表中,用以合并的第一数量条日志之间不存在无需合并的日志。每个目标日志队列可以与一个目标日志列表相对应。目标日志队列与目标日志列表的对应关系可以预先建立。
50.可以理解,消费第二数量条合并后日志,与消费第一数量条日志将产生相同的结果。作为示例,第一数量条日志可以调用1000次用于使得当前数值减1的方法(function,也称函数)。经过后端的处理,第二数量条合并后日志可以用于调用1次用于使得当前数值减1000的方法。示例性的,后端可以根据第二数量条合并后日志,生成1条处理信息。该处理信息可以调用1次用于使得当前数值减1000的方法。
51.上述预设合并条件可以是预先确定的、用于指示合并目标日志列表中的日志的条件。作为示例,该预设合并条件可以包括:所获取的日志占用的存储空间大于或等于预设存储空间阈值。
52.作为示例,在所获取的日志符合预设合并条件的情况下,上述执行主体可以将目标日志列表中的所有日志,合并为1条日志,从而得到1条合并后日志。可选的,在所获取的日志符合预设合并条件的情况下,上述执行主体可以将目标日志列表中插入时刻距离当前时刻(例如执行该步骤202的时刻)最远的10条日志,合并为9条日志,从而得到9条合并后日志。
53.步骤203,对第二数量条合并后日志进行消费。
54.在本实施例中,上述执行主体可以对步骤202中得到的第二数量条合并后日志进行消费。
55.实践中,可以基于binlog消费组件,对第二数量条合并后日志进行消费。可选的,也可以根据实际需求自行确定日志消费逻辑,从而对第二数量条合并后日志进行消费。
56.在这里,本公开的日志消费方法的可以应用于raw、statement或mixed模式下。由于在raw模式下,当对数据库中的数据进行大量更新操作时,往往会产生很多变更事件(即日志)。因此,在本公开的日志消费方法的应用于raw模式时,相对于其他模式,可以进一步减少所需消费的日志的数量,提高日志的消费速度,降低电子设备进行日志消费的压力。
57.继续参见图3,图3是根据本实施例的日志消费方法的应用场景的一个示意图。在图3的应用场景中,服务器301首先获取目标日志队列302的队头指针指向的日志(例如日志1),其中,目标日志队列中的日志是用于记录对目标数据库进行行变更操作的信息,然后,在所获取的日志(即日志1)符合预设合并条件的情况下,服务器301合并与目标日志队列302相对应的目标日志列表303中的第一数量条日志(例如日志a和日志b,两条日志),得到
第二数量条合并后日志304(图示中为日志x,1条合并后日志)。最后,服务器301对第二数量条合并后日志304进行消费。
58.现有技术通常逐条进行binlog日志消费,每消费一条binlog日志ack(一种消费后的确认操作)一次,只有消费完成一条binlog日志之后才会消费下一条binlog日志。
59.本公开的上述实施例提供的方法,通过获取目标日志队列的队头指针指向的日志,其中,目标日志队列中的日志是用于记录对目标数据库进行行变更操作的信息,然后,在所获取的日志符合预设合并条件的情况下,合并与目标日志队列相对应的目标日志列表中的第一数量条日志,得到第二数量条合并后日志,其中,第一数量大于或等于2,第二数量小于第一数量,最后,对第二数量条合并后日志进行消费,从而减少了所需消费的日志的数量,提高了日志的消费速度,降低了电子设备进行日志消费的压力。并且,后端可以直接消费合并后的日志,从而减少了大量的网络请求时延。
60.在本实施例的一些可选的实现方式中,在执行上述步骤202之前,在与目标日志队列相对应的目标日志列表为空的情况下,上述执行主体还可以将所获取的日志插入与目标日志队列相对应的目标日志列表,以及记录所获取的日志的插入时刻。
61.在本实施例的一些可选的实现方式中,预设合并条件包括:与目标日志队列相对应的目标日志列表非空,以及以下任一项:
62.第一项,所获取的日志的获取时刻与目标日志列表包括的首条插入该目标日志列表的日志的插入时刻之间的时间间隔,大于或等于预设时间间隔。
63.其中,上述预设时间间隔可以是预先设定的固定不变的数值,也可以是预先设定并且可变更的数值。
64.可以理解,当预设合并条件包括上述第一项时,可以通过预设时间间隔的设定,来控制日志消费的吞吐量。
65.第二项,所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间差,小于预设时间间隔;并且,目标日志列表包括的列尾指针指向的日志包括的操作信息或表信息与所获取的日志包括的操作信息或表信息,指示不同的操作或表。
66.其中,上述“目标日志列表包括的列尾指针指向的日志包括的操作信息或表信息与所获取的日志包括的操作信息或表信息,指示不同的操作或表”,也即:目标日志列表包括的列尾指针指向的日志包括的操作信息与所获取的日志包括的操作信息,指示不同的操作;或者,目标日志列表包括的列尾指针指向的日志包括的表信息与所获取的日志包括的表信息,指示不同的表。
67.可以理解,当预设合并条件包括上述第二项时,可以确保与目标日志队列相对应的目标日志列表中的各个未被消费的日志的包括的操作信息指示相同的操作,并且,与目标日志队列相对应的目标日志列表中的各个未被消费的日志的包括的表信息指示相同的表,以便日志合并和日志消费的有序进行。
68.在本实施例的一些可选的实现方式中,在执行上述步骤202之前,在满足预设插入条件的情况下,上述执行主体还可以将所获取的日志插入与目标日志队列相对应的目标日志列表。
69.其中,上述预设插入条件包括:
70.与目标日志队列相对应的目标日志列表非空;
71.所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间间隔,小于预设时间间隔;
72.目标日志列表包括的列尾指针指向的日志包括的操作信息与所获取的日志包括的操作信息,指示相同的操作;以及
73.目标日志列表包括的列尾指针指向的日志包括的表信息与所获取的日志包括的表信息,指示相同的表。
74.可以理解,在上述可选的实现方式中,可以确保与目标日志队列相对应的目标日志列表中的各个未被消费的日志的包括的操作信息指示相同的操作,并且,与目标日志队列相对应的目标日志列表中的各个未被消费的日志的包括的表信息指示相同的表,以便日志合并和日志消费的有序进行。
75.在本实施例的一些可选的实现方式中,在执行上述步骤201之后,上述执行主体还可以从目标日志队列删除该目标日志队列的队头指针指向的、已获取的日志。
76.可以理解,在执行上述步骤201之后,即可对步骤201中所获取的日志进行处理,例如,将步骤201中所获取的日志插入至目标日志列表中。由此,上述执行主体可以从目标日志队列删除该目标日志队列的队头指针指向的、已获取的日志,从而使得目标日志队列的队头指针指向其他日志,以便后续获取该队头指针指向的其他日志,以及对其他日志进行处理,避免了日志的重复处理。
77.在本实施例的一些可选的实现方式中,在执行上述步骤203之后,在完成对第二数量条合并后日志的消费的情况下,上述执行主体还可以从目标日志列表删除目标日志列表包括的、已消费的日志。
78.可以理解,在执行上述步骤203之后,通常可以完成对步骤203中所得到的第二数量条合并后日志的消费。由此,上述执行主体可以删除从目标日志列表删除目标日志列表包括的、已消费的日志,以便后续消费目标日志列表中未被消费的合并后日志,避免了对日志的重复消费,并且,在完成对第二数量条合并后日志的消费的情况下,才从目标日志列表删除目标日志列表包括的、已消费的日志,可以保证日志不会被丢失。
79.进一步参考图4,其示出了日志消费方法的又一个实施例的流程400。该日志消费方法的流程400,包括以下步骤:
80.步骤401,获取目标日志队列的队头指针指向的日志。
81.在本实施例中,步骤401与图2对应实施例中的步骤201基本一致,这里不再赘述。
82.步骤402,响应于与目标日志队列相对应的目标日志列表为空,将所获取的日志插入与目标日志队列相对应的目标日志列表,以及记录所获取的日志的插入时刻。
83.在本实施例中,在与目标日志队列相对应的目标日志列表为空的情况下,日志消费方法的执行主体(例如图1所示的服务器或终端设备)可以将所获取的日志插入与目标日志队列相对应的目标日志列表,以及记录所获取的日志的插入时刻。
84.步骤403,响应于所获取的日志符合预设合并条件,合并与目标日志队列相对应的目标日志列表中的第一数量条日志,得到第二数量条合并后日志。
85.在本实施例中,步骤403与图2对应实施例中的步骤202基本一致,这里不再赘述。
86.步骤404,对第二数量条合并后日志进行消费。
87.在本实施例中,步骤404与图2对应实施例中的步骤203基本一致,这里不再赘述。
88.需要说明的是,除上面所记载的内容外,本公开的实施例还可以包括与图2对应的实施例相同或类似的特征、效果,在此不再赘述。
89.从图4中可以看出,本实施例中的日志消费方法的流程400在与目标日志队列相对应的目标日志列表为空的情况下,可以将所获取的日志插入与目标日志队列相对应的目标日志列表,以及记录所获取的日志的插入时刻,以便获得目标日志列表插入首个日志的时刻,有助于根据该插入时刻实现更为及时的日志消费。
90.作为示例,请参考图5,图5是针对图4的一个应用场景的流程图。该应用场景的流程500,包括以下步骤:
91.步骤501,获取目标日志队列的队头指针指向的日志。之后,执行步骤502。
92.在本实施例中,在与目标日志队列相对应的目标日志列表为空的情况下,日志消费方法的执行主体(例如图1所示的服务器或终端设备)可以获取目标日志队列的队头指针指向的日志。
93.步骤502,确定与目标日志队列相对应的目标日志列表是否为空。之后,若与目标日志队列相对应的目标日志列表为空,则执行步骤504;若与目标日志队列相对应的目标日志列表非空,则执行步骤503。
94.在本实施例中,上述执行主体可以确定与目标日志队列相对应的目标日志列表是否为空。
95.步骤503,确定所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间间隔,是否大于或等于预设时间间隔。之后,若所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间间隔大于或等于预设时间间隔,则执行步骤507;若所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间间隔小于预设时间间隔,则执行步骤505。
96.在本实施例中,在步骤502中确定与目标日志队列相对应的目标日志列表非空的情况下,上述执行主体可以确定所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间间隔,是否大于或等于预设时间间隔。
97.步骤504,将所获取的日志插入与目标日志队列相对应的目标日志列表,以及记录所获取的日志的插入时刻。
98.在本实施例中,在步骤502中确定与目标日志队列相对应的目标日志列表为空的情况下,上述执行主体可以将所获取的日志插入与目标日志队列相对应的目标日志列表,以及记录所获取的日志的插入时刻。
99.步骤505,确定目标日志列表包括的列尾指针指向的日志包括的操作信息和表信息与所获取的日志包括的操作信息和表信息是否指示相同的操作和表。之后,若目标日志列表包括的列尾指针指向的日志包括的操作信息和表信息与所获取的日志包括的操作信息和表信息指示相同的操作和表,则执行步骤506;若目标日志列表包括的列尾指针指向的日志包括的操作信息和表信息与所获取的日志包括的操作信息和表信息并非指示相同的操作和表,则执行步骤507。
100.在本实施例中,在步骤502中确定与目标日志队列相对应的目标日志列表非空,并且,步骤503中所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间间隔小于预设时间间隔的情况下,上述执行主体可以确定目标日志列表包括
的列尾指针指向的日志包括的操作信息和表信息与所获取的日志包括的操作信息和表信息是否指示相同的操作和表。
101.步骤506,将所获取的日志插入与目标日志队列相对应的目标日志列表。之后,执行步骤507。
102.在本实施例中,在步骤502中确定与目标日志队列相对应的目标日志列表非空;步骤503中所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间间隔小于预设时间间隔,并且,步骤505中目标日志列表包括的列尾指针指向的日志包括的操作信息和表信息与所获取的日志包括的操作信息和表信息分别指示相同的操作和表的情况下,上述执行主体可以将所获取的日志插入与目标日志队列相对应的目标日志列表。
103.步骤507,将目标日志列表包括的各个日志合并为一组日志,得到合并后日志。之后,执行步骤508。
104.在本实施例中,上述执行主体可以将目标日志列表包括的各个日志合并为一组日志,得到合并后日志。其中,消费合并后得到的一组日志,与消费第一数量条日志将产生相同的结果。作为示例,第一数量条日志可以调用1000次用于使得当前数值减1的方法(function,也称函数)。经过后端的处理,合并后得到的一组日志可以用于调用1次用于使得当前数值减1000的方法。示例性的,后端可以根据合并后得到的一组日志,生成1条处理信息。该处理信息可以调用1次用于使得当前数值减1000的方法。
105.步骤508,对合并后日志进行消费,从目标日志列表删除目标日志列表包括的各个日志。
106.在本实施例中,上述执行主体可以对合并后日志进行消费,从目标日志列表删除目标日志列表包括的各个日志。
107.在本实施例的一些可选的实现方式中,在执行上述步骤505之后,上述执行主体还可以一次执行步骤507、步骤508和步骤504。
108.需要说明的是,除上面所记载的内容外,本公开的实施例还可以包括与图2对应的实施例相同或类似的特征、效果,在此不再赘述。
109.可以理解,本实施例中的日志消费方法的流程500可以通过合并日志,来加速日志消费。并且,能保证日志消费有序、不丢失。通过调整预设时间间隔,控制日志消费的吞吐量。
110.进一步参考图6,作为对上述各图所示方法的实现,本公开提供了一种日志消费装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,除下面所记载的特征外,该装置实施例还可以包括与图2所示的方法实施例相同或相应的特征,以及产生与图2所示的方法实施例相同或相应的效果。该装置具体可以应用于各种电子设备中。
111.如图6所示,本实施例的日志消费装置600包括:获取单元601,被配置成获取目标日志队列的队头指针指向的日志,其中,目标日志队列中的日志是用于记录对目标数据库进行行变更操作的信息;合并单元602,被配置成响应于所获取的日志符合预设合并条件,合并与目标日志队列相对应的目标日志列表中的第一数量条日志,得到第二数量条合并后日志,其中,第一数量大于或等于2,第二数量小于第一数量;消费单元603,被配置成对第二数量条合并后日志进行消费。
112.在本实施例中,日志消费装置600的获取单元601可以获取目标日志队列的队头指针指向的日志。其中,目标日志队列中的日志是用于记录对目标数据库进行行变更操作的信息。
113.在本实施例中,在获取单元601所获取的日志符合预设合并条件的情况下,合并单元602可以合并与目标日志队列相对应的目标日志列表中的第一数量条日志,得到第二数量条合并后日志。其中,第一数量大于或等于2,第二数量小于第一数量。
114.在本实施例中,上述消费单元603可以对合并单元602得到的第二数量条合并后日志进行消费。
115.在本实施例的一些可选的实现方式中,日志包括操作信息和表信息,操作信息指示对目标数据库中的数据进行的操作,表信息指示包括所操作的数据的表,目标日志列表包括的各个日志包括的操作信息指示相同的操作,目标日志列表包括的各个日志包括的表信指示相同的表。
116.在本实施例的一些可选的实现方式中,预设合并条件包括:与目标日志队列相对应的目标日志列表非空,以及以下之一:所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间间隔,大于或等于预设时间间隔;所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间差,小于预设时间间隔;并且,目标日志列表包括的列尾指针指向的日志包括的操作信息或表信息与所获取的日志包括的操作信息或表信息,指示不同的操作或表。
117.在本实施例的一些可选的实现方式中,合并单元603包括:合并子单元(图中未示出),被配置成将目标日志列表包括的各个日志合并为一组日志。
118.在本实施例的一些可选的实现方式中,该装置600还包括:第一插入单元(图中未示出),被配置成响应于与目标日志队列相对应的目标日志列表为空,将所获取的日志插入与目标日志队列相对应的目标日志列表,以及记录所获取的日志的插入时刻。
119.在本实施例的一些可选的实现方式中,该装置600还包括:第二插入单元(图中未示出),被配置成响应于满足预设插入条件,将所获取的日志插入与目标日志队列相对应的目标日志列表。其中,预设插入条件包括:与目标日志队列相对应的目标日志列表非空;所获取的日志的获取时刻与目标日志列表包括的首条插入的日志的插入时刻之间的时间间隔,小于预设时间间隔;目标日志列表包括的列尾指针指向的日志包括的操作信息与所获取的日志包括的操作信息,指示相同的操作;目标日志列表包括的列尾指针指向的日志包括的表信息与所获取的日志包括的表信息,指示相同的表。
120.在本实施例的一些可选的实现方式中,该装置600还包括:第一删除单元(图中未示出),被配置成从目标日志队列删除该目标日志队列的队头指针指向的、已获取的日志。
121.在本实施例的一些可选的实现方式中,该装置600还包括:第二删除单元(图中未示出),被配置成响应于完成对第二数量条合并后日志的消费,从目标日志列表删除目标日志列表包括的、已消费的日志。
122.本公开的上述实施例提供的装置,通过获取单元601获取目标日志队列的队头指针指向的日志,其中,目标日志队列中的日志是用于记录对目标数据库进行行变更操作的信息,然后,在所获取的日志符合预设合并条件的情况下,合并单元602合并与目标日志队列相对应的目标日志列表中的第一数量条日志,得到第二数量条合并后日志,其中,第一数
量大于或等于2,第二数量小于第一数量,最后,消费单元603对第二数量条合并后日志进行消费,从而减少了所需消费的日志的数量,提高了日志的消费速度,降低了电子设备进行日志消费的压力。并且,后端可以直接消费合并后的日志,从而减少了大量的网络请求时延。
123.下面参考图7,其示出了适于用来实现本公开的实施例的电子设备(例如图1中的服务器或终端设备)700的结构示意图。本公开的实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图7示出的终端设备/服务器仅仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。
124.如图7所示,电子设备700可以包括处理装置(例如中央处理器、图形处理器等)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储装置708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram 703中,还存储有电子设备700操作所需的各种程序和数据。处理装置701、rom 702以及ram 703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。
125.通常,以下装置可以连接至i/o接口705:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置706;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置707;包括例如磁带、硬盘等的存储装置708;以及通信装置709。通信装置709可以允许电子设备700与其他设备进行无线或有线通信以交换数据。虽然图7示出了具有各种装置的电子设备700,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。图7中示出的每个方框可以代表一个装置,也可以根据需要代表多个装置。
126.特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置709从网络上被下载和安装,或者从存储装置708被安装,或者从rom 702被安装。在该计算机程序被处理装置701执行时,执行本公开的实施例的方法中限定的上述功能。
127.需要说明的是,本公开的实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以
发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
128.上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取目标日志队列的队头指针指向的日志,其中,目标日志队列中的日志是用于记录对目标数据库进行行变更操作的信息;响应于所获取的日志符合预设合并条件,合并与目标日志队列相对应的目标日志列表中的第一数量条日志,得到第二数量条合并后日志,其中,第一数量大于或等于2,第二数量小于第一数量;对第二数量条合并后日志进行消费。
129.可以以一种或多种程序设计语言或其组合来编写用于执行本公开的实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
130.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
131.描述于本公开的实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、合并单元和消费单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“获取目标日志队列的队头指针指向的日志的单元”。
132.以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开的实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1