CN111858576A - 实时消息处理方法、***、装置、存储介质及电子设备 - Google Patents
实时消息处理方法、***、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN111858576A CN111858576A CN201910338181.1A CN201910338181A CN111858576A CN 111858576 A CN111858576 A CN 111858576A CN 201910338181 A CN201910338181 A CN 201910338181A CN 111858576 A CN111858576 A CN 111858576A
- Authority
- CN
- China
- Prior art keywords
- identification data
- message
- content data
- data
- check value
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 14
- 230000008859 change Effects 0.000 claims abstract description 66
- 238000012795 verification Methods 0.000 claims abstract description 58
- 238000012545 processing Methods 0.000 claims abstract description 40
- 238000000034 method Methods 0.000 claims abstract description 27
- 238000005538 encapsulation Methods 0.000 claims abstract description 18
- 238000004806 packaging method and process Methods 0.000 claims abstract description 16
- 238000004590 computer program Methods 0.000 claims description 9
- 238000004519 manufacturing process Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供了一种实时消息处理方法、***、装置、计算机可读存储介质及电子设备,涉及计算机技术领域。所述方法包括:获取反映数据库变化情况的数据库变更消息并发送到封装线程;利用所述封装线程根据所述数据库变更消息生成识别数据和内容数据,并根据所述识别数据将所述识别数据和所述内容数据发送到消息队列的相应线程;根据所述识别数据对所述内容数据进行时序校验;根据通过时序校验的所述识别数据和所述内容数据生产索引。本发明实施例的技术方案通过使用多线程发送反映数据库变化情况的识别数据和内容数据,并对内容数据进行时序校验,在保证消息时序的前提下,实现了面对海量商品实时修改消息时的高吞吐,低延迟处理。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种实时消息处理方法、***、装置、计算机可读存储介质及电子设备。
背景技术
在互联网应用中,搜索引擎是大家快速获取信息的主要手段。在电商行业中,会存在商品实时修改的情况。商品实时修改包括对商品的商品名称、库存、价格以及评论等数据进行实时修改。
特别在商品促销活动期间,消息量巨大,如果搜索引擎的吞吐量不够,会出现促销价格未及时变更,商品在无库存的情况下依然在搜索展示。如果消息时序不正确,会出现商品的上下架状态不正确,从而影响用户体验和商品的销量。
如何在保证消息时序的前提下,实现面对海量商品实时修改消息时的高吞吐,低延迟处理,是目前亟需解决的问题。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明实施例的目的在于提供一种实时消息处理方法、***、装置、计算机可读存储介质及电子设备,进而至少在一定程度上实现在保证消息时序的前提下,面对海量商品实时修改消息时的高吞吐,低延迟处理。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明实施例的第一方面,提供一种实时消息处理方法,包括:获取反映数据库变化情况的数据库变更消息并发送到封装线程;利用所述封装线程根据所述数据库变更消息生成识别数据和内容数据,并根据所述识别数据将所述识别数据和所述内容数据发送到消息队列的相应线程;根据所述识别数据对所述内容数据进行时序校验;根据通过时序校验的所述识别数据和所述内容数据生产索引。
在一些实施例中,根据所述识别数据对所述内容数据进行时序校验前,所述方法还包括:从所述消息队列获取所述识别数据和所述内容数据;根据所述识别数据确定目标校验线程;将所述识别数据和所述内容数据发送至所述目标校验线程。
在一些实施例中,根据所述识别数据对所述内容数据进行时序校验后,所述方法还包括:根据所述识别数据将通过时序校验的所述识别数据和所述内容数据发送到所述消息队列的相应线程。
在一些实施例中,所述根据识别数据将所述识别数据和所述内容数据发送到消息队列的相应线程,包括:对所述识别数据进行哈希处理,得到哈希值;将所述哈希值相对于所述消息队列的总线程数取余数;根据所述余数确定所述识别数据对应的消息队列的线程。
在一些实施例中,所述根据所述识别数据对所述内容数据进行时序校验,包括:根据所述内容数据生成信息校验值;将所述信息校验值与缓存校验值进行比较;若所述信息校验值大于所述缓存校验值,确定校验通过并将所述缓存校验值更新为所述信息校验值。
在一些实施例中,所述信息校验值包括第一部分和第二部分,所述缓存校验值包括第三部分和第四部分;所述根据所述内容数据生成信息校验值包括:根据所述内容数据的文件名生成所述第一部分,根据所述内容数据的文件偏移量生成所述第二部分;在所述第一部分大于等于所述第三部分,且所述第二部分大于所述第四部分时,确定所述信息校验值大于所述缓存校验值。
在一些实施例中,所述根据所述识别数据对所述内容数据进行时序校验,还包括:若所述缓存校验值是空值,确定校验通过并将所述缓存校验值更新为所述信息校验值。
在一些实施例中,所述封装线程的总数量与所述消息队列的总线程数相等。
根据本发明实施例的第二方面,提供了一种实时消息处理***,其特征在于,所述***包括:变更消息发送模块,用于获取反映数据库变化情况的数据库变更消息并发送到封装线程,利用所述封装线程根据所述数据库变更消息生成识别数据和内容数据,并根据所述识别数据将所述识别数据和所述内容数据发送到消息队列的相应线程;redis缓存;数据接入模块,用于根据所述识别数据结合所述redis缓存对所述内容数据进行时序校验,以根据通过时序校验的所述识别数据和所述内容数据生产索引。
根据本发明实施例的第三方面,提供了一种实时消息处理装置,其特征在于,包括:获取单元,用于获取反映数据库变化情况的数据库变更消息并发送到封装线程;生成单元,用于利用所述封装线程根据所述数据库变更消息生成识别数据和内容数据,并根据所述识别数据将所述识别数据和所述内容数据发送到消息队列的相应线程;校验单元,用于根据所述识别数据对所述内容数据进行时序校验;生产单元,用于根据通过时序校验的所述识别数据和所述内容数据生产索引。
根据本发明实施例的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中第一方面所述的实时消息处理方法。
根据本发明实施例的第五方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中第一方面所述的实时消息处理方法。
在本发明的一些实施例所提供的技术方案中,根据获取的反映数据库变换情况的数据库变更消息生成识别数据和内容数据后,在消息队列中多线程发送该识别数据和内容数据,并对内容数据进行时序校验,在保证消息时序的前提下,实现了面对海量商品实时修改消息时的高吞吐,低延迟处理。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示意性示出了根据本发明一种实施例的实时消息处理方法的流程图;
图2示意性示出了步骤S102和步骤S104中的数据传输流程;
图3示意性示出了步骤S106中的数据传输流程;
图4示意性示出了根据本发明一种实施例的时序校验的流程图;
图5示意性示出了根据本发明一种实施例的实时消息处理***的结构图;
图6示意性示出了根据本发明一种实施例的实时消息处理装置的方框图;
图7示出了适于用来实现本发明实施例的电子设备的计算机***的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
在相关技术中,电商搜索的实时数据流程包括从数据库的binlog(binary log,二进制日志)订阅模块,数据预处理模块,到kafka消息队列模块,索引生产模块,搜索引擎模块。具体地,商品的状态的变更操作会写入数据库,并产生binlog消息,数据预处理模块进行数据的格式化工作,索引模块生产索引,搜索引擎加载索引数据。
为了保证消息的时序性,当前电商搜索实时索引通过单线程程序处理的。这种方式的弊端很明显,吞吐量低,消息延迟大,特别在商品促销活动期间,这些弊端更为明显。
为解决上述问题,本发明实施例提供一种实时消息处理方法,根据获取的反映数据库变换情况的数据库变更消息生成识别数据和内容数据后,在消息队列中多线程发送该识别数据和内容数据,并根据识别数据对内容数据进行时序校验。
以下通过具体实施例对本发明的技术方案进行详述。
图1示意性示出了本发明的示例性实施方式的实时消息处理方法。参考图1,该实时消息处理方法可以包括以下步骤:
步骤S102,获取反映数据库变化情况的数据库变更消息并发送到封装线程。
步骤S104,利用封装线程根据数据库变更消息生成识别数据和内容数据,并根据识别数据将识别数据和内容数据发送到消息队列的相应线程。
步骤S106,根据识别数据对内容数据进行时序校验。
步骤S108,根据通过时序校验的识别数据和内容数据生产索引。
在本发明实施例的技术方案中,根据获取的反映数据库变换情况的数据库变更消息生成识别数据和内容数据后,在消息队列中多线程发送该识别数据和内容数据,并根据识别数据对内容数据进行时序校验,实现了在保证消息时序的前提下的对实时消息的高效处理,优化了用户体验。
商品信息修改是本发明实施例中的消息的源头。在商品信息修改后,数据库会将对应的数据库保存的相关信息进行修改,并同时产生记录修改内容的binlog消息。其中,数据库可以为mysql数据库,这里的binlog消息即为数据库变更消息。mysql是一种关系型数据库管理***。
在步骤S102中,将binlog消息发送到多个封装线程中进行数据封装。将binlog消息发送到多个封装线程中时,采用轮询的方式发送。
如图2所示的步骤S102和步骤S104中的数据传输流程中,封装线程的数量为3个,但是在实际应用中封装线程的数量并不局限于此。
如图2所示,消息队列线程的数量为3个,但是在实际应用中消息队列线程的数量也并不局限于此。
在本发明实施例中,封装线程的总数量与消息队列的总线程数相等。单线程的binlog消息被发送到多个封装线程之后,每个封装线程中的binlog消息被单独封装为识别数据和内容数据键值对。然后,再将每个封装线程形成的键值对根据识别数据发送到对应的消息队列线程中。
具体地,在步骤S104中,在执行数据封装步骤时,需要反序列化binlog消息,并将其封装成messageid和message键值对。这里,messageid即为识别数据,message即为内容数据,messageid和message分别对应键值对中的key和value。其中,其中messageid可以是商品编码,message包含有binlog消息中文件名logfilename和文件偏移量logfileoffset以及商品名等其它业务数据。
在将binlog消息封装成messageid和message键值对后,将messageid和message键值对异步发送到消息队列中。这里,消息队列可以为kafka消息队列,但本发明并不限定于此,可以是其他任意类型的消息队列。
在将messageid和message键值对异步发送到kafka消息队列中时,需要根据商品编码确定目标kafka消息队列的线程。
具体地,在根据商品编码确定目标kafka消息队列的线程时,可以对商品编码即识别数据进行哈希处理,得到哈希值;再将哈希值相对于消息队列的总线程数取余数;最后根据余数确定识别数据对应的消息队列的线程。
例如,在消息的识别数据的哈希值为232,消息队列的总线程为10时,得到的余数即为2,这时,该消息对应的kafka消息队列的线程为2,即需要将该消息的识别数据和内容数据发送到kafka消息队列的编号为2的线程中。
在步骤S106中,通过storm分布式流式处理框架,对步骤S104中发送到kafka消息队列中的识别数据和内容数据进行时序校验。在storm中进行数据处理时,通过redis缓存时进行时序校验。
多线程处理数据提高了吞吐量,用redis缓存作为时序校验的临时存储,redis缓存高速的读写性能保证即使面对数据洪峰,***的吞吐量依然很高。
如图3所示,在步骤S106中的数据传输流程中,消息队列中的消息被接收到不同的接入线程,即接入线程1、接入线程2和接入线程3。根据识别数据对内容数据进行时序校验前,需要确定识别数据和内容校验数据将要进入的校验线程。其确定过程为:从消息队列获取识别数据和内容数据,再根据识别数据确定目标校验线程,然后将识别数据和内容数据发送至目标校验线程。
具体地,在根据识别数据确定目标校验线程时,可以对商品编码即识别数据进行哈希处理,得到哈希值;再将哈希值相对于校验线程的总线程数取余数;最后根据余数确定识别数据的目标校验线程。
在步骤S106中,根据识别数据对内容数据进行时序校验时,在获取kafka消息队列中的识别数据和内容数据后,需要根据内容数据生成信息校验值。
在本发明实施例中,信息校验值包括第一部分和第二部分,缓存校验值包括第三部分和第四部分。根据内容数据生成信息校验值时,根据内容数据的文件名logfilename生成第一部分,根据内容数据的文件偏移量logfileoffset生成第二部分。
具体地,内容数据中的文件名的格式为mysql-bin.123,文件偏移量的格式为456。在根据内容数据的文件名和文件偏移量生成信息校验值时,文件名中尾部的数字提取出来,即文件码,取文件码和文件偏移量进行连接,得到信息校验值的格式是文件码_文件偏移量,如123_456。缓存校验值与信息校验值的格式相同。
在从redis缓存中获取与消息的识别数据对应的缓存校验值后,如果该缓存校验值为空值,则说明该识别数据对应的消息第一次到达,确定校验通过并将缓存校验值更新为信息校验值。
如果该缓存校验值不是空值,则将信息校验值与缓存校验值进行比较;若信息校验值大于缓存校验值,确定校验通过并将缓存校验值更新为信息校验值。在本发明实施例中,在第一部分大于等于第三部分,且第二部分大于第四部分时,确定信息校验值大于缓存校验值。
具体地,如图4所示,对内容数据进行时序校验的步骤包括:
步骤S401,获取缓存校验值。这里,缓存校验值是redis中的与消息的识别数据对应的缓存校验值。
步骤S402,判断缓存校验值是否为空。判断结果为是时,执行步骤S403,构造信息校验值,即根据内容数据生成信息校验值。
在步骤S403之后,执行步骤S404,将信息校验值写入redis中,即将缓存校验值更新为该信息校验值。
在步骤S402的判断结果为否时,执行步骤S405,构造信息校验值。这里,步骤S405的内容与步骤S403内容相同。
在执行步骤S405之后,执行步骤S406,判断信息校验值是否大于缓存校验值。
在信息校验值大于缓存校验值时,执行步骤S407,确认校验通过,并将信息校验值写入redis中。
在信息校验值不大于缓存校验值时,执行步骤S408,确认校验不通过,并抛弃该信息。
在根据识别数据对内容数据进行时序校验后,还需要根据识别数据将通过时序校验的识别数据和内容数据发送到消息队列的相应线程。
具体地,在根据商品编码确定目标kafka消息队列的线程时,可以对商品编码即识别数据进行哈希处理,得到哈希值;再将哈希值相对于消息队列的总线程数取余数;最后根据余数确定识别数据对应的消息队列的线程。
在将校验通过的消息通过kafka消息队列发送后,执行步骤S108,获取kafka消息队列中的消息,并在根据该消息生产索引后,将索引通过kafka消息队列发送到搜索引擎。
在本发明的一些实施例所提供的实时消息处理方法中,根据获取的反映数据库变换情况的数据库变更消息生成识别数据和内容数据后,在消息队列中多线程发送该识别数据和内容数据,并对内容数据进行时序校验,在保证消息时序的前提下,实现了面对海量商品实时修改消息时的高吞吐,低延迟处理。
如图5所示,本发明实施例提供一种实时消息处理***,包括:变更消息发送模块502、数据接入模块503和redis缓存506。
其中,变更消息发送模块502,用于获取反映数据库变化情况的数据库变更消息并发送到封装线程,利用封装线程根据数据库变更消息生成识别数据和内容数据,并根据识别数据将识别数据和内容数据发送到消息队列的相应线程。数据接入模块503,用于根据识别数据结合redis缓存对内容数据进行时序校验,以根据通过时序校验的识别数据和内容数据生产索引。
在本发明实施例中,如图5所示,该***还包括数据库501、索引生产模块504和搜索引擎505。
在商品信息修改时,数据库501中的数据变更,同时产生数据库变更消息,即binlog消息。binlog消息被单线程发送到变更消息发送模块502后,binlog消息被多线程传递,并在封装为识别数据和内容数据后,被多线程发送到kafka消息队列。数据接入模块503获取kafka消息队列中的消息,并结合redis缓存506对消息中的内容数据进行时序校验,之后,将时序校验通过的消息发送到kafka消息队列。索引生产模块504根据从kafka消息队列中获取的消息生产索引,并将索引通过kafka消息队列发送到搜索引擎505,完成消息处理过程。
在本发明的一些实施例所提供的实时消息处理***中,通过使用多线程发送反映数据库变化情况的识别数据和内容数据,并对内容数据进行时序校验,在保证消息时序的前提下,实现了面对海量商品实时修改消息时的高吞吐,低延迟处理。
以下介绍本发明的装置实施例,可以用于执行本发明上述的实时消息处理方法。参考图6,本发明装置实施例提供的实时消息处理装置600可以包括:获取单元602、生成单元604、校验单元606以及生产单元608。
获取单元602可以用于获取反映数据库变化情况的数据库变更消息并发送到封装线程。
生成单元604可以用于利用封装线程根据数据库变更消息生成识别数据和内容数据,并根据识别数据将识别数据和内容数据发送到消息队列的相应线程。
校验单元606可以用于根据识别数据对内容数据进行时序校验。
生产单元608可以用于根据通过时序校验的识别数据和内容数据生产索引。
例如,在商品信息修改时,数据库中的数据变更,同时产生数据库变更消息,即binlog消息。获取单元602单线程获取binlog消息并多线程传递到生成单元604中。生成单元604将binlog消息封装为识别数据和内容数据后,将该识别数据和内容数据多线程发送到kafka消息队列。校验单元606获取kafka消息队列中的消息,并结合redis缓存对消息中的内容数据进行时序校验,之后,将时序校验通过的消息发送到kafka消息队列。生产单元608根据从kafka消息队列中获取的消息生产索引,并将索引通过kafka消息队列发送到搜索引擎,完成消息处理过程。
在本发明实施例中,封装线程的总数量与消息队列的总线程数相等。单线程的binlog消息被发送到多个封装线程之后,生成单元604将每个封装线程中的binlog消息单独封装为识别数据和内容数据键值对。然后,再将每个封装线程形成的键值对根据识别数据发送到对应的消息队列线程中。
在将每个封装线程形成的键值对根据识别数据发送到对应的消息队列线程中时,生成单元604对识别数据进行哈希处理,得到哈希值;将哈希值相对于消息队列的总线程数取余数;根据余数确定识别数据对应的消息队列的线程。
本发明实施例提供的实时消息处理装置还包括第一发送单元和第二发送单元,第一发送单元可以用于从消息队列获取识别数据和内容数据;根据识别数据确定目标校验线程;将识别数据和内容数据发送至目标校验线程。
多线程处理数据提高了吞吐量,用redis缓存作为时序校验的临时存储,redis缓存高速的读写性能保证即使面对数据洪峰,***的吞吐量依然很高。
信息校验值包括第一部分和第二部分,缓存校验值包括第三部分和第四部分。
校验单元606还可以用于根据内容数据生成信息校验值;将信息校验值与缓存校验值进行比较。若信息校验值大于缓存校验值,确定校验通过并将缓存校验值更新为信息校验值。若缓存校验值是空值,确定校验通过并将缓存校验值更新为信息校验值。
校验单元606根据内容数据生成信息校验值时,根据内容数据的文件名生成第一部分,根据内容数据的文件偏移量生成第二部分;在第一部分大于等于第三部分,且第二部分大于第四部分时,确定信息校验值大于缓存校验值。
第二发送单元,可以用于根据识别数据将通过时序校验的识别数据和内容数据发送到消息队列的相应线程。
由于本发明的示例实施例的实时消息处理装置的各个功能模块与上述实时消息处理方法的示例实施例的步骤对应,因此对于本发明装置实施例中未披露的细节,请参照本发明上述的实时消息处理方法的实施例。
在本发明的实施例所提供的实时消息处理装置中,根据获取的反映数据库变换情况的数据库变更消息生成识别数据和内容数据后,在消息队列中多线程发送该识别数据和内容数据,并对内容数据进行时序校验,在保证消息时序的前提下,实现了面对海量商品实时修改消息时的高吞吐,低延迟处理。
下面参考图7,其示出了适于用来实现本发明实施例的电子设备的计算机***700的结构示意图。图7示出的电子设备的计算机***700仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,计算机***700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有***操作所需的各种程序和数据。CPU701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本申请的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者发送用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质发送,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中所述的实时消息处理方法。
例如,所述的电子设备可以实现如图1中所示的:步骤S102,获取反映数据库变化情况的数据库变更消息并发送到多个封装线程;步骤S104,根据所述数据库变更消息生成识别数据和内容数据,并根据所述识别数据将所述识别数据和所述内容数据发送到消息队列的相应线程;步骤S106,根据所述识别数据对所述内容数据进行时序校验;步骤S108,根据通过时序校验的所述识别数据和所述内容数据生产索引。
又如,所述的电子设备可以实现如图4示的各个步骤。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (12)
1.一种实时消息处理方法,其特征在于,包括:
获取反映数据库变化情况的数据库变更消息并发送到封装线程;
利用所述封装线程根据所述数据库变更消息生成识别数据和内容数据,并根据所述识别数据将所述识别数据和所述内容数据发送到消息队列的相应线程;
根据所述识别数据对所述内容数据进行时序校验;
根据通过时序校验的所述识别数据和所述内容数据生产索引。
2.根据权利要求1所述的方法,其特征在于,根据所述识别数据对所述内容数据进行时序校验前,所述方法还包括:
从所述消息队列获取所述识别数据和所述内容数据;
根据所述识别数据确定目标校验线程;
将所述识别数据和所述内容数据发送至所述目标校验线程。
3.根据权利要求1所述的方法,其特征在于,根据所述识别数据对所述内容数据进行时序校验后,所述方法还包括:
根据所述识别数据将通过时序校验的所述识别数据和所述内容数据发送到所述消息队列的相应线程。
4.根据权利要求1所述的方法,其特征在于,所述根据识别数据将所述识别数据和所述内容数据发送到消息队列的相应线程,包括:
对所述识别数据进行哈希处理,得到哈希值;
将所述哈希值相对于所述消息队列的总线程数取余数;
根据所述余数确定所述识别数据对应的消息队列的线程。
5.根据权利要求1所述的方法,其特征在于,所述根据所述识别数据对所述内容数据进行时序校验,包括:
根据所述内容数据生成信息校验值;
将所述信息校验值与缓存校验值进行比较;
若所述信息校验值大于所述缓存校验值,确定校验通过并将所述缓存校验值更新为所述信息校验值。
6.根据权利要求5所述的方法,其特征在于,所述信息校验值包括第一部分和第二部分,所述缓存校验值包括第三部分和第四部分;
所述根据所述内容数据生成信息校验值包括:
根据所述内容数据的文件名生成所述第一部分,根据所述内容数据的文件偏移量生成所述第二部分;
在所述第一部分大于等于所述第三部分,且所述第二部分大于所述第四部分时,确定所述信息校验值大于所述缓存校验值。
7.根据权利要求6所述的方法,其特征在于,所述根据所述识别数据对所述内容数据进行时序校验,还包括:
若所述缓存校验值是空值,确定校验通过并将所述缓存校验值更新为所述信息校验值。
8.根据权利要求3所述的方法,其特征在于,所述封装线程的总数量与所述消息队列的总线程数相等。
9.一种实时消息处理***,其特征在于,所述***包括:
变更消息发送模块,用于获取反映数据库变化情况的数据库变更消息并发送到封装线程,利用所述封装线程根据所述数据库变更消息生成识别数据和内容数据,并根据所述识别数据将所述识别数据和所述内容数据发送到消息队列的相应线程;
redis缓存;
数据接入模块,用于根据所述识别数据结合所述redis缓存对所述内容数据进行时序校验,以根据通过时序校验的所述识别数据和所述内容数据生产索引。
10.一种实时消息处理装置,其特征在于,包括:
获取单元,用于获取反映数据库变化情况的数据库变更消息并发送到封装线程;
生成单元,用于利用所述封装线程根据所述数据库变更消息生成识别数据和内容数据,并根据所述识别数据将所述识别数据和所述内容数据发送到消息队列的相应线程;
校验单元,用于根据所述识别数据对所述内容数据进行时序校验;
生产单元,用于根据通过时序校验的所述识别数据和所述内容数据生产索引。
11.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至8中任一项所述的实时消息处理方法。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至8中任一项所述的实时消息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910338181.1A CN111858576A (zh) | 2019-04-25 | 2019-04-25 | 实时消息处理方法、***、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910338181.1A CN111858576A (zh) | 2019-04-25 | 2019-04-25 | 实时消息处理方法、***、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111858576A true CN111858576A (zh) | 2020-10-30 |
Family
ID=72951243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910338181.1A Pending CN111858576A (zh) | 2019-04-25 | 2019-04-25 | 实时消息处理方法、***、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111858576A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113139081A (zh) * | 2021-04-27 | 2021-07-20 | 中山亿联智能科技有限公司 | 高效率低延迟上报读取用户在线播放信息的方法 |
CN113379431A (zh) * | 2021-06-29 | 2021-09-10 | 上海中商网络股份有限公司 | 一种采集数据实时校验方法及*** |
CN113779311A (zh) * | 2020-11-04 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 一种数据处理的方法、装置和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150310044A1 (en) * | 2014-02-03 | 2015-10-29 | Codefutures Corporation | Database device and processing of data in a database |
CN108121730A (zh) * | 2016-11-30 | 2018-06-05 | 北京京东尚科信息技术有限公司 | 一种将数据更新快速同步到业务***的装置及方法 |
CN108334641A (zh) * | 2018-03-21 | 2018-07-27 | 上海精数信息科技有限公司 | 采集用户行为数据的方法、***、电子设备、存储介质 |
CN109145060A (zh) * | 2018-07-20 | 2019-01-04 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
CN109492012A (zh) * | 2018-10-31 | 2019-03-19 | 厦门安胜网络科技有限公司 | 一种数据实时统计和检索的方法、装置及存储介质 |
-
2019
- 2019-04-25 CN CN201910338181.1A patent/CN111858576A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150310044A1 (en) * | 2014-02-03 | 2015-10-29 | Codefutures Corporation | Database device and processing of data in a database |
CN108121730A (zh) * | 2016-11-30 | 2018-06-05 | 北京京东尚科信息技术有限公司 | 一种将数据更新快速同步到业务***的装置及方法 |
CN108334641A (zh) * | 2018-03-21 | 2018-07-27 | 上海精数信息科技有限公司 | 采集用户行为数据的方法、***、电子设备、存储介质 |
CN109145060A (zh) * | 2018-07-20 | 2019-01-04 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
CN109492012A (zh) * | 2018-10-31 | 2019-03-19 | 厦门安胜网络科技有限公司 | 一种数据实时统计和检索的方法、装置及存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113779311A (zh) * | 2020-11-04 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 一种数据处理的方法、装置和存储介质 |
CN113139081A (zh) * | 2021-04-27 | 2021-07-20 | 中山亿联智能科技有限公司 | 高效率低延迟上报读取用户在线播放信息的方法 |
CN113139081B (zh) * | 2021-04-27 | 2023-10-27 | 中山亿联智能科技有限公司 | 高效率低延迟上报读取用户在线播放信息的方法 |
CN113379431A (zh) * | 2021-06-29 | 2021-09-10 | 上海中商网络股份有限公司 | 一种采集数据实时校验方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9619491B2 (en) | Streamlined system to restore an analytic model state for training and scoring | |
CN112800095B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
US20140115610A1 (en) | System and method for batch evaluation programs | |
CN113342345A (zh) | 深度学习框架的算子融合方法、装置 | |
CN108959279B (zh) | 数据处理方法、数据处理装置、可读介质及电子设备 | |
CN111858576A (zh) | 实时消息处理方法、***、装置、存储介质及电子设备 | |
EP3940550A1 (en) | Data compression methods and systems based on key-value store | |
CN111125107A (zh) | 数据处理方法、装置、电子设备和介质 | |
CN111209310A (zh) | 基于流计算的业务数据处理方法、装置和计算机设备 | |
CN109597810B (zh) | 一种任务切分方法、装置、介质及电子设备 | |
CN109960212B (zh) | 任务发送方法和装置 | |
CN110866040A (zh) | 用户画像生成方法、装置和*** | |
CN114780564A (zh) | 数据处理方法、数据处理装置、电子设备和存储介质 | |
CN114490050A (zh) | 一种数据同步方法和装置 | |
CN113723893A (zh) | 用于处理订单的方法和装置 | |
CN113010542A (zh) | 业务数据处理方法、装置、计算机设备及存储介质 | |
CN113836235B (zh) | 基于数据中台的数据处理方法及其相关设备 | |
CN113111078B (zh) | 资源数据处理方法、装置、计算机设备和存储介质 | |
CN115168509A (zh) | 风控数据的处理方法及装置、存储介质、计算机设备 | |
CN115168358A (zh) | 数据库访问方法、装置、电子设备及存储介质 | |
CN115269431A (zh) | 一种接口测试方法、装置、电子设备及存储介质 | |
CN110688355A (zh) | 变更容器状态的方法和装置 | |
CN114218313A (zh) | 数据管理方法、装置、电子设备、存储介质及产品 | |
CN110309121B (zh) | 日志处理方法及装置、计算机可读介质和电子设备 | |
CN112968876A (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 |