CN114979179A - 消息处理方法和相关装置 - Google Patents
消息处理方法和相关装置 Download PDFInfo
- Publication number
- CN114979179A CN114979179A CN202210569899.3A CN202210569899A CN114979179A CN 114979179 A CN114979179 A CN 114979179A CN 202210569899 A CN202210569899 A CN 202210569899A CN 114979179 A CN114979179 A CN 114979179A
- Authority
- CN
- China
- Prior art keywords
- message
- storage device
- target
- storage
- storing
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title abstract description 13
- 238000003860 storage Methods 0.000 claims abstract description 263
- 238000000034 method Methods 0.000 claims description 47
- 238000013500 data storage Methods 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 5
- 239000003795 chemical substances by application Substances 0.000 description 22
- 238000010586 diagram Methods 0.000 description 16
- 230000005540 biological transmission Effects 0.000 description 13
- 230000007246 mechanism Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 230000009467 reduction Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 230000005012 migration Effects 0.000 description 5
- 238000013508 migration Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000003319 supportive effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0677—Localisation of faults
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供的消息处理方法和相关装置,可用于金融领域或其他领域。通过消息代理装置接收消息生产者发送的消息,将消息存储至第一存储装置,将消息的元信息存储至第二存储装置,第一存储装置与第二存储装置不是同一存储装置。由于将消息及其元信息独立存储,不但便于对消息进行复制备份,且当消息的存储节点出现故障时,也不会影响消息代理装置对外的消息查询能力。
Description
技术领域
本申请涉及金融领域,尤其涉及一种消息处理方法、消息处理装置、计算机可读存储介质和计算机应用程序。
背景技术
随着国内信息化建设的日益深入,为解决信息孤岛问题,以及更加灵活的对各种不断变化的需求给予快速的响应,提高数据传输的可靠性和高效性,满足数据传输的需求,消息中间件应运而生。
消息中间件是基于队列与消息传递技术,在网络环境中为应用系统提供同步或异步的消息传输的支撑性系统。消息中间件关联的存储节点中包含多个队列,发送者将消息发送至消息中间件,消息中间件通过负载均衡的方式从这多个队列中选择目标队列,并将消息存放在目标队列中,在合适的时候再将这多个队列中的消息转发给接受者。消息中间件将消息存放队列的同时,也将该消息的元信息存储在存储节点中。
当存储节点发生故障时,该存储节点中的消息以及该元信息也会同步丢失,不能提供消息读取服务,也不能提供消息查询服务。
因此,如何提高消息传输服务的可用性,成为亟待解决的技术问题。
发明内容
本申请提供消息处理方法、消息处理装置、消息处理系统、计算机可读存储介质和计算机应用程序,可以提高消息传输服务可用性。
第一方面,本申请提供一种消息处理方法,包括:接收消息生产者发送的消息;将消息存储至第一存储装置;将消息的元信息存储至第二存储装置,第一存储装置与第二存储装置不是同一存储装置。
本申请提供的方法,通过将消息存储至消息存储装置中并使其处于无状态模式,在此种情况下进行扩容缩容操作时,无需再进行负载均衡和数据迁移,提升备份效率的同时也提升系统的容错能力;且元数据存储装置与消息存储装置相互独立,当消息存储装置故障时,不影响系统对外提供消息查询能力,与此同时,通过元数据存储系统的查询能力,可以定位具体的消息存储装置故障,以便迅速对该故障消息存储装置中的消息进行数据复制和备份。
可选地,将消息存储至第一存储装置,包括:将消息存储至本地缓存空间;当本地缓存空间中的数据存储量大于或等于数据存储量阈值时,将消息存储至第一存储装置。
本申请提供的方法,通过在消息代理装置中设置缓存机制,当消息代理装置缓存的消息满足预设规则时,向消息存储装置写入缓存的消息,这种批量写入的方式提升了系统整体的数据吞吐能力。且通过缓存机制,当消息消费者查询目标消息时,若目标消息缓存在本地时,可直接读取该消息,提升了消息的查询效率。
可选地,当本地缓存空间中的数据存储量大于或等于数据存储量阈值时,将消息存储至第三存储装置,第三存储装置与第一存储装置和第二存储装置均不是同一存储装置。
本申请提供的方法,通过将消息存储至消息存储装置中并使其处于无状态模式,在此种情况下进行扩容缩容操作时,不需要再进行繁琐的负载均衡以及消息数据的迁移操作,相较传统的的消息中间件在一定程度上提升了消息备份效率。并且,通过备份多份消息存储转置存储消息也提升了系统的容灾能力,部分消息存储装置出现故障时,也不会影响其余正常的消息存储装置对外提供消息的读取和存储服务。
可选地,接收消息消费者的消息读取请求,消息读取请求用于读取目标消息;响应于消息读取请求从本地缓存空间中读取目标消息;若本地缓存空间中包含目标消息,则向消息消费者发送本地缓存空间中存储的目标消息;若本地缓存空间中不包含目标消息,则从第二存储装置中获取目标消息的目标元信息,并基于目标元信息从第一存储装置中读取目标消息。
本申请提供的方法,通过在消息代理装置中设置缓存机制,当消息消费者查询目标消息时,若目标消息缓存在本地时,可直接读取该消息;仅在消息代理装置的本地缓存中不存在该目标消息时,才会进行查询,减少了装置间的通信动作,提升了消息的查询效率。
可选地,第一存储装置发生故障时,基于目标元信息从第三存储装置读取目标消息。
本申请提供的方法,通过将消息备份到多个消息存储装置中,当其中部分存储装置发生故障时,该消息传输系统依然能够对外提供消息传输服务,且通过存储在元数据存储装置中的元信息,获悉返回的读取请求失败结果,从而快速定位故障的存储节点;既提升了系统的容灾能力,也提升了故障节点的定位速度,以便技术人员迅速进行数据的备份。
可选地,将元信息存储至第二存储装置,包括:将元信息存储至本地缓存空间;当本地缓存空间中的数据存储量大于或等于数据存储量阈值时,将元信息存储至第二存储装置;相应地,从第二存储装置中获取目标消息的目标元信息,包括:从本地缓存空间中获取目标元信息;若本地缓存空间中不包含目标元信息,则从第二存储装置中获取目标消息的目标元信息。
本申请提供的方法,通过设置元信息的缓存机制,当消息代理装置接收到消息消费者发送的目标消息的读取请求时,优先检索本地缓存的元信息,减少装置间的频繁通信交互,提升消息读取效率。
可选地,当本地缓存空间中的数据存储量大于或等于数据存储量阈值时,将元信息存储至第四存储装置,第四存储装置与第一存储装置、第二存储装置和第三存储装置均不是同一存储装置;第二存储装置发生故障时,从第四存储装置读取目标元信息。
本申请提供的方法,通过将消息备份到多个元数据存储装置中,当其中部分存储装置发生故障时,该消息传输系统依然能够对外提供消息查询服务,提升了消息查询服务的可靠性。
第二方面,本申请提供一种消息处理装置。该装置可以包括用于实现第一方面中的消息处理方法的各个功能模块,其中,每个模块可以通过软件和/或硬件方式实现。
作为一种示例,该装置可以包括:消息接收模块:用于接收消息生产者发送的消息;消息存储模块:用于将消息存储至第一存储装置;用于将消息的元信息存储至第二存储装置,第一存储装置与第二存储装置不是同一存储装置。
可选地,该装置可以是计算设备,也可以是能够应用在计算设备的芯片。
第三方面,本申请提供一种消息处理系统,包括:消息生产者、消息中间件及消息消费者;其中,消息中间件包括:消息接收模块:用于接收消息生产者发送的消息;消息存储模块:用于将消息存储至第一存储装置;用于将息的元信息存储至第二存储装置,第一存储装置与第二存储装置不是同一存储装置。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现第一方面的消息处理方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面的消息处理方法。
本申请提供的消息处理方法和相关装置,通过接收消息生产者发送的消息,将消息存储至第一存储装置,将消息的元信息存储至第二存储装置,第一存储装置与第二存储装置不是同一存储装置。由于将消息及其元信息独立存储,不但便于对消息进行复制备份,且当消息的存储节点出现故障时,也不会影响消息代理装置对外的消息查询能力。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请一实施例提供的消息传输的场景示意图;
图2为本申请一实施例提供的消息处理装置的架构示意图;
图3为本申请一实施例提供的消息处理流程示意图;
图4为本申请一实施例提供的消息代理装置消息接收示意图;
图5为本申请一实施例提供的另一消息处理流程示意图;
图6为本申请一实施例提供的另一消息处理流程示意图;
图7为本申请一实施例提供的另一消息处理流程示意图;
图8为本申请一实施例提供的消息存储装置的结构示意图;
图9为本申请一实施例提供的另一消息处理流程示意图;
图10为本申请一实施例提供的另一消消息处理流程示意图;
图11为本申请一实施例提供的另一消息处理流程示意图;
图12为本申请一实施例提供的消息处理装置结构示意图;
图13为本申请一实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
图1为本申请的实施例的一种应用场景的示意图。如图1所示场景,该消息传输场景包括消息生产者110、消息中间件120和消息消费者130。
消息生产者110用于生产需要通讯的消息并向消息中间件120发送消息。
消息中间件120用于接收消息生产者110所发送的消息,并通过负载均衡的方式将该消息和该消息的元信息存储至存储节点中相应的队列中。
消息消费者130用于可以从消息中间件获取消息并处理该消息。
消息生产者110还可以用于向消息中间件120发送消息查询请求。消息中间件120接收到消息查询请求之后,基于存储节点中存储的消息元信息查询消息,并向消息生产者发送查询结果。
一种实现方式中,将消息中间件接收到消息之后,将消息和消息的元信息存储至同一个存储节点。但是,这样会出现如下问题:该存储节点发生故障时,消息和消息元信息同时受影响,消息中间件既不能提供消息读取服务,也不能提供消息查询服务。此外,存储节点需要扩容或者缩容时,需要对该存储节点上所有数据(消息和消息元信息)均进行数据迁移,以及还需将这些数据重新负载均衡到其他存储节点,导致扩容或者缩容效率低。
为解决上述问题,本申请提出新的技术方案。本申请提出的技术方案中,将消息与其元信息分离存储。这样,消息和元信息分别所属的存储节点中任意一个发生故障时不会对另外一种数据造成影响,从而可以提高服务的可靠性。
本申请的技术方案中,对消息进行存储时,进行备份,从而使得存储消息的存储节点中只要不是所有存储节点都发生故障,就依然能够提供消息读取服务,从而可以提高消息读取服务的可靠性。
本申请的技术方案中,对消息元信息进行存储时,进行备份,从而使得存储消息元信息的存储节点中只要不是所有存储节点都发生故障,就依然能够提供消息查询服务,从而可以提高消息查询服务的可靠性。
图2为本申请一个实施例的消息处理系统的示例性架构图。如图2所示,消息处理系统120可以包括消息代理装置210、元数据存储装置220和消息存储装置230。其中,消息代理装置210可以用于缓存图1中消息生产者110所产生的消息,并将该消息存储至相对应的存储装置中。其中,元数据存储装置220可以用于存储消息的元信息,该元信息可以包括消息的数据类型、消息的副本数、消息在各消息存储装置中的起始位置等中至少一种。其中,消息存储装置230可以用于存储消息代理装置210缓存的消息,并可以根据存储的负载情况进行扩容和/或缩容。
本实施例中,消息处理系统的一种示例为消息中间件120。
需要注意的是,本申请公开的一种消息处理方法和相关装置可用于金融领域,也可以用于除金融领域以外的任何领域。本申请公开的一种消息处理方法和相关装置应用领域不作限定。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图3为本申请的实施例的一种消息处理的方法流程示意图。如图3所示,本申请的实施例的方法可以包括S310、S320和S330。
该方法可以用于图1所示的消息数据传输。本申请实施例可以由图1所示消息中间件所在服务器执行,也可以由能够与该服务器通讯的其他服务器执行。
S310,接收消息生产者发送的消息。
可选地,该消息生产者可以为一个或多个。
在一种可能的实现方式中,消息代理装置接收来自多个消息生产者中每个消息生产者的消息,并将该消息写入磁盘缓冲区。
为便于理解,结合图4进行说明,如图4所示,消息代理装置400中的消息队列包括消息410。前述消息410可以是一个消息生产者同时发送或分时发送,也可以是多个消息生产者同时发送或分时发送;消息代理装置400接收到消息生产者发送的消息1、消息2和消息3后,将前述消息缓存到本地的磁盘中。
S320,将消息存储至第一存储装置。
本实施例中,第一存储装置可以称为消息存储装置。在分布式系统中,可以存在一个或多个消息存储装置。
第一存储装置可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
S330,将消息的元信息存储至第二存储装置,第一存储装置与第二存储装置不是同一存储装置。
本实施例中,第二存储装置可以称为元数据存储装置。在分布式系统中,可以存在一个或多个元数据存储装置。
第二存储装置可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
作为一种示例,消息代理装置将缓存的消息写入各对应的消息存储装置进行存储,存储完毕后,消息存储装置生成包含消息的数据类型、消息的副本数和消息在各存储装置中的起始位置的元信息,消息代理装置获取该批消息的元信息,并将其写入元数据存储装置存储。
综上,通过将消息存储至消息存储装置中并使其处于无状态模式,在此种情况下进行扩容缩容操作时,无需再进行负载均衡和数据迁移,提升备份效率的同时也提升系统的容错能力;且元数据存储装置与消息存储装置相互独立,当消息存储装置故障时,不影响系统对外提供消息查询能力,与此同时,通过元数据存储系统的查询能力,可以定位具体的消息存储装置故障,以便迅速对该故障消息存储装置中的消息进行数据复制和备份。
可选地,元信息可以包括消息的数据类型、消息的副本数、消息在各存储装置中的起始位置等中至少一种。其中,消息在各存储装置中的起始位置是该消息在消息存储装置中的位置信息。
作为一个示例,消息1至消息X分别存储至相应的消息存储装置,消息1至消息X中每个消息的索引信息可以用于指示该消息在相应消息存储装置中的位置。例如,消息1的元信息中的索引信息用于指示消息1存储在消息存储装置1第3块磁盘第54个扇区,消息2的元信息中的索引信息用于指示消息2存储在消息存储装置2第1块磁盘第32个扇区,消息X的元信息中的索引信息用于指示消息X存储在消息存储装置5第1块磁盘第66个扇区。
本申请实施例中,可选地,如图5所示,S320(即将消息存储至第一存储装置)包括S321和S322。
S321,将消息存储至本地缓存空间。
作为示例,消息代理装置接收消息生产者发送的消息之后,先将消息缓存至磁盘的缓冲区中。
S322,将消息存储至第一存储装置。
作为示例,可以预先设定数据存储量阈值为消息的条目数、消息数据的存储量和时间周期等中至少一种。
例如,预先设定消息的条目数触发规则,当消息在消息代理装置本地缓存的条数达到2万条时,将消息写入消息存储装置中。
又如,预先设定消息的数据存储量触发规则,当消息在消息代理装置本地缓存的数据量达到5M时,将消息写入消息存储装置中。
再如,预先设定消息的周期发送规则,每隔20S的时间周期将消息代理装置本地缓存的消息写入消息存储装置中。
在一种可能的实现方式中,消息代理装置接收到多个消息生产者发送的多个消息,并将该多个消息写入磁盘缓冲区,当磁盘缓冲区的数据存储量达到预设阈值时(例如5M),将磁盘缓冲区中的消息根据上述的副本数批量写入消息存储装置中。
也就是说,本地缓存空间中的数据存储量小于数据存储量阈值的情况下,执行常规流程,例如接收下一个消息等等;本地缓存空间中的数据存储量大于或等于数据存储量阈值的情况下,先将消息写入第一存储装置再执行常规流程。
综上,通过在消息代理装置中设置缓存机制,当消息代理装置缓存的消息满足预设规则时,向消息存储装置写入缓存的消息,这种批量写入的方式提升了系统整体的数据吞吐能力。且通过缓存机制,当消息消费者查询目标消息时,若目标消息缓存在本地时,可直接读取该消息,提升了消息的查询效率。
在本申请实施例中,可选地,如图6所示,还包括S610~S650。
S610,接收消息消费者的消息读取请求,消息读取请求用于读取目标消息。
可选地,消息消费者可以为多个,多个消息消费者可以对应同一个目标消息,也可以对应不同的目标消息。
S620,响应于消息读取请求从本地缓存空间中读取目标消息。
消息代理装置存储消息的方式如前述,此处不再赘述。
在一种可能的实现方式中,消息代理装置接收目标消息的读取请求,对本地存储磁盘上的消息进行检索。
S630,若本地缓存空间中包含目标消息,则向消息消费者发送本地缓存空间中存储的目标消息。
在一种可能的实现方式中,消息代理装置接收来自消息生产者的消息,并将该消息缓存在本地,当消息消费者向消息代理装置发送目标消息的请求时,消息代理装置优先检索本地缓存的消息,当本地缓存的消息中包含目标消息时,可以直接向消息消费者返回该目标消息。
S640,若本地缓存空间中不包含目标消息,则从第二存储装置中获取目标消息的目标元信息。
S650,基于目标元信息从第一存储装置中读取目标消息。
在一种可能的实现方式中,消息代理装置未检索到本地包含目标消息时,会根据消息消费者的目标消息请求向元数据存储装置发送查询该目标消息的请求,元数据存储装置根据该请求向消息代理装置返回与目标消息相关的元信息,消息代理装置接收到该目标消息的元信息后,根据该元信息的数据读取存储在消息存储装置中的该目标消息,并将该目标消息返回给消息消费者。
综上,通过在消息代理装置中设置缓存机制,当消息消费者查询目标消息时,若目标消息缓存在本地时,可直接读取该消息;仅在消息代理装置的本地缓存中不存在该目标消息时,才会进行查询,减少了装置间的通信动作,提升了消息的查询效率。
如图7所示,在本申请实施例中,可选地,还包括S710。
S710,消息代理装置将消息存储第一存储装置和将元信息存储至第二存储装置的情况下,还将该消息存储至第三存储装置,第三存储装置与第一存储装置和第二存储装置均不是同一存储装置。
例如,当本地缓存空间中的数据存储量大于或等于数据存储量阈值的情况下,将消息存储至第一存储装置的同时,也将该消息存储至第三存储装置。
可选地,第三存储装置可以是消息存储装置,第三存储装置可以与第一存储装置和第二存储装置部署在分布式系统中的不同服务器上。
作为示例,消息代理装置可以通过轮询机制将消息同时存储至第一存储装置和第三存储装置。与此同时,消息的元信息中包含该消息存储在第一存储装置和第三存储装置中的起始位置。
在一种可能的实现方式中,技术人员可以预先设置消息存储的副本数,消息代理装置接收消息生产装置发送的消息后将消息按副本数分别存储至相应的消息存储装置中。也就是说,消息中间件除了在第三存储装置上备份该消息,还可以在更多数量的存储装置上备份该消息,以提高业务的可靠性。
为便于理解,结合图8进行说明,如图8所示,消息代理装置810中已缓存有消息820,消息存储装置830中包含消息代理装置810中的消息820。消息代理装置810接收消息生产者发送的消息1、消息2和消息3,按照预设的副本数(例如副本数为3)将同一消息分别写入三个对应的消息存储装置中,消息1分别写入消息存储装置1、消息存储装置2中消息存储装置3进行存储,消息2和消息3的写入过程同前述,该写入过程可通过轮询机制实现。技术人员可以根据消息存储装置830的存储容量情况通过新增消息存储装置5进行扩容,并在消息存储装置5上设置标记,当消息代理装置810接收到消息生产者发送的新的消息X后,消息代理装置810会优先将消息X写入附加标记的消息存储装置5中,剩余两份备份消息X可以根据原有消息存储装置的负载情况进行写入存储,例如,消息X分别写入消息存储装置1和消息存储装置3中。其中,此后当消息代理装置向消息存储装置写入新的消息时,仍会优先写入消息存储装置5直至该装置的负载容量与其他装置相当时,消息代理装置可以删除消息存储装置5上的附加标记,此时,消息代理装置可再次通过轮询机制写入新接收的消息。
可以理解的是,用户也可以根据消息存储装置830的存储容量情况通过减少消息存储装置进行缩容。此时,仅需将要减少的消息存储装置中存储的消息复制迁移到剩余可用的消息存储装置中,并生成迁移消息的新的元信息,写入元数据存储装置中更新原有元信息即可。
综上,通过将消息存储至消息存储装置中并使其处于无状态模式,在此种情况下进行扩容缩容操作时,不需要再进行繁琐的负载均衡以及消息数据的迁移操作,相较传统的的消息中间件在一定程度上提升了消息备份效率。并且,通过备份多份消息存储转置存储消息也提升了系统的容灾能力,部分消息存储装置出现故障时,也不会影响其余正常的消息存储装置对外提供消息的读取和存储服务。
如图9所示,在本申请实施例中,可选地,还包括S910。
S910,第一存储装置发生故障时,基于目标元信息从第三存储装置读取所述目标消息。
在一种可能的实现方式中,第一存储装置发生故障导致存储在其中的目标消息无法被读取,消息代理装置根据存储在第二存储装置中的元信息,可以读取备份在第三存储装置的该目标消息。且消息代理装置通过第一存储装置返回的读取失败结果,可以快速确定该第一存储装置发生故障。
综上,通过将消息备份到多个消息存储装置中,当其中部分存储装置发生故障时,该消息传输系统依然能够对外提供消息传输服务,且通过存储在元数据存储装置中的元信息,获悉返回的读取请求失败结果,从而快速定位故障的存储节点;既提升了系统的容灾能力,也提升了故障节点的定位速度,以便技术人员迅速进行数据的备份。
如图10所示,在本申请实施例中,在步骤S330中,可选地,还包括S1010~S1050、。
S1010,将元信息存储至本地缓存空间。
可选地,消息代理装置存储元信息的方式可以与存储消息的方式相同,如前述,此处不再赘述。
S1020,当本地缓存空间中的数据存储量大于或等于数据存储量阈值时,将元信息存储至第二存储装置。
可选地,消息代理装置将缓存在本地的元信息发送给元数据存储装置的逻辑判断流程可以与前述发送消息的判断流程相同,此处不再赘述。
S1030,响应于消息读取请求读取目标消息。
在一种可能的实现方式中,消息代理装置接收来自消息消费者的目标消息的读取请求。
S1040,若本地缓存空间包含目标消息的目标元信息,则根据该元信息读取目标消息。
可选地,消息代理装置根据目标消息的元信息可以向第一存储装置读取该目标消息,也可以向第三存储装置(图中未示出)读取该目标消息。
S1050,若本地缓存空间不包含目标消息的目标元信息,则从第二存储装置中获取该目标元信息,并根据该目标元信息读取目标消息。
可以理解的是,消息代理装置的本地缓存空间可以在存储消息的元信息的同时,存储消息生产者发送的消息。该消息可以是该元信息对应的消息,也可以是消息生产者发送的新消息。
综上,通过设置元信息的缓存机制,当消息代理装置接收到消息消费者发送的目标消息的读取请求时,优先检索本地缓存的元信息,减少装置间的频繁通信交互,提升消息查询效率。
如图11所示,在本申请实施例中,可选地,还包括S1110、S1120和S1130。
S1110,当本地缓存空间中的数据存储量大于或等于数据存储量阈值时,将元信息存储至第四存储装置,第四存储装置与第一存储装置、第二存储装置和第三存储装置均不是同一存储装置。
可选地,第四存储装置可以是元数据存储装置。
此处元信息的备份存储方式如前述消息的备份存储方式,此处不再赘述。
S1120,响应于目标消息的读取请求,向第二存储装置读取目标消息的元信息,若第二存储装置故障,则返回元信息读取失败。
此处元信息的故障读取即信息读取方式如前述消息的故障读取及信息读取方式,此处不再赘述。
可以理解的是,消息代理装置接收目标消息的读取请求后,也可以优先第四存储装置读取目标消息的元信息,此处作为一种示例,不构成对方案的限定。
S1130,向第四存储装置读取目标消息的元信息,并根据该元信息读取目标消息并向消息消费者返回该目标消息。
可选地,消息代理装置根据目标消息的元信息可以向第一存储装置读取该目标消息,也可以向第三存储装置读取该目标消息。
综上,通过将消息备份到多个元数据存储装置中,当其中部分存储装置发生故障时,该消息传输系统依然能够对外提供消息查询服务,提升了消息查询服务的可靠性。
图12为本申请实施例提供的消息处理装置结构示意图。如图12所示,该消息处理装置1200包括:消息接收模块1210、消息存储模块1220。作为示例,该应用管理装置可以是图1中的消息中间件120,可以是应用于图1中的消息中间件120的芯片,或者是应用于图1中的消息中间件120中计算机程序产品。其中:
消息处理装置1200可以用于实现图3所示实施例中的方法。作为示例,消息接收模块1210可以用于实现图3所示实施例中的S310;消息存储模块1220可以用于实现图3所示实施例中的S320和S330。
进一步地,消息处理装置1200还可以用于实现图5至图7、图9至图11所示实施例中的方法。可以理解的是,本申请实施例提供的消息处理装置,可用于执行如上所述任一方法实施例的技术方案,其实现原理和技术效果类似,具体可参考上述方法实施例,此处不再赘述。
图13为本申请实施例提供的电子设备的结构示意图。如图13所示,本申请提供的电子设备可以包括:存储器1310和处理器1320。
存储器1310用于存储用于实现图3、图5至图7、图9至图11中任意一个所示实施例中的方法的计算机应用程序。
处理器1320用于执行存储器1310中的计算机应用程序,该计算机应用程序被处理器1320执行时实现如图3、图5至图7、图9至图11中任意一个所示实施例中的方法。
可选地,存储器1310既可以是独立的,也可以是跟处理器1320集成在一起。
本实施例提供的电子设备的实现原理和技术效果可以参见前述各实施例,此处不再赘述。
本申请实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如前述任一实施例提供的消息处理方法的步骤。
在本发明提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例方法的部分步骤。
应理解,上述处理器可以是中央处理单元(Central Processing Unit,简称CPU),还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (11)
1.一种消息处理方法,其特征在于,所述方法包括:
接收消息生产者发送的消息;
将所述消息存储至第一存储装置;
将所述消息的元信息存储至第二存储装置,所述第一存储装置与所述第二存储装置不是同一存储装置。
2.根据权利要求1所述的方法,其特征在于,所述将所述消息存储至第一存储装置,包括:
将所述消息存储至本地缓存空间;
当所述本地缓存空间中的数据存储量大于或等于数据存储量阈值时,将所述消息存储至所述第一存储装置。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述本地缓存空间中的数据存储量大于或等于数据存储量阈值时,将所述消息存储至第三存储装置,所述第三存储装置与所述第一存储装置和所述第二存储装置均不是同一存储装置。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
接收消息消费者的消息读取请求,所述消息读取请求用于读取目标消息;
响应于所述消息读取请求从所述本地缓存空间中读取所述目标消息;
若所述本地缓存空间中包含所述目标消息,则向所述消息消费者发送所述本地缓存空间中存储的所述目标消息;
若所述本地缓存空间中不包含所述目标消息,则从所述第二存储装置中获取所述目标消息的目标元信息,并基于所述目标元信息从所述第一存储装置中读取所述目标消息。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述第一存储装置发生故障时,基于所述目标元信息从所述第三存储装置读取所述目标消息。
6.根据权利要求5所述的方法,其特征在于,所述将所述元信息存储至第二存储装置,包括:
将所述元信息存储至本地缓存空间;
当所述本地缓存空间中的数据存储量大于或等于数据存储量阈值时,将所述元信息存储至所述第二存储装置;
相应地,所述从所述第二存储装置中获取所述目标消息的目标元信息,包括:
从所述本地缓存空间中获取所述目标元信息;
若所述本地缓存空间中不包含所述目标元信息,则从所述第二存储装置中获取所述目标消息的目标元信息。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当所述本地缓存空间中的数据存储量大于或等于数据存储量阈值时,将所述元信息存储至第四存储装置,所述第四存储装置与所述第一存储装置、所述第二存储装置和所述第三存储装置均不是同一存储装置;
所述第二存储装置发生故障时,从所述第四存储装置读取所述目标元信息。
8.一种消息处理装置,其特征在于,包括:
消息接收模块:用于接收消息生产者发送的消息;
消息存储模块:用于将所述消息存储至第一存储装置;用于将所述消息的元信息存储至第二存储装置,所述第一存储装置与所述第二存储装置不是同一存储装置。
9.一种消息处理装置,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-7任一项所述的方法。
11.一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210569899.3A CN114979179B (zh) | 2022-05-24 | 2022-05-24 | 消息处理方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210569899.3A CN114979179B (zh) | 2022-05-24 | 2022-05-24 | 消息处理方法和相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114979179A true CN114979179A (zh) | 2022-08-30 |
CN114979179B CN114979179B (zh) | 2024-01-30 |
Family
ID=82956658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210569899.3A Active CN114979179B (zh) | 2022-05-24 | 2022-05-24 | 消息处理方法和相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114979179B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112052116A (zh) * | 2019-06-05 | 2020-12-08 | 爱思开海力士有限公司 | 存储器系统、存储器控制器和元信息存储装置 |
CN112346647A (zh) * | 2019-08-06 | 2021-02-09 | 浙江宇视科技有限公司 | 数据存储方法、装置、设备和介质 |
CN112698965A (zh) * | 2020-12-25 | 2021-04-23 | 百度在线网络技术(北京)有限公司 | 用于实现消息队列的系统、方法及消息调度系统 |
CN114089912A (zh) * | 2021-10-19 | 2022-02-25 | 银联商务股份有限公司 | 基于消息中间件的数据处理方法及装置、存储介质 |
-
2022
- 2022-05-24 CN CN202210569899.3A patent/CN114979179B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112052116A (zh) * | 2019-06-05 | 2020-12-08 | 爱思开海力士有限公司 | 存储器系统、存储器控制器和元信息存储装置 |
CN112346647A (zh) * | 2019-08-06 | 2021-02-09 | 浙江宇视科技有限公司 | 数据存储方法、装置、设备和介质 |
CN112698965A (zh) * | 2020-12-25 | 2021-04-23 | 百度在线网络技术(北京)有限公司 | 用于实现消息队列的系统、方法及消息调度系统 |
CN114089912A (zh) * | 2021-10-19 | 2022-02-25 | 银联商务股份有限公司 | 基于消息中间件的数据处理方法及装置、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114979179B (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11614867B2 (en) | Distributed storage system-based data processing method and storage device | |
CN106776130B (zh) | 一种日志恢复方法、存储装置和存储节点 | |
CN110018998B (zh) | 一种文件管理方法、系统及电子设备和存储介质 | |
CN108762668B (zh) | 一种处理写入冲突的方法及装置 | |
CN113360456B (zh) | 数据归档方法、装置、设备以及存储介质 | |
CN111309245B (zh) | 一种分层存储写入方法和装置、读取方法和装置及系统 | |
CN115756955A (zh) | 一种数据备份、数据恢复的方法、装置及计算机设备 | |
CN112015591A (zh) | 一种日志管理方法、服务器和数据库系统 | |
CN113467719B (zh) | 数据写入方法及装置 | |
CN110659251B (zh) | 数据处理方法、系统和电子设备 | |
CN111399753A (zh) | 写入图片的方法和装置 | |
CN108304144B (zh) | 数据写入、读取方法与系统、数据读写系统 | |
CN114979179B (zh) | 消息处理方法和相关装置 | |
CN112115521B (zh) | 数据访问方法及装置 | |
CN111522883B (zh) | 对象数据的备份方法、装置、设备及存储介质 | |
CN115454570A (zh) | 灾备方法、灾备恢复方法、虚拟机系统、设备及存储介质 | |
CN115421856A (zh) | 一种数据恢复方法及装置 | |
CN112947847B (zh) | 用于存储数据的方法、设备和计算机程序产品 | |
CN113687935A (zh) | 一种基于超融合设计的云原生存储调度方式 | |
CN116662603B (zh) | 基于kafka的时间轴管控方法、系统、电子设备及存储介质 | |
CN111625500A (zh) | 文件快照方法及装置、电子设备和存储介质 | |
CN111488324A (zh) | 一种基于消息中间件的分布式网络文件系统及其工作方法 | |
CN118277344B (zh) | 分布式键值存储系统的存储节点层间合并方法及装置 | |
CN111435342A (zh) | 海报的更新方法、更新系统以及管理系统 | |
CN118400386B (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 |