CN113641511B - 一种消息通信方法和装置 - Google Patents
一种消息通信方法和装置 Download PDFInfo
- Publication number
- CN113641511B CN113641511B CN202110781013.7A CN202110781013A CN113641511B CN 113641511 B CN113641511 B CN 113641511B CN 202110781013 A CN202110781013 A CN 202110781013A CN 113641511 B CN113641511 B CN 113641511B
- Authority
- CN
- China
- Prior art keywords
- message
- proxy server
- node
- proxy
- consumer
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000004891 communication Methods 0.000 title claims abstract description 29
- 238000004590 computer program Methods 0.000 claims description 15
- 238000003860 storage Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 abstract description 31
- 239000002699 waste material Substances 0.000 abstract description 11
- 230000001360 synchronised effect Effects 0.000 description 28
- 230000005540 biological transmission Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 20
- 230000002441 reversible effect Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 230000015556 catabolic process Effects 0.000 description 7
- 238000006731 degradation reaction Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000003672 processing method Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 239000011435 rock Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004366 reverse phase liquid chromatography Methods 0.000 description 2
- 208000032369 Primary transmission Diseases 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请实施例提供了一种消息通信方法和装置,所述方法包括:在一节点的主代理服务器接收到生产者发送的消息后,与另外至少一节点的副代理服务器进行消息同步;所述主代理服务器向消费者发送消息,或另外一个节点的副服务器向消费者发送消息。通过提出每个节点包括一主代理服务器以及至少一副代理服务器的新型消息队列高可用架构,实现单点多Broker,提高消息代理服务集群中节点的利用率,减少节点资源的浪费;且由于每个节点均包括一主代理服务器,能够保证每个节点的能力对等,以及通过不同节点间主、副代理服务器的消息同步,在保证每个节点消息一致性的前提下,能够实现节点消息传输时,特别是节点出现故障情况下的无选主过程。
Description
技术领域
本申请涉及通信技术领域,特别是涉及一种消息通信方法和一种消息通信装置。
背景技术
分布式系统(Distributed System)是一种建立在网络之上的软件系统,对于用户而言其可以相当于单个相关系统,但实际上是若干独立计算机的集合,其中,用于组成系统的独立计算机在地域上可以是分散的,且整个系统的功能可以通过分散在各个节点上实现。
消息队列中间件(例如Rocket MQ(Rocket Message Queue,指的是一种开源的消息中间件)、ONS(OpenNotification Service,开放消息服务,基于开源消息中间件RocketMQ实现)、Kafka(是一种开源分布式高并发消息中间件)等)是分布式系统中重要的组件,其主要用于解决分布式系统之间消息传递的问题,消息代理是一种用于消息验证、变换、路由的架构模式,虽然不同的消息中间件架构和实现各不相同,但是大部分都实现了Broker,其为消息系统中的代理服务器,可以具有与消息生产者和消息消费者进行消息收发的逻辑。目前所实现的中间件架构中,各个Broker均独占一个消息代理服务,在Broker正常运行时,备用代理服务器仅需从主代理服务器同步消息,其资源利用率在大部分时间都处于较低水平,从而导致一定程度的资源浪费。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种消息通信方法和相应的一种消息通信装置。
本申请实施例公开了一种消息通信方法,应用于消息系统,所述消息系统包括生产者、消息代理服务集群和消费者,所述消息代理服务集群包括多个节点,每个节点包括每个副本组的一个副本,且包括属于不同副本组的一主代理服务器以及至少一副代理服务器,所述方法包括:
在一节点的主代理服务器接收到生产者发送的消息后,与另外至少一节点的副代理服务器进行消息同步;
所述主代理服务器向消费者发送消息,或另外一个节点的副服务器向消费者发送消息。
可选地,所述与另外至少一节点的副代理服务器进行消息同步,包括:
向与所述主代理服务器属于同一副本组的至少一个副代理服务器进行消息同步;其中,属于同一副本组的各个副代理服务器以及主代理服务器之间位于不同节点。
可选地,所述向与所述主代理服务器属于同一副本组的至少一个副代理服务器同步所述生产者发送的消息,包括:
配置与所述主代理服务器进行消息同步的代理服务器数量;
按照所配置的代理服务器数量,向属于同一副本组的代理服务器同步所述生产者发送的消息。
可选地,所述方法还包括:
另外一节点的副代理服务器向所述主代理服务器同步当前元数据。
可选地,所述另外一节点的副代理服务器向所述主代理服务器同步当前元数据,包括:
通过与所述主代理服务器属于同一副本组的一副代理服务器,在所述主代理服务器故障修复后,向所述主代理服务器同步当前元数据。
可选地,所述另外一个节点的副服务器向消费者发送消息,包括:
另外一节点的副代理服务器,在所述主代理服务器故障时,向消费者发送消息。
可选地,所述另外一节点的副代理服务器向消费者发送消息,包括:
通过与所述主代理服务器属于同一副本组的一副代理服务器,向所述消费者发送消息。
本申请实施例还公开了一种消息通信装置,应用于消息系统,所述消息系统包括生产者、消息代理服务集群和消费者,所述消息代理服务集群包括多个节点,每个节点包括每个副本组的一个副本,且包括属于不同副本组的一主代理服务器以及至少一副代理服务器,所述装置包括:
消息同步模块,位于一节点的主代理服务器,用于接收到生产者发送的消息后,与另外至少一节点的副代理服务器进行消息同步;
第一消息发送模块,位于所述主代理服务器,用于向消费者发送消息;
第二消息发送模块,位于另外一个节点的副服务器,用于向消费者发送消息。
可选地,所述消息同步模块包括:
消息同步子模块,用于向与所述主代理服务器属于同一副本组的至少一个副代理服务器进行消息同步;其中,属于同一副本组的各个副代理服务器以及主代理服务器之间位于不同节点。
可选地,所述消息同步子模块包括:
代理服务器数量配置单元,用于配置与所述主代理服务器进行消息同步的代理服务器数量;
消息同步单元,用于按照所配置的代理服务器数量,向属于同一副本组的代理服务器同步所述生产者发送的消息。
可选地,所述装置包括:
元数据反向同步模块,位于另外一节点的副代理服务器,用于向所述主代理服务器同步当前元数据。
可选地,所述元数据反向同步模块包括:
元数据反向同步子模块,用于通过与所述主代理服务器属于同一副本组的一副代理服务器,在所述主代理服务器故障修复后,向所述主代理服务器同步当前元数据。
可选地,所述第二消息发送模块包括:
消息发送子模块,位于另外一节点的副代理服务器,用于在所述主代理服务器故障时,向消费者发送消息。
本申请实施例还公开了一种电子设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现任一项所述消息通信方法的步骤。
本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现任一项所述消息通信方法的步骤。
本申请实施例包括以下优点:
在本申请实施例中,提出了应用于消息系统的消息处理方法,主要通过消息代理服务集群的节点实现与生产者、消费者之间的消息传输,其中消息代理服务集群中的每个节点可以包括每个副本组的一个副本,且包括属于不同副本组的一主代理服务器以及至少一副代理服务器,在一节点的主代理服务器接收到生产者发送的消息后,可以与另外至少一节点的副代理服务器进行消息同步,其主代理服务器或另一个节点的副代理服务器可以向消费者发送消息。通过提出每个节点包括一主代理服务器以及至少一副代理服务器的新型消息队列高可用架构,实现单点多Broker,提高消息代理服务集群中节点的利用率,减少节点资源的浪费;且由于每个节点均包括一主代理服务器,能够保证每个节点的能力对等,以及通过不同节点间主、副代理服务器的消息同步,在保证每个节点消息一致性的前提下,能够实现节点消息传输时,特别是节点出现故障情况下的无选主过程。
附图说明
图1A至1C是相关技术中消息队列中间件的架构示意图;
图2是本申请实施例中消息队列中间件的架构示意图;
图3是本申请的一种消息通信方法实施例的步骤流程图;
图4是本申请的另一种消息通信方法实施例的步骤流程图;
图5是本申请实施例中数据同步的过程示意图;
图6是本申请实施例中一种消息通信方法的应用场景图;
图7是本申请的又一种消息通信方法实施例的步骤流程图;
图8是本申请实施例中另一种消息通信的应用场景图;
图9是本申请实施例中元数据反向同步的过程示意图;
图10是本申请实施例中消息通信系统的框架示意图;
图11是本申请的一种消息通信装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
为便于本领域技术人员进一步理解本申请提出的消息处理方法,下面对本申请下述各实施例中涉及到的术语或名词做出解释:
Topic:主题,是对一组消息的抽象分类,生产者可以通过Topic进行消息发布,且消费者可通过Topic进行消息订阅,实现消息的传输;
消息:可以指的是生产者向Topic发送并最终传送给消费者的消息和(可选)属性的组合;
Producer:消息的生产者和/或发送方,即发送消息方,其可以是单个服务器或服务器集群;
Consumer:消息的消费方,即请求消息方,其同样可以是单个服务器或服务器集群;
Broker:消息系统中的代理服务器(即消息中间件服务器),其可以对外具有消息的发送和消费接口,消息的生产者和消费者能够与其交互完成核心消息的收发逻辑;
Master/LeaderBroker:主代理服务器,承担在正常情况下对外提供服务的功能;
Slave/FollowerBroker:副代理服务器,实际上为主代理服务器的副本,其可以拥有主代理服务器上的全量消息,能够在主代理服务器下线时实现对外提供服务;
Commit Log:消息队列中间件的消息存储组件,用于保存消息队列中间件接收到的所有消息;
元数据:消息队列中间件中用于记录消费、发送状态的消息,如消费位点、定时消息重放位点等。
消息队列中间件(例如Rocket MQ、ONS、Kafka等)是分布式系统中重要的组件,其主要用于解决分布式系统之间消息传递的问题,参照图1A至1C,示出了相关技术中消息队列中间件的架构示意图,其主要是涉及到消息系统中Broker集群(即消息代理服务集群)所采用的通信架构。其中,M用于表示主代理服务器Master Broker,S用于表示副代理服务器Slave Broker。
如图1A所示,Broker集群所采用的通信架构为主备架构,其仅支持一主一备,能够支持多种消息复制模式,实现消息同步,但所采取的是冷备(备不可读)的部署方式,即副代理服务器仅用于同步主代理服务器的消息,而不能对外提供读写服务;以及在MasterBroker出现故障时需要手动进行主备切换,在大规模场景下有较大的资源浪费以及运维成本。
如图1B所示,Broker集群所采用的通信架构为基于ZK(Zoo Keeper,分布式协调内核)的主备架构,其可支持一主多备,但所采取的部署方式同样是冷备(备不可读)方式,即副代理服务器仅用于同步主代理服务器的消息,而不能对外提供读写服务;可以基于额外的Zoo Keeper集群进行协调服务,实现自动选主的功能,支持在MasterBroker出现故障时,自动将Slave切换成Master提供服务,但故障转移时间较长,大概需要10秒左右完成选主。
如图1C所示,Broker集群所采用的通信架构为基于Raft协议(指的是分布式一致性协议)的Leader-Follower架构,其可支持一主多备,且能够基于Raft协议所提供的Follower(即副代理服务器Slave Broker)重定向到Leader(即主代理服务器MasterBroker)实现自动选主,无需依赖额外的Zoo Keeper集群,但由于故障时仍需等待选主,整个故障转移时间较长,而强一致的Raft协议暂未支持动态降级策略,导致无法灵活权衡可用性和可靠性。
在以上三种消息队列中间件的架构,每个Broker都将独占消息代理服务集群中的一个节点,在副本组(指的是一组拥有相同消息的Broker,通常可由一主N备组成)处于正常工作状态时,Master Broker所在的节点承担所有的读写服务,而Slave Broker所在节点不具有读写服务,仅需从Master Broker同步消息,使得Slave Broker所在节点的资源利用率在大部分时间处于较低水平,导致一定程度的节点资源浪费。
本申请实施例的核心思想之一在于通过提出每个节点包括每个副本组的一个副本,且包括属于不同副本组的一主代理服务器以及至少一副代理服务器的新型消息队列高可用架构,使得消息代理服务集群中的任意一节点都可以拥有该集群的全量数据,实现单点多Broker,提高消息代理服务集群中节点的利用率,减少节点资源的浪费;且由于每个节点均包括一主代理服务器,能够保证每个节点的能力对等(均具有读写服务),以及通过不同节点间主、副代理服务器的消息同步,在保证每个节点消息一致性的前提下,能够实现节点消息传输时,特别是节点出现故障情况下的无选主过程。
在本申请实施例中,为了提高消息代理服务器集群中节点的利用率,此时可以对消息代理服务集群所采用的消息队列中间件的通信架构进行处理,具体可以在消息代理服务集群的每个节点中同时配置主代理服务器和副代理服务器,例如每个节点可以包括一主代理服务器以及至少一副代理服务器,实现单点多Broker,减少节点的资源浪费。
具体的,参照图2,示出了本申请实施例中消息队列中间件的架构示意图,采用该消息队列中间件架构的消息代理服务集群可以包括多个节点,例如节点1、节点2与节点3,每个节点可以包括多个Broker,对于3主6备的消息代理服务集群而言,现有的高可用架构中每个Broker都将独占一个节点,则需要9个节点才能完成部署,其只需3个节点即可完成部署,减少对节点资源的损耗。
在实际应用中,每个节点可以通过Broker Container(为Broker管理进程)实现Broker的添加或删除,以及管理进程内所有Broker的网络请求分发与资源调度,所添加的Broker可以是可提供读写服务的主代理服务器Master Broker,和仅提供读服务的副代理服务器Slave Broker,在本申请实施例中,一个Broker Container对应管理一个节点,每个节点可以包括一主代理服务器以及至少一副代理服务器,且所包括的代理服务器均不属于同一副本组,即各个副代理服务器之间,以及各个副代理服务器与主代理服务器之间所同步的消息不同。
作为一种示例,节点1包括主Broker_a、备Broker_b以及Broker_c,节点2包括主Broker_b、备Broker_a以及Broker_c,而节点3包括主Broker_c、备Broker_a以及Broker_b。
其中,副本组可以指的是一组拥有相同消息的Broker,通常可由一主N备组成,在副本组正常工作时,可以由主代理服务器提供消息的读写服务,并可以向同一副本组内的其他副代理服务器同步消息,而在主代理服务器出现故障宕机时,可以由其余副代理服务器提供读服务。
在本申请实施例中,每个节点所包括的代理服务器均不属于同一副本组,即位于位于同一节点下的各个副代理服务器之间,以及副代理服务器与主代理服务器之间所同步的消息不同,那么在每个副本组(例如一主Broker_a二备Broker_a、一主Broker_b二备Broker_b,以及一主Broker_c二备Broker_c)正常工作时,每个节点都拥有每个副本组中的一个副本,表示任意一节点均拥有该消息代理服务集群的全量消息,在此架构下,只要保证该消息代理服务集群其中一节点(例如节点1或节点2或节点3)处于正常工作状态,即可保证无消息丢失。
另外,每个节点都包含有一个主代理服务器Master Broker,即均可提供读写服务,保证每个节点的能力对等。
在实际应用中,该架构可以应用于消息中间件秒级RTO(Recovery TimeObjective,复原时间目标)架构的核心底座。其中,RTO反映的是数据中心服务恢复的及时性指标,其可以用于表示服务从中断到恢复正常所需的时间,RTO数值越小,代表容灾系统的数据恢复能力越强。
需要说明的是,消息代理服务集群中的节点可以指的是一个拥有独立计算、内存、存储、网络等资源的环境,其可以为物理机、虚拟机或容器,实现生产者与消费者之间的消息传输;且同一节点内的所有Broker处于同一进程,即Broker Container进程,该进程负责管理Broker并作为所有Broker的共享网络层(所有发往Broker,或从Broker发出的RPC(Remote Procedure Call,是一种远程过程调用,HTTP请求本身也可以看作是RPC的一种具体形式)请求均需要通过Broker Container的网络层进行处理。
参照图3,示出了本申请的一种消息通信方法实施例的步骤流程图,应用于消息系统,所述消息系统包括生产者、消息代理服务集群和消费者,消息代理服务集群包括多个节点,具体可以包括如下步骤:
步骤301,在一节点的主代理服务器接收到生产者发送的消息后,与另外至少一节点的副代理服务器进行消息同步;
在本申请实施例中,消息代理服务集群可以实现生产者与消费者之间的消息传输,具体可以通过消息代理服务集群中所包含的节点接收生产者所发送的消息,以及响应消费者所发送的消息消费请求向消费者发送消息实现。
在实现生产者与消费者之间的消息传输的过程中,首先需要对消息进行同步,以实现在分布式消息系统中的消息传输,避免由于故障导致的消息传输失败,为消息系统提供故障转移能力。
在本申请的一种实施例中,在进行消息同步的过程中,需要通过主代理服务器向同一副本组内的其他副代理服务器同步消息,而消息代理服务集群的每个节点所包括一主代理服务器以及至少一副代理服务器均不属于同一副本组,即位于同一节点下的各个副代理服务器之间,以及副代理服务器与主代理服务器之间所同步的消息不同,此时消息代理服务节点中的主代理服务器在接收到生产者发送的消息之后,可以与另外至少一节点的副代理服务器进行消息同步,保证每个节点都包含每个副本组的一个副本,使得每个节点均具有此消息代理服务集群的全量消息,保证每个节点的消息一致性。
作为一种示例,对于3主6备的消息代理服务集群而言,节点1的主Broker_a可以与节点2中的备Broker_a以及节点3中的备Broker_a进行消息同步,节点2的主Broker_b可以与节点1中的备Broker_b以及节点3中的备Broker_b进行消息同步,以及节点3的主Broker_c可以与节点1中的备Broker_c以及节点3中的备Broker_c进行消息同步。
步骤302,主代理服务器向消费者发送消息,或另外一个节点的副服务器向消费者发送消息。
在通过消息代理服务集群的每个节点对消息进行同步后,可以通过消息代理服务集群的节点向消费者发送消息,实现生产者与消费者之间的消息传输。
具体的,消息代理服务集群中的每个节点可以包括一主代理服务器以及至少一副代理服务器,在进行消息发送的过程中,可以基于节点的工作状态,通过某个节点的主代理服务器向消费者发送消息,或另外一个节点的副服务器向消费者发送消息。
在一种情况下,当某个节点的工作状态处于正常工作状态时,可以直接通过某个节点的主代理服务器向消费者发送消息;在另一种情况下,当某个节点出现故障处于宕机状态时,可以采用另外一个节点的副服务器向消费者发送消息,其中,另外一个节点的副服务器与某个节点的主代理服务器属于同一副本组,即可实现消息的无选主传输过程。
在本申请实施例中,提出了应用于消息系统的消息处理方法,主要通过消息代理服务集群的节点实现与生产者、消费者之间的消息传输,其中消息代理服务集群中的每个节点可以包括每个副本组的一个副本,且包括属于不同副本组的一主代理服务器以及至少一副代理服务器,在一节点的主代理服务器接收到生产者发送的消息后,可以与另外至少一节点的副代理服务器进行消息同步,其主代理服务器或另一个节点的副代理服务器可以向消费者发送消息。通过提出每个节点包括属于不同副本组的一主代理服务器以及至少一副代理服务器的新型消息队列高可用架构,实现单点多Broker,提高消息代理服务集群中节点的利用率,减少节点资源的浪费;且由于每个节点均包括一主代理服务器,能够保证每个节点的能力对等,以及通过不同节点间主、副代理服务器的消息同步,在保证每个节点消息一致性的前提下,能够实现节点消息传输时,特别是节点出现故障情况下的无选主过程。
参照图4,示出了本申请的另一种消息通信方法实施例的步骤流程图,其主要为消息代理服务集群中的每个节点均处于正常工作状态下对消息进行处理的情况,具体可以包括如下步骤:
步骤401,在一节点的主代理服务器接收到生产者发送的消息后,向与主代理服务器属于同一副本组的至少一个副代理服务器进行消息同步;
在本申请实施例中,消息代理服务集群的每个节点所包括一主代理服务器以及至少一副代理服务器均不属于同一副本组,即位于同一节点下的各个副代理服务器之间,以及副代理服务器与主代理服务器之间所同步的消息不同,在进行消息同步的过程中,消息代理服务节点中的主代理服务器在接收到生产者发送的消息之后,可以与另外至少一节点的副代理服务器进行消息同步,使得每个节点均具有此消息代理服务集群的全量消息,保证每个节点的消息一致性。
其中,消息一致性可以指的是副本组内可通过约定的机制实现副本组内各副本的消息一致。具体的,在一节点的主代理服务器与另外至少一节点的副代理服务器进行消息同步的过程中,可以向主代理服务器属于同一副本组的至少一个副代理服务器进行消息同步,其中,属于同一副本组(即同一副本组)的各个副代理服务器以及主代理服务器之间位于不同节点。
在本申请实施例中,属于同一副本组内的代理器间所进行的消息同步可以指的是数据同步,该数据可以包括Commit Log、topic、订阅关系、元数据等。参照图5,示出了本申请实施例中数据同步的过程示意图,各个副本组的消息同步可以通过各个节点之间的数据同步流实现。作为一种示例,当Broker_a的主代理服务器Master Broker在向副代理服务器Slave Broker进行实时数据同步时,可以通过位于节点1的主Broker_a通过数据同步流向位于节点2和节点3中的备Broker_a实时同步数据。
其中,在大多数情况下,副本组依赖此链路实现副本组内的消息一致性。
在一种优选的实施例中,副本组同时可以支持通过更改配置,来决定一致性的保证强度,以支持动态降级策略,能够在可用性和一致性中进行权衡,其中,实现消息一致性强度的配置,可以基于配置同步消息的代理服务器数量实现。
具体的,可以配置与主代理服务器进行消息同步的代理服务器数量,然后按照所配置的代理服务器数量,向属于同一副本组的代理服务器同步生产者发送的消息,基于所配置的代理服务器数量实现消息的强一致性和/或弱一致性同步。其中,一致性配置可以指的是当生产者将一条消息发送到某个主代理服务器时,需要确保同步至多少个Broker方可认为该消息发送成功,即强一致性配置与弱一致性配置可以表现在生产者接收到的消息发送成功响应时的条件。
进行消息一致性强度的配置,在第一种情况下,当配置为强一致性配置时,表示此时在消息代理服务集群中的每个副本组不允许出现消息不一致的情况,即生产者在向某个主代理服务器发送消息时,主代理服务器需要向其副本组内的所有副代理服务器进行消息同步,在确保消息被同步至副本组内的所有副代理服务器后才会向生产者中的发送端返回发送成功的响应,表示此消息已发送成功;若主代理服务器的副本组内有部分副代理服务器同步消息失败或不存在消息同步成功的副代理服务器,表示此消息发送失败,此时发送端将会自动进行重试发送,直至发送端接收到发送成功的响应或发送端达到重试发送次数阈值为止。
然而在这种强一致性配置的模式下,任意一条消息都会同时保存在副本组内所有的消息代理服务器上,可以实现很强的消息一致性,但在任一代理服务器出现故障时,将出现发送不可用的现象,例如当某个节点发生抖动导致同步失败时,此次发送请求将直接失败,降低了可用性。
作为一种示例,对于3主6备的消息代理服务集群而言,每个副本组包括1主2备,假设当前配置需要同步消息的代理服务器数量为3,即副本组内的1主2被均需要进行消息同步,当前处于强一致性配置的情况,例如每一条被发送至节点1中Broker_a Master的消息,都需要等待该消息同步至节点2和节点3中的两个Slavebroker后,才被视为该消息发送成功。
在第二种情况下,当配置为弱一致性配置时,表示此时在消息代理服务集群中的每个副本组允许出现消息不一致的情况,即生产者在向某个主代理服务器发送消息时,主代理服务器可以向其副本组内的部分副代理服务器进行消息同步,在确保该消息被同步至配置的部分副代理服务器后,可以向生产者中的发送端返回发送成功的响应,表示此消息已发送成功。
在这种情况下,每条发送至Broker_aMaster的消息,可以只需同步至一个副代理服务器,甚至0个副代理服务器即可视为发送成功,然而在这种弱一致性配置的模式下,若某个节点发生宕机,则可能导致消息丢失,不能保证副本组内消息的强一致性,但在这种弱一致性配置的模式下,即使有个别节点发生抖动导致同步失败,也可认为发送成功,具有更高的可用性。
需要说明的是,使用弱一致性配置,并不是表示只有部分副代理服务器才会收到消息同步,而指的是主代理服务器在向发送端返回发送成功的响应前仅需等待部分副代理服务器同步成功即可,此时在其副本组内剩余的其他副代理服务器的消息同步还在异步进行中。
作为一种示例,对于3主6备的消息代理服务集群而言,每个副本组包括1主2备,假设当前配置需要同步消息的代理服务器数量为3,假设当前配置需要同步消息的代理服务器数量为1,即副本组内的1主需要进行消息同步,则只要Master收到消息后就可以立刻返回发送成功的响应,无需等待消息同步完成,这种配置可用性很高(即使2个Slave均发生故障也不影响消息发送),但消息的一致性较低(发送端收到成功的响应只能确保Master收到了消息,而无法确认消息被同步到了其他的Slave,或者说,假设发生了同步失败,就可能导致某条消息只存在于Master,而不存在于某个Slave,也即发生了消息不一致)。
需要说明的是,上述的配置可随时更改,实时生效,并不限定一致性配置的时机,且可以根据实际服务场景对可用性和一致性进行权衡后调整该配置。
在一种可选的实施例中,消息强一致性的配置能够保证副本组内消息的强一致性,但可用性弱,而消息弱一致性的配置虽然不能保证副本组内消息的强一致性,但其可用性很高,那么除了上述消息强一致性模式和消息弱一致性模式的配置,此时还可以配置自动降级模式,进一步支持动态降级策略,能够灵活权衡可用性和可靠性。
所配置的自动降级模式可以指的是主代理服务器可以根据当前副本组的同步状态,以及一个可配置的同步数量阈值来计算出某条消息需要同步至多少个Broker才视为发送成功。
在实际应用中,当副本组同步状态良好时,在使用强一致性同步模式,即消息需要同步至所有Slave才视为发送成功,然而在副本组发生抖动或宕机导致同步失败时,可以自动降级至弱一致性模式,使得消息在同步至部分Slave即可视为发送成功,即开启自动降级策略可以接受当某些Broker发生抖动时,牺牲一致性来换取可用性,而同步数量阈值则用于规定可接受的一致性的损失下限,能够尽量在消息强一致性的基础上保证可用性。
需要说明的是,自动降级配置也是随时更改,实时生效,并不限定自动降级配置的时机。
作为一种示例,对于3主6备的消息代理服务集群而言,每个副本组包括1主2备,假设当前所配置的模式为强一致性配置,即副本组内的1主2被均需要进行消息同步的情况,在开启自动降级模式之后,假设同步数量阈值配置为2,则根据当前副本组的同步状态,所计算出的最终需同步Broker数量可为3(两Slave与Master均处于实时同步状态),也可以为2(当某一Slave同步进度落后于Master过多),但不可为1(为1时一般是两个Slave同步进度均落后Master过多,但因为配置了同步数量阈值为2,所以这种情况下,发送消息将直接返回失败)。
步骤402,通过主代理服务器向消费者发送消息。
在通过消息代理服务集群的每个节点对消息进行同步后,可以基于节点的工作状态向消费者发送消息,在消息代理服务集群中的每个节点均处于正常工作状态下,可以通过主代理服务器向消费者发送消息,完成生产者与消费者之间的消息传输。
具体的,如图6所示,在消息代理服务集群中的每个节点均处于正常工作状态下,可以通过节点接收生产者发送的消息,并响应消费者所发送的消息消费请求,通过节点的主代理服务器向消费者发送消息,即生产者只向每个副本组的Master发送消息,且消费者只从每个副本组的Master消费消息。
在实际应用中,同一节点内的不同Broker可通过不同的端口号进行区分,即同一节点内的不同broker可监听不同的端口号,通过结合节点IP和端口号即可决定请求发向哪一个Broker,具体的可以在发送请求时指定地址IP:Port即可决定将请求发向哪一个broker。
在具体实现中,消息代理服务集群所接收到的消息消费请求可以包括节点通信地址和代理服务端口号,此时可以根据节点通信地址确定目标节点,再根据代理服务端口号从目标节点中确定目标代理服务器,以使目标代理服务器向消费者发送目标消息。
在本申请实施例中,通过提出每个节点包括一主代理服务器以及至少一副代理服务器的新型消息队列高可用架构,实现单点多Broker,提高消息代理服务集群中节点的利用率,减少节点资源的浪费;且由于每个节点均包括属于不同副本组的一主代理服务器,能够保证每个节点的能力对等,以及通过不同节点间主、副代理服务器的消息同步,在保证每个节点消息一致性的前提下,能够实现节点消息传输时,特别是节点出现故障情况下的无选主过程。
参照图7,示出了本申请的又一种消息通信方法实施例的步骤流程图,其主要为消息代理服务集群中的某个节点出现故障宕机时对消息进行处理的情况,具体可以包括如下步骤:
步骤701,在一节点的主代理服务器接收到生产者发送的消息后,向与主代理服务器属于同一副本组的至少一个副代理服务器进行消息同步;
在本申请实施例中,消息代理服务集群的每个节点所包括一主代理服务器以及至少一副代理服务器均不属于同一副本组,即位于同一节点下的各个副代理服务器之间,以及副代理服务器与主代理服务器之间所同步的消息不同,在进行消息同步的过程中,消息代理服务节点中的主代理服务器在接收到生产者发送的消息之后,可以与另外至少一节点的副代理服务器进行消息同步,使得每个节点均具有此消息代理服务集群的全量消息,保证每个节点的消息一致性。
其中,消息一致性可以指的是副本组内可通过约定的机制实现副本组内各副本的消息一致。具体的,在一节点的主代理服务器与另外至少一节点的副代理服务器进行消息同步的过程中,可以向主代理服务器属于同一副本组的至少一个副代理服务器进行消息同步,其中,属于同一副本组(即同一副本组)的各个副代理服务器以及主代理服务器之间位于不同节点。
在实际应用中,消息同步的消息一致性配置可以基于配置同步消息的代理服务器数量实现,包括强一致性配置、弱一致性配置以及开启自动降级模式,具体可以根据实际服务场景对可用性和一致性进行权衡后调整该配置。需要说明的是,配置可随时更改,实时生效,并不限定配置的时机。
步骤702,另外一节点的副代理服务器,在主代理服务器故障时,向消费者发送消息。
在通过消息代理服务集群的每个节点对消息进行同步后,可以基于节点的工作状态向消费者发送消息,在消息代理服务集群中的某个节点的主代理服务器处于故障宕机的情况下,可以通过另外一节点的副代理服务器向消费者发送消息,完成生产者与消费者之间的消息传输。
具体的,向消费者发送消息的副代理服务器可以是与主代理服务器属于同一副本组的一副代理服务器。
具体的,如图8所示,假设节点1宕机,Producer停止向Broker_aMaster发送消息,此时Consumer自动切换原来发送至Broker_a Master的消费请求至节点2上的Broker_aSlave,由于Broker_a Slave拥有Broker_aMaster的全量消息,故在节点1宕机的情况下,依然保证了服务的可用性,且该过程无需进行选主。
在一种优选的实施例中,在出现故障宕机的某个节点被修复后,还可以对该节点的主代理服务器进行反向同步,即在另一节点上属于同一副本组的副代理服务器可以具有元数据反向同步的功能,即对元数据进行反向同步,其中,所同步的元数据可以指的消息在服务器中的各种用于记录消费、发送状态的状态性数据,比如消费位点、消费进度、定时消息重放位点等,保证每个节点的消息一致性。
其中,消息一致性可以指的是副本组内可通过约定的机制实现副本组内各副本的消息一致。具体的,另外一节点的副代理服务器,可以在主代理服务器故障修复后,向主代理服务器进行元数据反向同步。
参照图9,示出了本申请实施例中元数据反向同步的过程示意图,各个副本组的元数据方向同步同样通过各个节点之间的元数据反向同步流实现,元数据反向同步链路一般出现于某一节点宕机后重新上线的数据同步。作为一种示例,假设节点1出现故障宕机,消费端可以切换至节点2中的Broker_a Slave消费,此时消费所产生的元数据,如消费进度等,可以反向同步至节点1中的Broker_a Master,使得当消费流量回切至Broker_aMaster时可按照当前消费进度进行消费,即能够使得消费者在对重新上线的节点1中的Broker_aMaster进行消费时,防止重新上线的Broker_aMaster按照原来故障前所记录的消费进度进行消费,避免重复消费。
在具体实现中,在新的消息队列中间件的架构中,并无存在备代理服务器SlaveBroker直接向主代理服务器MasterBroker发送消息的链路,架构中所实现的反向元数据同步链路可以如图9所示。
其中,元数据反向同步可以通过将元数据包装成消息的形式反向同步实现。
假设节点1出现故障宕机,消费端可以切换至节点2中的Broker_a Slave消费,此时节点2中的Broker_a Slave对故障恢复后的节点1中Broker_a Master进行元数据反向同步的过程可以如下:
(1)首先节点2中的Broker_a Slave可以将元数据包装成一条消息写入Broker_bMaster;(2)然后节点2中的Broker_b Master通过上述a中的消息同步链路可以将该消息同步至节点1和节点3的Broker_b Slave;(3)节点1中的Broker_a Master和节点3中的Broker_a Slave可以分别从各自节点的Broker_b Slave将该消息读出并解析出需同步的元数据,更新至本地,完成元数据的反向同步。
在实际应用中,元数据的反向同步可以通过把元数据包装成一条消息写入同节点的Broker_b Master来完成,对于Broker_b Master而言,判定此时存在需要反向同步的元数据的方式以及确定所需同步的元数据的方式可以通过消息的Topic实现。
具体的,所需反向同步的元数据,即对元数据包装成的消息可以具有一个特殊的Topic,该消息可以通过数据同步链路同步至节点1的Broker_b Slave和节点3的Broker_bSlave中,而Broker_a Master和Broker_a Slave将会监听这个特殊Topic在同节点其他Broker的消息数量,当消息数量发生变化时,可以将新消息消费出来并解析成元数据,然后更新到自身消息中,实现元数据的反向同步。
在本申请实施例中,通过提出每个节点包括一主代理服务器以及至少一副代理服务器的新型消息队列高可用架构,实现单点多Broker,提高消息代理服务集群中节点的利用率,减少节点资源的浪费;且由于每个节点均包括一主代理服务器,能够保证每个节点的能力对等,以及通过不同节点间主、副代理服务器的消息同步,在保证每个节点消息一致性的前提下,能够实现节点消息传输时,特别是节点出现故障情况下的无选主过程。
在本申请实施例中,消息系统可以采用分布式系统,在分布式消息系统中,可以存在多个生产消息以及消费消息的服务器,多个服务器可以构成服务器集群,即生产者可以指的是生产者集群,消费者可以指的是消费者集群。
参照图10,示出了本申请实施例中消息通信系统的框架示意图,消息系统可以包括生产者集群1001(Producer集群)、消息代理服务集群1002(Broker集群)、域名服务器集群1003(Name Server集群)和消费者集群1004(Consumer集群),其中,每个消息代理服务集群可以包括多个节点,每个节点包括每个副本组的一个副本,且包括属于不同副本组的一主代理服务器以及至少一副代理服务器。
在该消息系统中,Producer集群1001可以用于生产消息和发送消息,其主要是通过Topic向消费者发送最终传送给消费者的数据;Broker集群1002作为消息系统中的代理服务器,能够对外提供消息的发送接口和消费接口,即作为Producer集群和Consumer集群的中间媒介;Name Server集群1003主要是用于对源数据的管理,包括对Topic和路由信息的管理,其可以用于提供Topic-Broker的关系数据,且每个消息代理服务器Broker在启动时需要在Name Server进行注册,Producer集群1001在发送消息前可以根据消息所对应的Topic到Name Server1003获取相应消息代理服务器Broker的路由信息,Consumer集群1004同样也能够定时获取Topic的路由信息,以便通过Topic-Broker的关系数据,实现消息代理服务器Broker的消息转发;Consumer集群1004用于获取Producer集群生产的消息,具体可以通过订阅Topic实现。
具体的,消息系统的消息处理过程,可以通过消息代理服务器Broker的节点接收生产者集群发送的消息,同一节点内的各个副代理服务器以及主代理服务器之间同步的消息不同,即各个副代理服务与主代理服务器之间,以及各个副代理服务器之间同步的消息不同,此时节点可以响应消费者集群发送的消息消费请求,通过消息代理服务节点的目标代理服务器向消费者集群发送目标消息。
在实际应用中,在一节点的主代理服务器接收到生产者集群发送的消息后,可以与另外至少一节点的副代理服务器进行消息同步;主代理服务器向消费者集群发送消息,或另外一个节点的副服务器向消费者集群发送消息。
在本申请实施例中,通过提出每个节点包括一主代理服务器以及至少一副代理服务器的新型消息队列高可用架构,实现单点多Broker,提高消息代理服务集群中节点的利用率,减少节点资源的浪费;且由于每个节点均包括一主代理服务器,能够保证每个节点的能力对等,以及通过不同节点间主、副代理服务器的消息同步,在保证每个节点消息一致性的前提下,能够实现节点消息传输时,特别是节点出现故障情况下的无选主过程。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图11,示出了本申请的一种消息通信装置实施例的结构框图,所述消息系统包括生产者、消息代理服务集群和消费者,所述消息代理服务集群包括多个节点,每个节点包括每个副本组的一个副本,且包括属于不同副本组的一主代理服务器以及至少一副代理服务器,具体可以包括如下模块:
消息同步模块1101,位于一节点的主代理服务器,用于接收到生产者发送的消息后,与另外至少一节点的副代理服务器进行消息同步;
第一消息发送模块1102,位于所述主代理服务器,用于向消费者发送消息;
第二消息发送模块1103,位于另外一个节点的副服务器,用于向消费者发送消息。
在本申请的一种实施例中,消息同步模块1101可以包括如下子模块:
消息同步子模块,用于向与所述主代理服务器属于同一副本组的至少一个副代理服务器进行消息同步;其中,属于同一副本组的各个副代理服务器以及主代理服务器之间位于不同节点。
在本申请的一种实施例中,消息同步子模块可以包括如下单元:
代理服务器数量配置单元,用于配置与所述主代理服务器进行消息同步的代理服务器数量;
消息同步单元,用于按照所配置的代理服务器数量,向属于同一副本组的代理服务器同步所述生产者发送的消息。
在本申请的一种实施例中,所述装置还可以包括如下模块:
元数据反向同步模块,位于另外一节点的副代理服务器,用于向所述主代理服务器同步当前元数据。
在本申请的一种实施例中,元数据反向同步模块可以包括如下子模块:
元数据反向同步子模块,用于通过与所述主代理服务器属于同一副本组的一副代理服务器,在所述主代理服务器故障修复后,向所述主代理服务器同步当前元数据。
在本申请的一种实施例中,第二消息发送模块可以包括如下子模块:
消息发送子模块,位于另外一节点的副代理服务器,用于在所述主代理服务器故障时,向消费者发送消息。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还提供了一种电子设备,包括:
包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述消息通信方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述消息通信方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程消息处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程消息处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程消息处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程消息处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种消息通信方法和一种消息通信装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种消息通信方法,其特征在于,应用于消息系统,所述消息系统包括生产者、消息代理服务集群和消费者,所述消息代理服务集群包括多个节点,每个节点包括每个副本组的一个副本,且包括属于不同副本组的一主代理服务器以及至少一副代理服务器,其中所述每个节点所包括的副本用于表示任一节点具有所述消息代理服务集群的全量消息,所述方法包括:
在一节点的主代理服务器接收到生产者发送的消息后,与另外至少一节点的副代理服务器进行消息同步;所述另外至少一节点的副代理服务器与所述一节点的主代理服务器属于同一副本组;
所述主代理服务器向消费者发送消息,或另外一个节点的副服务器向消费者发送消息。
2.根据权利要求1所述的方法,其特征在于,所述与另外至少一节点的副代理服务器进行消息同步,包括:
向与所述主代理服务器属于同一副本组的至少一个副代理服务器进行消息同步;其中,属于同一副本组的各个副代理服务器以及主代理服务器之间位于不同节点。
3.根据权利要求2所述的方法,其特征在于,所述向与所述主代理服务器属于同一副本组的至少一个副代理服务器同步所述生产者发送的消息,包括:
配置与所述主代理服务器进行消息同步的代理服务器数量;
按照所配置的代理服务器数量,向属于同一副本组的代理服务器同步所述生产者发送的消息。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
另外一节点的副代理服务器向所述主代理服务器同步当前元数据。
5.根据权利要求4所述的方法,其特征在于,所述另外一节点的副代理服务器向所述主代理服务器同步当前元数据,包括:
通过与所述主代理服务器属于同一副本组的一副代理服务器,在所述主代理服务器故障修复后,向所述主代理服务器同步当前元数据。
6.根据权利要求1所述的方法,其特征在于,所述另外一个节点的副服务器向消费者发送消息,包括:
另外一节点的副代理服务器,在所述主代理服务器故障时,向消费者发送消息。
7.根据权利要求6所述的方法,其特征在于,所述另外一节点的副代理服务器向消费者发送消息,包括:
通过与所述主代理服务器属于同一副本组的一副代理服务器,向所述消费者发送消息。
8.一种消息通信装置,其特征在于,应用于消息系统,所述消息系统包括生产者、消息代理服务集群和消费者,所述消息代理服务集群包括多个节点,每个节点包括每个副本组的一个副本,且包括属于不同副本组的一主代理服务器以及至少一副代理服务器,其中所述每个节点所包括的副本用于表示任一节点具有所述消息代理服务集群的全量消息,所述装置包括:
消息同步模块,位于一节点的主代理服务器,用于接收到生产者发送的消息后,与另外至少一节点的副代理服务器进行消息同步;所述另外至少一节点的副代理服务器与所述一节点的主代理服务器属于同一副本组;
第一消息发送模块,位于所述主代理服务器,用于向消费者发送消息;
第二消息发送模块,位于另外一个节点的副服务器,用于向消费者发送消息。
9.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-7中任一项所述消息通信方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述消息通信方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110781013.7A CN113641511B (zh) | 2021-07-09 | 2021-07-09 | 一种消息通信方法和装置 |
PCT/CN2022/103745 WO2023280127A1 (zh) | 2021-07-09 | 2022-07-04 | 一种消息通信方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110781013.7A CN113641511B (zh) | 2021-07-09 | 2021-07-09 | 一种消息通信方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113641511A CN113641511A (zh) | 2021-11-12 |
CN113641511B true CN113641511B (zh) | 2024-06-04 |
Family
ID=78417043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110781013.7A Active CN113641511B (zh) | 2021-07-09 | 2021-07-09 | 一种消息通信方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113641511B (zh) |
WO (1) | WO2023280127A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641511B (zh) * | 2021-07-09 | 2024-06-04 | 阿里云计算有限公司 | 一种消息通信方法和装置 |
CN114422591B (zh) * | 2021-12-22 | 2023-01-10 | 广州市玄武无线科技股份有限公司 | 点对点通信方法、数据通信系统、计算机设备、存储介质 |
CN114338343B (zh) * | 2021-12-30 | 2023-12-12 | 海能达通信股份有限公司 | 通信方法及集群服务系统 |
CN114598593B (zh) * | 2022-02-16 | 2023-08-29 | 阿里巴巴(中国)有限公司 | 消息处理方法、系统、计算设备及计算机存储介质 |
CN114745393B (zh) * | 2022-03-31 | 2024-06-21 | 阿里云计算有限公司 | 会话同步系统及其方法、云计算中心和云计算设备 |
CN115086153B (zh) * | 2022-05-20 | 2024-05-28 | 阿里巴巴(中国)有限公司 | 消息处理系统、消息处理方法、设备和存储介质 |
CN115334155B (zh) * | 2022-08-12 | 2024-04-19 | 中国建设银行股份有限公司 | 一种消息队列代理方法和装置 |
CN115914246A (zh) * | 2022-10-08 | 2023-04-04 | 广州市玄武无线科技股份有限公司 | 离线消息的点对点通信方法、系统、装置及存储介质 |
CN116893914A (zh) * | 2023-09-11 | 2023-10-17 | 中移(苏州)软件技术有限公司 | 消息处理的方法、消息队列系统、客户端和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108306941A (zh) * | 2018-01-05 | 2018-07-20 | 上海你我贷互联网金融信息服务有限公司 | 一种分布式消息系统 |
US10362131B1 (en) * | 2008-06-18 | 2019-07-23 | Amazon Technologies, Inc. | Fault tolerant message delivery |
CN110601903A (zh) * | 2019-09-25 | 2019-12-20 | 广州荔支网络技术有限公司 | 一种基于消息队列中间件的数据处理方法及装置 |
CN112527520A (zh) * | 2020-12-01 | 2021-03-19 | 中国建设银行股份有限公司 | 一种部署消息中间件的方法和装置 |
CN112769924A (zh) * | 2020-12-31 | 2021-05-07 | 平安科技(深圳)有限公司 | RocketMQ的分布式部署方法、装置、设备及介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5941999A (en) * | 1997-03-31 | 1999-08-24 | Sun Microsystems | Method and system for achieving high availability in networked computer systems |
CN107465735B (zh) * | 2017-07-31 | 2020-08-14 | 杭州多麦电子商务股份有限公司 | 分布式消息系统 |
CN111818112B (zh) * | 2019-04-11 | 2022-10-04 | 中国移动通信集团四川有限公司 | 一种基于Kafka系统的发送消息的方法和装置 |
CN113641511B (zh) * | 2021-07-09 | 2024-06-04 | 阿里云计算有限公司 | 一种消息通信方法和装置 |
-
2021
- 2021-07-09 CN CN202110781013.7A patent/CN113641511B/zh active Active
-
2022
- 2022-07-04 WO PCT/CN2022/103745 patent/WO2023280127A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10362131B1 (en) * | 2008-06-18 | 2019-07-23 | Amazon Technologies, Inc. | Fault tolerant message delivery |
CN108306941A (zh) * | 2018-01-05 | 2018-07-20 | 上海你我贷互联网金融信息服务有限公司 | 一种分布式消息系统 |
CN110601903A (zh) * | 2019-09-25 | 2019-12-20 | 广州荔支网络技术有限公司 | 一种基于消息队列中间件的数据处理方法及装置 |
CN112527520A (zh) * | 2020-12-01 | 2021-03-19 | 中国建设银行股份有限公司 | 一种部署消息中间件的方法和装置 |
CN112769924A (zh) * | 2020-12-31 | 2021-05-07 | 平安科技(深圳)有限公司 | RocketMQ的分布式部署方法、装置、设备及介质 |
Non-Patent Citations (2)
Title |
---|
Creating Complex Applications via Self-Adapting Autonomous Agents in an Intelligent System Framework;Tammy R. Fuller;IEEE;20151029;全文 * |
基于RocketMQ的MQTT消息推送服务器分布式部署方案;马跃;颜睿;孙建伟;;计算机系统应用;20180615(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
WO2023280127A1 (zh) | 2023-01-12 |
CN113641511A (zh) | 2021-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113641511B (zh) | 一种消息通信方法和装置 | |
KR100575497B1 (ko) | 내고장성 컴퓨터 시스템 | |
US9274906B2 (en) | Implementing failover processes between storage stamps | |
US20120303912A1 (en) | Storage account migration between storage stamps | |
CN102088490B (zh) | 数据存储方法、设备和系统 | |
CN110581782B (zh) | 一种容灾数据的处理方法、装置及系统 | |
US9021038B2 (en) | Message delivery in messaging networks | |
KR20110044858A (ko) | 데이터 센터들에 걸쳐 데이터 서버들내 데이터 무결정의 유지 | |
CN105493474A (zh) | 用于支持用于同步分布式数据网格中的数据的分区级别日志的系统及方法 | |
CN108964986B (zh) | 协同办公系统应用级双活灾备系统 | |
CN111865632B (zh) | 分布式数据存储集群的切换方法及切换指令发送方法和装置 | |
EP4213038A1 (en) | Data processing method and apparatus based on distributed storage, device, and medium | |
CN110099084B (zh) | 一种保证存储服务可用性的方法、系统及计算机可读介质 | |
CN111158949A (zh) | 容灾架构的配置方法、切换方法及装置、设备和存储介质 | |
CN110807039A (zh) | 一种云计算环境下数据一致性维护系统及方法 | |
CN101552799A (zh) | 媒体节点容错方法和装置 | |
CN113779143B (zh) | 双活数据中心和业务系统 | |
CN114900449A (zh) | 一种资源信息管理方法、系统及装置 | |
CN111400065B (zh) | 一种分离全局zookeeper的pulsar消息异地多活方法及系统 | |
WO2015196692A1 (zh) | 一种云计算系统以及云计算系统的处理方法和装置 | |
CN114625566A (zh) | 数据容灾方法、装置、电子设备及存储介质 | |
CN110351122B (zh) | 容灾方法、装置、系统与电子设备 | |
CN111708843A (zh) | 一种基于MGR的跨数据中心MySQL多活实现方法 | |
EP3316114A1 (en) | Data reading and writing method and device | |
US10348817B2 (en) | Optimizing latency and/or bandwidth of large client requests for replicated state machines |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40069107 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |