CN107493308B - 一种发送消息的方法和装置及分布式设备集群系统 - Google Patents

一种发送消息的方法和装置及分布式设备集群系统 Download PDF

Info

Publication number
CN107493308B
CN107493308B CN201610412091.9A CN201610412091A CN107493308B CN 107493308 B CN107493308 B CN 107493308B CN 201610412091 A CN201610412091 A CN 201610412091A CN 107493308 B CN107493308 B CN 107493308B
Authority
CN
China
Prior art keywords
message
receiver
sent
original sender
address
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
Application number
CN201610412091.9A
Other languages
English (en)
Other versions
CN107493308A (zh
Inventor
钱超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610412091.9A priority Critical patent/CN107493308B/zh
Publication of CN107493308A publication Critical patent/CN107493308A/zh
Application granted granted Critical
Publication of CN107493308B publication Critical patent/CN107493308B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/54Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • H04L51/043Real-time or near real-time messaging, e.g. instant messaging [IM] using or handling presence information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/48Message addressing, e.g. address format or anonymous messages, aliases
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • H04L67/145Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session

Abstract

本申请提供一种发送消息的方法,特征在于,包括以下步骤:获取待发送消息;获取可用接收者列表;按照保持接收者与原始发送者关系的一致性的算法,从所述可用接收者列表中确定所述待发送消息的接收者地址;向所述待发送消息的接收者地址发送所述待发送消息。能够尽可能地避免由于随机分发消息导致的错误判断处理的问题。同时能够起到增加扩展或调整分布式接收消息的设备集群的灵活性的作用。达到提高系统和业务的可用性的效果。

Description

一种发送消息的方法和装置及分布式设备集群系统
技术领域
本申请涉及一种发送消息的方法和装置。还涉及两种分布式设备集群系统。
背景技术
对于分布式计算机系统集群,为了管理分布式系统上运行的各个业务,需要管理集群内各个业务节点以及节点上运行的业务的状态信息。通常情况下,分布式系统内各个节点通过向状态管理服务器周期性性地发送心跳消息来报告本节点以及节点上运行的业务的状态。状态管理服务器通过对各个节点发送的心跳消息的内容来判断节点上运行的业务的状态,或通过对节点发送心跳消息的情况进行分析判断节点的状态。
随着分布式系统节点数量的增加,单一的状态管理服务器接收处理众多节点高频率的心跳消息的压力越来越大,当节点数量达到一定的规模或心跳消息的频率达到一定的水平时,单一的状态管理服务器将无法承载这一压力,有可能导致延迟,滞后,拥塞等故障甚至导致状态管理服务器失效。进而系统无法获得消息,也就无法获得消息所携带的各个节点及各个业务的状态信息。
即便在单一服务器前采用队列设备将心跳消息排队处理,巨大的高频率的心跳消息同样会对队列设备造成难以负担的压力,同样可能导致队列设备处理的延迟,堵塞等故障甚至失效,队列设备故障或失效会导致状态管理服务器得不到各个节点及各个业务的实时状态信息,系统也就无法获得消息,也就无法获得消息所携带各个节点及各个业务的状态信息。
无论是状态管理服务器故障或失效还是队列设备故障或失效,都会导致系统无法获得消息的内容,也就无法根据节点或业务的实际状态部署,更新或运行相应的业务,导致系统的可用性降低。
可见单一的设备无法应对大容量分布式网络的如心跳消息这样的高频率消息的接收处理,需要多台甚至是分布式设备集群才有可能应对数量庞大的如心跳消息这样的高频率消息的接收处理。
现有的向多台设备或分布式设备集群发送消息的方式通常是将消息随机,均匀地分发给不同的接收设备或分布式集群中的各个设备,由于消息被随机地分发给不同的接收设备,一定会有同一原始发送者的消息被分发给了不同的接收者的情况存在。但对于如心跳消息这样的时间顺序敏感消息,现有的随机分发消息的方法会导致接收消息的接收者因为没有接收到被分发给其他接收者的消息而做出错误的判断和处理的问题。
发明内容
本申请提供一种发送消息的方法。本申请同时提供一种发送消息的装置。本申请还提供一种分布式设备集群系统。
本申请提供的一种发送消息的方法,包括以下步骤:
获取待发送消息;
获取可用接收者列表;
按照保持接收者与原始发送者关系的一致性的算法,从所述可用接收者列表中确定所述待发送消息的接收者地址;
向所述待发送消息的接收者地址发送所述待发送消息。
优选地,所述按照保持接收者与原始发送者关系的一致性的算法,从所述可用接收者列表中确定所述待发送消息的本次接收者地址包括:
利用所述可用接收者列表中的可用接收者的标识与所述待发送消息的原始发送者的标识,采用一致性哈希算法,确定所述待发送消息的接收者地址。
优选地,所述消息包括有序消息。
优选地,所述接收者的标识包括接收者的名称或地址。
优选地,所述原始发送者的标识包括原始发送者的名称或地址。
优选地,所述获取可用接收者列表包括:
从数据库获取可用接收者列表。
优选地,所述获取可用接收者列表包括:
从本地获取所述可用接收者列表。
优选地,所述从本地获取所述可用接收者列表的步骤前还包括以下获取并存储可用接收者列表的步骤:
以固定的时间间隔,从数据库获取所述可用接收者列表;
将所述可用接收者列表存储到本地。
优选地,所述按照保持接收者与原始发送者关系的一致性的算法,从所述可用接收者列表中确定所述待发送消息的接收者地址的步骤后还包括以下发送告别消息的步骤:
根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息。
优选地,所述根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息包括:
当本地存储的所述待发送消息的原始发送者所对应的接收者不同于所述待发送消息的接收者时,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息。
优选地,所述根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息包括:
当本地存储的所述待发送消息的原始发送者所对应的接收者不同于所述待发送消息的接收者,并且所述可用接收者列表中包含本地存储的所述待发送消息的原始发送者所对应的接收者时,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息。
优选地,所述向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息的步骤后还包括以下步骤:
根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,更新本地存储的所述待发送消息的原始发送者所对应的接收者。
优选地,所述根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,更新本地存储的所述待发送消息的原始发送者所对应的接收者包括:
当本地存储的所述待发送消息的原始发送者所对应的接收者不同于所述待发送消息的接收者时,用所述待发送消息的接收者更新本地存储的所述待发送消息的原始发送者所对应的接收者。
优选地,用于分布式集群系统中各个心跳消息产生节点发送心跳消息。
优选地,用于分布式状态管理服务器集群系统中的状态管理服务器接收到心跳消息后向其他相应的状态管理服务器转发所述心跳消息。
优选地,用于分布式集群系统中的心跳消息转发节点转发所述心跳消息。
本申请提供的一种发送消息的装置,包括:
消息获取单元,用于获取待发送消息;
可用接收者获取单元,用于获取可用接收者列表;
接收者地址确定单元,用于按照保持接收者与原始发送者关系的一致性的算法,从所述可用接收者列表中确定所述待发送消息的接收者地址;
发送单元,用于向所述待发送消息的接收者地址发送所述待发送消息。
优选地,所述接收者地址确定单元,具体用于利用所述可用接收者列表中的可用接收者的标识与所述待发送消息的原始发送者的标识,采用一致性哈希算法,确定所述待发送消息的接收者地址。
优选地,所述可用接收者获取单元具体用于从数据库获取可用接收者列表。
优选地,所述可用接收者获取单元具体用于从本地获取所述可用接收者列表。
优选地,还包括:
接收者列表周期性获取子单元,用于以固定的时间间隔,从数据库获取所述可用接收者列表;
接收者列表存储子单元,用于将所述可用接收者列表存储到本地。
优选地,还包括:
告别消息发送子单元,用于根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息。
优选地,所述告别消息发送子单元,具体用于当本地存储的所述待发送消息的原始发送者所对应的接收者不同于所述待发送消息的接收者时,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息。
优选地,所述告别消息发送子单元,具体用于当本地存储的所述待发送消息的原始发送者所对应的接收者不同于所述待发送消息的接收者,并且所述可用接收者列表中包含本地存储的所述待发送消息的原始发送者所对应的接收者时,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息。
优选地,还包括:
本地更新子单元,用于根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,更新本地存储的所述待发送消息的原始发送者所对应的接收者。
优选地,所述本地更新子单元,具体用于当本地存储的所述待发送消息的原始发送者所对应的接收者不同于所述待发送消息的接收者时,用所述待发送消息的接收者更新本地存储的所述待发送消息的原始发送者所对应的接收者。
本申请提供的一种分布式设备集群系统,包括多于一个的心跳消息产生节点和多于一个的状态管理节点,所述各个心跳消息产生节点与所述各个状态管理节点之间通过网络连接,所述心跳消息产生节点产生并发送心跳消息给相应的状态管理节点,所述状态管理节点对相应的心跳消息进行分析处理,特征在于,
各个心跳消息产生节点上部署有本申请提供的发送消息的装置,用于向相应的状态管理节点发送其所产生的心跳消息;
或者所述各个状态管理节点相互之间通过网络相互连接并且所述各个状态管理节点上部署有本申请提供的发送消息的装置,用于将其所收到的所述心跳消息产生节点发送来的心跳消息转发给相应状态管理节点。
本申请提供的另一种分布式设备集群系统,包括多于一个的心跳消息产生节点,心跳消息转发节点和多于一个的状态管理节点,所述心跳消息产生节点,所述心跳消息转发节点和所述状态管理节点相互之间通过网络连接,所述心跳消息产生节点产生并发送心跳消息给所述心跳消息转发节点,所述心跳消息转发节点接收并转发所述心跳消息给相应的所述状态管理节点,所述状态管理节点对相应的心跳消息进行分析处理,特征在于:
各个心跳消息产生节点上部署有本申请提供的发送消息的装置,用于通过所述心跳消息转发节点向相应的状态管理节点发送其所产生的心跳消息;
或者所述心跳消息转发节点部署有本申请提供的发送消息的装置,用于将所述心跳消息产生节点发送来的心跳消息转发给相应的状态管理节点;
再或者所述各个状态管理节点相互之间通过网络相互连接并且所述各个状态管理节点上部署有本申请提供的发送消息的装置,用于将其所收到的所述心跳消息产生节点发送来的心跳消息转发给相应状态管理节点。
与现有技术相比,本申请提供的发送消息的方法具有以下优点:
本申请提供的发送消息的方法,能够在保持接收者与原始发送者关系的一致性的情况下,确定所述待发送消息所对应的本次接收者地址。
当所述待发送消息的原始发送者所对应的接收者有效时,保持将消息发送给同一接收者,而当所述待发送消息的原始发送者所对应的接收者无效时,仅为其所对应的原始发送者重新确定新的接收者地址。不会影响其他原始发送者与接收者的对应关系。当消息的原始发送者所对应的接收者恢复接收消息后,能够恢复对其所对应的原始发送者的消息的接收。
与现有技术相比,在采用分布式设备集群接收消息的情况下,消息始终可以被正确地接收,能够尽可能地避免由于随机分发消息导致的错误判断处理的问题。同时能够起到增加扩展或调整分布式接收消息的设备集群的灵活性的作用。达到提高系统和业务的可用性的效果。
本申请提供的分布式设备集群系统,能够尽量确保状态管理节点能够接收分布式设备集群中的节点设备的心跳消息而不会导致错误的判断处理,起到便于调整接收心跳消息的设备的数量作用。达到提高系统和业务的可用性的效果。
附图说明
图1为本申请第一实施例一种发送消息的方法的流程示意图;
图2为本申请第二实施例一种发送消息的装置的结构框图;
图3为本申请第三实施例一种分布式设备集群系统的结构示意图;
图4为本申请第四实施例一种分布式设备集群系统的结构示意图;
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请第一实施例发送消息的方法,其流程示意图如图1所示,该实施例包括以下步骤:
步骤S101,获取待发送消息。
现有计算机网络中各个设备通过通信网络相互连接在一起,网络内设备通过发送和接收各种消息,与其他设备交换传递信息。
所述各种消息,按照其时间特性可以分为无序消息与有序消息。
所述无序消息是指与时序不相关,不敏感的消息,消息的最终接收者仅仅需要根据消息内所携带的内容信息进行相应的处理而无需考虑消息接收到的时间和顺序,例如告警消息即为无序消息,当产生告警的条件满足时形成告警消息,告警消息的最终接收者仅仅需要分析处理告警消息中所携带的告警信息,而无需对所接收到的告警消息的时间和顺序进行分析。
所述有序消息是指和时序相关,时序敏感的消息,消息的最终接收者在接收到所述消息时,不仅仅需要分析消息内容所携带的信息,还要分析所接收到的消息与同一原始发送者前一次发送的同一类型的消息的时间上的关系,并根据所述时间上的关系进行相应的处理。例如,网络中的心跳消息即为典型的有序消息。
对于机算计网络中的计算机设备,网络系统的管理者需要实时地知道各个设备以及设备上业务应用的状态情况,包括设备是否在运行中,业务应用是否在运行中等。为了方便的收集这些信息,网络中会设置状态管理服务器,网络内各个设备周期性地定时向状态管理服务器发送消息,消息中携带有各个设备及其上运行的业务应用的状态信息,这种携带设备及其上业务应用的状态信息的周期性定时消息即为心跳消息。
通常情况下,状态管理服务器作为心跳消息的最终接收者首先要对接收到的心跳消息的原始发送者上一次发送的心跳消息的时间与本次接收到的心跳消息的时间关系进行分析,并进行相应的处理:
对于第一次接收到某一节点设备的心跳消息,状态管理服务器会标记该节点设备为新上线的节点,该节点及其所发送的心跳消息所携带的其上的业务应用也被标记为正常运行状态,并记下接收到消息的时间。
对于此前曾经发送过心跳消息的节点设备的心跳消息,且本次接收到的心跳消息与前一次接收到该节点设备的心跳消息的时间间隔在设定的时间间隔范围内的,状态管理服务器认为所述节点设备及其所携带的业务应用状态为正常运行状态,记录下本次接收到心跳消息的时间,以备下一次接收到该节点设备的心跳消息时使用。
对于此前曾经发送过心跳消息的节点设备的心跳消息,且本次接收到的心跳消息与前一次接收到的时间间隔在设定的时间间隔范围内的,所述节点设备前一次携带了而本次没有携带的业务应用,认为所述业务应用已经退出服务,标记其状态为非运行状态。根据系统设置的不同,也可以设置心跳消息中直接携带业务应用的运行状态如正常运行或非运行状态,这样就状态管理服务器无需做进一步的判断可以直接用其更新相应的数据库。
对于在设定的时间间隔内没有收到节点设备的心跳消息的情况,认为所述节点设备已经退出了服务,标记其状态为非运行状态。此前其上运行的业务应用必然也已经推出服务,状态管理服务器会标注其状态为非运行状态。
本申请优选地用于发送有序消息。本实施例以心跳消息为例进行相应的说明。
对于消息的发送来说,通常包括下述几种获取待消息的方式:
一、网络内设备上的相应应用程序将需要交换或发送的信息组织在一起,形成待发送消息,可以从所述应用程序获取到所述待发送消息,为所述待发送消息增加相应的路由信息,如目的地地址等,将所述待发送消息发往所述的目的地地址。
二、网络内设备接收其他设备发送来的消息,将接收到的消息作为待发送消息,对所述待发送消息做必要的分析处理后,将其发往相应的目的地地址。这种情况既包括转发设备接收再转发消息,又包括了自身为所述消息的接收者,但由于分工不同需要将接收到消息转发给其他消息接收者的情况。
以心跳消息为例,作为心跳消息的产生者,当节点设备的相应的应用程序收集了该心跳消息产生节点的运行状态和其上业务应用的运行状态信息后,形成心跳消息,心跳消息包含了心跳消息产生节点的状态以及其上运行的业务应用的运行状态。心跳消息产生节点产生心跳消息后作为心跳消息的原始发送者向相应的状态管理服务器发送其所产生的心跳消息,从产生心跳消息的节点设备(即心跳消息的原始发送者)上相应的应用程序能够获得待发送心跳消息。如,所述心跳消息包括以下表1所示的内容:
原始发送者/节点ID 业务应用ID 业务应用ID 业务应用ID
192.168.0.10 1 2 3
表1
其中,心跳消息的原始发送者(心跳消息的产生节点设备)的标识为其IP地址:192.168.0.10,该心跳消息的原始发送者所携带的业务应用信息为业务应用标识为1,2和3的业务应用,表明该心跳消息的原始发送者处于正常运行状态,其上运行的业务应用1,业务应用2和业务应用3处于正常运行状态。
除了心跳消息的产生者,在心跳消息的转发设备上,也能够获得心跳消息。对于大型的分布式集群,单独的一台状态管理服务器不足以担负管理分布式系统内所有节点状态的任务时,可以采用分布式集群管理节点以及业务应用的状态,多个状态管理服务器组成分布式状态管理服务器集群,通常情况下,为了负载均衡,计算机网络内,特别是大型分布式集群网络内的节点设备向分布式状态管理服务器集群发送的心跳消息可由负载均衡设备转发到不同的状态管理服务器,以平衡网络以及各个状态管理服务器的负荷。在所述转发心跳消息的负载均衡设备上,也能够获得心跳消息,所述获得的心跳消息,对于所述转发心跳消息的负载均衡设备来说即为待发送消息。
类似的,当采用负载均衡设备向分布式状态管理服务器集群转发心跳消息时,分布式状态管理服务器集群的任何一台状态管理服务器都能够从负载均衡设备端获得不同的心跳消息的原始发送者发送的心跳消息。但由于对于心跳消息这样的有序消息,最终接收者需要分析原始发送者前一次发送的心跳消息的情况,所以需要将心跳消息的最终接收者与原始发送者相对固定下来。即尽量使得同一原始发送者在一定时间内发送的心跳消息能够被同一个最终接收者所接收。这就要求作为接收者的状态管理服务器不仅能够接收心跳消息,还能够根据需要,将心跳消息转发给其他相应的状态管理服务器。也即其接收的心跳消息也可以认为是其待发送心跳消息。
可见本申请提供的发送消息的方法,不仅能够用于分布式集群系统中各个产生心跳消息的节点向状态管理服务器发送心跳消息,还能够用于分布式状态管理服务器集群系统中状态管理服务器接收到心跳消息后向其他状态管理服务器转发心跳消息,也能够用于消息转发设备转发消息。
步骤S102,获取可用接收者列表。
为了将消息发送给相应的接收者,必须确定本次发送所对应的接收者的地址。本实施例利用可用接收者列表,按照保持接收者与原始发送者关系的一致性的算法,确定本次的接收者。所以需要获取可用接收者的列表。可用接收者列表中的接收者被认为是当前运行状态正常,能够接收消息的接收者。已知已经退出了服务不能够接收消息的接收者不被包含在可用接收者列表内。
本实施例提供以下几种获取可用接收者列表的方法:
从相应的数据库获取可用接收者的列表。当可用接收者不只一个,特别是比较多时,从系统管理的角度,必须随时掌握这些接收者的状态,通常系统可以通过在相应的数据库中不断更新这些可用接收者的运行状态来进行管理维护。对于由于各种原因需要退出服务,不能接收相应消息的接收者,系统会将其标记为不可用,对于恢复了接收功能的接收者,系统会在数据库中标记更新其状态,这样便于系统中的任何设备随时查询获得可用接收者信息。本步骤即可以从相应的数据库获得可用接收者的列表。所述列表内包含所用当年可用的接收者的信息,如接收者的标识等。
对于消息的发送者来说,也可以自己维护一份可用接收者列表,将这样的接收者列表存储在本地的存储介质上,能够随时查询并能够比每次从网络中的数据库更快地得到查询的结果,节省网络资源。
对于将可用接收者列表存储在本地的存储介质这一方式来说,为了保正所存储的可用接收者状态的准确性,本申请优选地采用按照固定的时间间隔周期性地从相应的数据库获取可用接收者列表,并用所获得的可用接收者列表更新本地可用接收者列表。这样既不必每次发送相应的消息时都从数据库查询,节省了时间和网络资源,还能够在一定程度上保证了可用接收者列表的准确性。
所述可用接收者列表中包括接收者的标识,用以在网络内唯一确定相应的接收者。所述接收者的标识,既可以为其名称或在网络内的地址,也可以是其在网络内唯一的编号等。这些都能够在整个网络的范围内唯一地确定一个接收者。
对于待发送心跳消息来说,其接收者为网络中的状态管理服务器。在心跳消息从最初发送到被最终的目标状态管理服务器所接收的过程中,无论是作为心跳消息的原始发送者,还是转发设备,或是状态管理服务器,都可以采用上述任意一种方式获取可用接收者列表。例如按照固定的时间间隔从相应的数据库获取可用接收者列表,并用所述列表更新本地存储的可用接收者列表,在按照固定的时间间隔从相应的数据库获取可用接收者列表时,应该协调好所述固定的时间间隔和心跳消息的时间间隔的关系,以免造成网络资源的浪费或过度加重设备负担。
心跳消息的可用接收者即为分布式状态管理服务器集群中的可用状态管理服务器,所述状态管理服务器的标识通常采用所述服务器的主机名称或IP地址,如,在本实施例中获得的可用状态管理服务器列表如下表2所示:
可用状态管理服务器
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
表2
上述表2中的信息表明IP地址为192.168.0.1的状态管理服务器,IP地址为192.168.0.2的状态管理服务器,IP地址为192.168.0.3的状态管理服务器和IP地址为192.168.0.4的状态管理服务器当前状态为正常运行状态,能够接收心跳消息。
步骤S103,按照保持接收者与原始发送者关系的一致性的算法,从所述可用接收者列表中确定所述待发送消息的接收者地址。
对于象心跳消息这样的有序消息,如果将同一原始发送者的心跳消息随机地发送给不同的接收者,将会导致系统对原始发送者及其上运行的业务应用的状态的管理的频繁变化甚至混乱。所以应该保持接收者与原始发送者关系的一致性。即:
在接收者状态稳定时使得同一原始发送者的有序消息发送给同一接收者,避免随机将同一原始发送者的消息发送给不同的接收者。
当原始发送者所对应的接收者由于种种原因不能够接收所述有序消息时,才将所述原始发送者的消息发送给其他接收者。同时要保持仍然正常运行的接收者仍然接收到原来所对应的原始发送者的消息。
当原始发送者所对应的接收者恢复接收所述有序消息时,将其所对应的原始发送者发送的有序消息恢复发送给这一恢复了接收所述有序消息的接收者。
当有新的接收者加入服务时,也仅有少量的原始发送者的消息被调整到新加入服务的接收者,而大部分的原始发送者所对应的接收者保持不变。
以上即为保持接收者与原始发送者关系的一致性。
当获取到可用接收者列表后,可以采取下述方式在保持上述一致性的情况下,从所述可用接收者列表中确定所述待发送消息所对应的接收者地址:
利用所述可用接收者列表中的可用接收者的标识与所述待发送消息的原始发送者的标识,采用一致性哈希算法,确定所述待发送消息所对应的接收者地址。
一致性哈希算法能够很好地满足上述的保持接收者与原始发送者关系的一致性,一致性哈希算法的具体实现可以有不同的方式或方法,本实施例仅对其中的一种方法的过程进行简要的说明:
分别采用同样的哈希算法(如MD5),计算得到可用接收者列表中所包含的各个可用接收者的标识所对应的哈希值与待发送消息的原始发送者的标识所对应的哈希值。根据所述待发送消息的原始发送者标识所对应的哈希值与可用接收者的标识所对应的哈希值的关系确定本次接收者。
例如将可用接收者的标识所对应的哈希值与所述待发送消息的原始发送者标识所对应的哈希值按照大小排列在一个环上(这个环被称为哈希环),将所述待发送消息的原始发送者标识所对应的哈希值在所述哈希环上某一方向(如顺时针或逆时针方向)距离最近的可用接收者的标识所对应的哈希值所对应的可用接收者作为所述待发送消息所对应的本次接收者,将该接收者的地址作为所述待发送消息所对应的接收者地址。
对于获取到的待发送消息为步骤S101中表1所示的心跳消息,获取到的可用接收者列表为前述步骤S102中表2所示的可用接收者列表的情况,即,待发送消息的原始发送者为IP地址为192.168.0.10的节点设备,可用接收者分别为IP地址为192.168.0.1的状态管理服务器,IP地址为192.168.0.2的状态管理服务器,IP地址为192.168.0.3的状态管理服务器和IP地址为192.168.0.4的状态管理服务器。
分别对所述待发送心跳消息的原始发送者和所述可用接收者的IP地址进行同样的哈希运算(如MD5算法),分别得到所述待发送心跳消息的原始发送者(IP地址为192.168.0.10的节点设备)所对应的哈希值:446d0be655ecd2fc9922965af3bd984f以及所述各个可用接收者所对应的哈希值:
状态管理服务器192.168.0.1:f0fdb4c3f58e3e3f8e77162d893d3055,
状态管理服务器192.168.0.2:6f65e91667cf98dd13464deaf2739fde,
状态管理服务器192.168.0.3:8c27f6b5dc0e9e5a536aa0371648fb4a,
状态管理服务器192.168.0.4:0252f5158dc3a9531907fb42c00a4138。
IP地址为192.168.0.10的待发送心跳消息的原始发送者的IP地址所对应的哈希值的大小介于IP地址为192.168.0.4的状态管理服务器所对应的哈希值与IP地址为192.168.0.2的状态管理服务器所对应的哈希值之间,当上述待发送心跳消息的原始发送者的IP地址所对应的哈希值和状态管理服务器的IP地址所对应的哈希值按照顺时针从小到大映射到圆上,并按照从待发送心跳消息的原始发送者的IP地址所对应的哈希值在圆上顺时针方向查找距离最近的可用状态管理服务器的IP地址所对应的哈希值的规则确定接收者时,能够确定表1所示的待发送消息所对应的接收者为IP地址为192.168.0.2的状态管理服务器。
将IP地址为192.168.0.2的状态管理服务器的地址,即其IP地址192.168.0.2作为表1所示的待发送心跳消息的接收者地址。
确定了待发送心跳消息的接收者地址后,可以根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息。
为了避免在退出服务的接收者恢复服务后,原来接收消息的接收者因为原始发送者的消息被发往恢复了服务的接收者而不再收到所述原始发送者的消息而误以为所述原始发送者退出了服务,还应该在确定所述待发送心跳消息所对应的状态管理服务器地址后,更新本地存储的所述待发送消息的原始发送者所对应的接收者地址前,向本地存储的所述待发送消息的原始发送者所对应的接收者发送告别消息,使其能够不再期望所述原始发送者的后续的消息。
当确定了所述待发送消息所对应的状态管理服务器地址后,可以根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系来向在恢复了服务的接收者退出服务期间接受其消息的接收者发送告别消息。
具体地,可以判断本地所存储的所述待发送消息的原始发送者所对应的接收者地址是否与按照保持接收者与原始发送者关系的一致性的算法确定的接收者的地址相同来确定发送告别消息:当本地所存储的所述待发送消息的原始发送者所对应的接收者地址与按照保持接收者与原始发送者关系的一致性的算法确定的接收者的地址不同时,表明所述待发送消息的原始发送者此前的消息的接收者会不同于本次的接收者,这时可以发送告别消息给此前的接收者,即本地存储的所述待发送消息的原始发送者所对应的接收者。
也可以当本地所存储的所述待发送消息的原始发送者所对应的接收者地址与按照保持接收者与原始发送者关系的一致性的算法确定的接收者的地址不同时,进一步判断所述可用接收者列表中是否包含有本地所存储的所述待发送消息的原始发送者所对应的接收者,当所述可用接收者列表中包含有本地所存储的所述待发送消息的原始发送者所对应的接收者时,表明此前退出了服务的接收者恢复了服务,这时需要向本地所存储的所述待发送消息的原始发送者所对应的接收者地址发送告别消息。这样能够更加精确的将消息发送给仍然有效的接收者而避免将消息发往退出服务的接收者,节省资源。
例如对于表1的心跳消息,按照保持接收者与原始发送者关系的一致性的算法,确定了其接收者为IP地址为192.168.0.2的状态管理服务器,当IP地址为192.168.0.2的状态管理服务器由于某种原因退出了服务,不再能够接收心跳消息时,可用接收者列表中将不包含IP地址为192.168.0.2的状态管理服务器。这时,按照保持接收者与原始发送者关系的一致性的算法,待发送心跳消息的原始发送者的IP地址(192.168.0.10)所对应的哈希值介于IP地址为192.168.0.4的状态管理服务器所对应的哈希值和IP地址为192.168.0.3的状态管理服务器所对应的哈希值之间,按照一致性哈希算法,可以确定IP地址为192.168.0.3的状态管理服务器将成为表1所示的待发送心跳消息接收者。
此后当IP地址为192.168.0.2的状态管理服务器恢复了服务后,可用接收者列表中将再次包含IP地址为192.168.0.2的状态管理服务器,这时根据一致性哈希算法,表1所示的待发送心跳消息的接收者将被重新确定为IP地址为192.168.0.2的状态管理服务器。
这时,需要向在IP地址为192.168.0.2的状态管理服务器退出服务器期间接收IP地址为192.168.0.10的节点设备的心跳消息的IP地址为192.168.0.3的状态管理服务器发送告别消息,通知其“IP地址为192.168.0.10的节点设备的心跳消息将发送给其他的状态管理服务器”,以免IP地址为192.168.0.3的状态管理服务器因为接收不到IP地址为192.168.0.10的节点设备的后续心跳消息而将其状态标记为非运行状态。
具体地,判断本地存储的IP地址为192.168.0.10的节点设备所对应的接收者地址是否与按照一致性哈希算法确定的接收者的地址相同,若不相同,则向本地存储的IP地址为192.168.0.10的节点设备所对应的接收者地址发送告别消息。当IP地址为192.168.0.2的状态管理服务器退出服务后,本地存储的IP地址为192.168.0.10的节点设备所对应的接收者的地址被更新为IP地址为192.168.0.3的状态管理服务器的IP地址192.168.0.3。当IP地址为192.168.0.2的状态管理服务器恢复服务后,按照一致性哈希算法确定的接收者会恢复为IP地址为192.168.0.2的状态管理服务器,这时需要向IP地址为192.168.0.3的状态管理服务器的IP地址192.168.0.3发送告别消息。
或者还可以做进一步的判断,判断所述可用接收者列表中是否包含有本地存储的192.168.0.3的状态管理服务器的地址,若包含,则向其发送告别消息。
在确定了所述待发送心跳消息所对应的状态管理服务器地址后,除了需要根据实际情况来决定发送告别消息外,还需要根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述按照保持接收者与原始发送者关系的一致性的算法所确定的待发送消息的接收者的关系,更新本地存储的所述待发送消息的原始发送者所对应的接收者。
为了能够判断出是否需要向在恢复了服务的接收者退出服务期间接收所述待发送消息的原始发送者发送的消息的接收者发送告别消息,本地需要保留截止到当前能够接收所述待发送消息的原始发送者的消息的接收者信息。
当本地所存储的所述待发送心跳消息的原始发送者所对应的接收者地址与按照保持接收者与原始发送者关系的一致性的算法所确定的接收者的地址不同时,用按照保持接收者与原始发送者关系的一致性的算法确定的接收者的地址更新本地存储的所述待发送心跳消息的原始发送者所对应的接收者地址。
对于需要发送告别消息的情况,应该在发送告别消息后再更新本地存储的所述待发送心跳消息的原始发送者所对应的接收者地址。以避免将告别消息发往错误的接收者。
对于表1所示的心跳消息,若本地存储的IP地址为192.168.0.10的节点设备所对应的接收者地址为IP地址为192.168.0.3的状态管理服务器的IP地址192.168.0.3,而按照一致性哈希算法确定的接收者的地址为IP地址为192.168.0.2的状态管理服务器的IP地址192.168.0.2,则在向IP地址为192.168.0.3的状态管理服务器的IP地址192.168.0.3发送告别消息后,将本地存储的IP地址为192.168.0.10的节点设备所对应的接收者地址更新为IP地址为192.168.0.2的状态管理服务器的IP地址192.168.0.2。
步骤S104,向所述待发送消息的接收者地址发送所述待发送消息。
确定了待发送消息所对应的接收者地址后,将所述待发送消息所对应的接收者地址作为所述待发送消息的目的地地址,将所述待发送消息发送出去。
对于心跳消息的产生者,产生了心跳消息并确定了所述心跳消息的本次接收者(也即状态管理服务器)的地址后,将所述心跳消息的接收者(也即状态管理服务器)的地址为所述心跳消息的目的地地址,将所述心跳消息发往所述的状态管理服务器。
对于心跳消息的转发设备,如用于向分布式状态管理服务器集群转发心跳消息的负载均衡设备,在接收到心跳消息的产生者发送来的心跳消息,并确定了所述心跳消息的接收者(也即状态管理服务器)的地址后,将所述心跳消息的接收者(也即状态管理服务器)的地址为所述心跳消息的目的地地址,将所述心跳消息发往所述的状态管理服务器。
对于分布式状态管理服务器集群中的状态管理服务器,在接收到心跳消息的产生者或者心跳消息的转发设备发送来的心跳消息并确定了所述待送心跳消息的接收者(也即状态管理服务器)的地址后,将所述心跳消息的本次接收者(也即状态管理服务器)的地址为所述心跳消息的目的地地址,将所述心跳消息转发给所述的状态管理服务器。
例如,无论是作为产生表1所示的心跳消息的节点设备(所述心跳消息的原始发送者),还是转发设备,或者接收到所述心跳消息的状态管理服务器,当确定了其接收者的地址为IP地址为192.168.0.2的状态管理服务器的IP地址192.168.0.2后,将表1所示的心跳消息发往192.168.0.2。
以上为本申请的一种发送消息的方法的实施例,在采用分布式设备集群接收消息的情况下,消息始终可以被正确地接收,能够尽可能地避免由于随机分发消息导致的错误判断处理的问题。同时能够起到增加扩展或调整分布式接收消息的设备集群的灵活性的作用。达到提高系统和业务的可用性的效果。
本申请提供的发送消息的方法优选地能够用于分布式集群系统中各个心跳消息产生节点向状态管理服务器发送心跳消息;也能够用于分布式状态管理服务器集群系统中的状态管理服务器接收到心跳消息后向其他状态管理服务器转发所述的心跳消息;还能够用于分布式集群系统中的心跳消息转发节点转发所述心跳消息。在采用分布式状态管理服务器集群接收心跳消息的情况下,能够尽可能地避免由于随机分发心跳消息导致状态管理服务器的错误判断处理的问题。同时能够起到增加扩展或调整分布式状态服务器集群的灵活性的作用。达到提高业务系统的可用性的效果。
相应的,本申请的第二实施例提供一种发送消息的装置,其结构框图如图2所示,该装置包括以下单元:消息获取单元U201,可用接收者获取单元U202,接收者地址确定单元U203和发送单元U204。
所述消息获取单元U201,用于获取待发送消息;
所述可用接收者获取单元U202,用于获取可用接收者列表;
所述接收者地址确定单元U203,用于按照保持接收者与原始发送者关系的一致性的算法,从所述可用接收者列表中确定所述待发送消息的接收者地址;
所述发送单元U204,用于向所述待发送消息的接收者地址发送所述待发送消息。
本申请第三实施例提供一种分布式设备集群系统,其结构示意图如图3所示,包括心跳消息产生节点N301,N302,N303和N304和状态管理节点N305,N306,N307和N308,所述各个心跳消息产生节点和所述各个状态管理节点之间通过网络相互连接。每一个节点设备可以是一台计算机。
所述各个心跳消息产生节点N301,N302,N303和N304上部署有本申请提供的发送消息的装置,所述装置用于向相应的状态管理节点发送其所产生的心跳消息。
除了可以将本申请提供的发送消息的装置部署在所述各个心跳消息产生节点N301,N302,N303和N304上的方式外,也可以将本申请提供的发送消息的装置部署在状态管理节点N305,N306,N307和N308上而不是所述各个心跳消息产生节点N301,N302,N303和N304上。
这种情况下,所述状态管理节点N305,N306,N307和N308之间通过网络相互连接,所述各个心跳产生节点N301,N302,N303和N304可以随机地将心跳消息发送给任意一个状态管理节点,收到心跳消息的状态管理节点上部署的本申请提供的发送消息的装置,用于将所述心跳消息转发给相应的状态管理节点。
相应的描述可以参考本申请第一实施例中相关的描述,所述装置的细节可以参考本申请第二实施例中相应的描述,在此不再赘述。
本申请第四实施例提供一种分布式设备集群系统,其结构示意图如图4所示,包括心跳消息产生节点N301,N302,N303和N304;状态管理节点N305,N306,N307和N308,以及心跳消息转发节点N309和N310;所述各个心跳消息产生节点与所述心跳消息转发节点之间,各个心跳消息转发节点与各个状态管理节点之间通过网络相互连接。每一个节点设备可以是一台计算机。
所述各个心跳消息产生节点N301,N302,N303和N304上部署有本申请提供的发送消息的装置,所述装置用于通过所述心跳消息转发节点N309和N310向相应的状态管理节点发送其所产生的心跳消息。
除了可以将本申请提供的发送消息的装置部署在所述各个心跳消息产生节点N301,N302,N303和N304上的方式外,还可以将本申请提供的发送消息的装置部署在所述心跳消息转发节点N309和N310上,当心跳消息转发节点收到所述各个心跳消息产生节点N301,N302,N303和N304发送来的心跳消息后,所述装置将所述心跳消息转发给相应的状态管理节点。
除了可以将本申请提供的发送消息的装置部署在所述各个心跳消息产生节点N301,N302,N303和N304上或所述心跳消息转发节点N309和N310上两种方式外,也可以将本申请提供的发送消息的装置部署在状态管理节点N305,N306,N307和N308上而不是所述各个心跳消息产生节点N301,N302,N303和N304上。
这种情况下,所述状态管理节点N305,N306,N307和N308之间通过网络相互连接,所述各个心跳产生节点N301,N302,N303和N304产生的心跳消息可以被所相互心跳消息转发节点N309和N310随机发送给任意状态管理节点,收到心跳消息的状态管理节点上部署的本申请提供的发送消息的装置,用于将所述心跳消息转发给相应的状态管理节点。
相应的描述可以参考本申请第一实施例中相关的描述,所述装置的细节可以参考本申请第二实施例中相应的描述,在此不再赘述。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

Claims (28)

1.一种发送消息的方法,特征在于,包括以下步骤:
获取待发送消息;
获取可用接收者列表;
按照保持接收者与原始发送者关系的一致性的算法,从所述可用接收者列表中确定所述待发送消息的接收者地址,其中,所述可用接收者列表中包括接收者的标识以及所述待发送消息包括原始发送者的标识,用以在网络内唯一确定发送者相对应的接收者;
向所述待发送消息的接收者地址发送所述待发送消息;
当所述待发送消息的原始发送者所对应的接收者无效时,为所述原始发送者重新确定新的接收者地址;
当所述待发送消息的原始发送者所对应的接收者恢复接收消息后,为所述原始发送者恢复原始的接收者地址。
2.根据权利要求1所述的发送消息的方法,其特征在于,所述按照保持接收者与原始发送者关系的一致性的算法,从所述可用接收者列表中确定所述待发送消息的本次接收者地址包括:
利用所述可用接收者列表中的可用接收者的标识与所述待发送消息的原始发送者的标识,采用一致性哈希算法,确定所述待发送消息的接收者地址。
3.根据权利要求1所述的发送消息的方法,其特征在于,所述消息包括有序消息。
4.根据权利要求1所述的发送消息的方法,其特征在于,所述接收者的标识包括接收者的名称或地址。
5.根据权利要求1所述的发送消息的方法,其特征在于,所述原始发送者的标识包括原始发送者的名称或地址。
6.根据权利要求1所述的发送消息的方法,其特征在于,所述获取可用接收者列表包括:
从数据库获取可用接收者列表。
7.根据权利要求1所述的发送消息的方法,其特征在于,所述获取可用接收者列表包括:
从本地获取所述可用接收者列表。
8.根据权利要求7所述的发送消息的方法,其特征在于,所述从本地获取所述可用接收者列表的步骤前还包括以下获取并存储可用接收者列表的步骤:
以固定的时间间隔,从数据库获取所述可用接收者列表;
将所述可用接收者列表存储到本地。
9.根据权利要求1所述的发送消息的方法,其特征在于,所述按照保持接收者与原始发送者关系的一致性的算法,从所述可用接收者列表中确定所述待发送消息的接收者地址的步骤后还包括以下发送告别消息的步骤:
根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息。
10.根据权利要求9所述的发送消息的方法,其特征在于,所述根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息包括:
当本地存储的所述待发送消息的原始发送者所对应的接收者不同于所述待发送消息的接收者时,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息。
11.根据权利要求9所述的发送消息的方法,其特征在于,所述根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息包括:
当本地存储的所述待发送消息的原始发送者所对应的接收者不同于所述待发送消息的接收者,并且所述可用接收者列表中包含本地存储的所述待发送消息的原始发送者所对应的接收者时,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息。
12.根据权利要求9所述的发送消息的方法,其特征在于,所述向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息的步骤后还包括以下步骤:
根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,更新本地存储的所述待发送消息的原始发送者所对应的接收者。
13.根据权利要求12所述的发送消息的方法,其特征在于,所述根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,更新本地存储的所述待发送消息的原始发送者所对应的接收者包括:
当本地存储的所述待发送消息的原始发送者所对应的接收者不同于所述待发送消息的接收者时,用所述待发送消息的接收者更新本地存储的所述待发送消息的原始发送者所对应的接收者。
14.根据权利要求1至13任一权利要求所述的发送消息的方法,其特征在于,用于分布式集群系统中各个心跳消息产生节点发送心跳消息。
15.根据权利要求1至13任一权利要求所述的发送消息的方法,其特征在于,用于分布式状态管理服务器集群系统中的状态管理服务器接收到心跳消息后向其他相应的状态管理服务器转发所述心跳消息。
16.根据权利要求1至13任一权利要求所述的发送消息的方法,其特征在于,用于分布式集群系统中的心跳消息转发节点转发所述心跳消息。
17.一种发送消息的装置,特征在于,包括:
消息获取单元,用于获取待发送消息;
可用接收者获取单元,用于获取可用接收者列表;
接收者地址确定单元,用于按照保持接收者与原始发送者关系的一致性的算法,从所述可用接收者列表中确定所述待发送消息的接收者地址,其中,所述可用接收者列表中包括接收者的标识以及所述待发送消息包括原始发送者的标识,用以在网络内唯一确定发送者相对应的接收者;
发送单元,用于向所述待发送消息的接收者地址发送所述待发送消息;当所述待发送消息的原始发送者所对应的接收者无效时,为所述原始发送者重新确定新的接收者地址;当所述待发送消息的原始发送者所对应的接收者恢复接收消息后,为所述原始发送者恢复原始的接收者地址。
18.根据权利要求17所述的发送消息的装置,其特征在于,所述接收者地址确定单元,具体用于利用所述可用接收者列表中的可用接收者的标识与所述待发送消息的原始发送者的标识,采用一致性哈希算法,确定所述待发送消息的接收者地址。
19.根据权利要求17所述的发送消息的装置,其特征在于,所述可用接收者获取单元具体用于从数据库获取可用接收者列表。
20.根据权利要求17所述的发送消息的装置,其特征在于,所述可用接收者获取单元具体用于从本地获取所述可用接收者列表。
21.根据权利要求20所述的发送消息的装置,其特征在于,还包括:
接收者列表周期性获取子单元,用于以固定的时间间隔,从数据库获取所述可用接收者列表;
接收者列表存储子单元,用于将所述可用接收者列表存储到本地。
22.根据权利要求17所述的发送消息的装置,其特征在于,还包括:
告别消息发送子单元,用于根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息。
23.根据权利要求22所述的发送消息的装置,其特征在于,所述告别消息发送子单元,具体用于当本地存储的所述待发送消息的原始发送者所对应的接收者不同于所述待发送消息的接收者时,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息。
24.根据权利要求22所述的发送消息的装置,其特征在于,所述告别消息发送子单元,具体用于当本地存储的所述待发送消息的原始发送者所对应的接收者不同于所述待发送消息的接收者,并且所述可用接收者列表中包含本地存储的所述待发送消息的原始发送者所对应的接收者时,向本地存储的所述待发送消息的原始发送者所对应的接收者的地址发送告别消息。
25.根据权利要求22所述的发送消息的装置,其特征在于,还包括:
本地更新子单元,用于根据本地存储的所述待发送消息的原始发送者所对应的接收者与所述待发送消息的接收者的关系,更新本地存储的所述待发送消息的原始发送者所对应的接收者。
26.根据权利要求25所述的发送消息的装置,其特征在于,所述本地更新子单元,具体用于当本地存储的所述待发送消息的原始发送者所对应的接收者不同于所述待发送消息的接收者时,用所述待发送消息的接收者更新本地存储的所述待发送消息的原始发送者所对应的接收者。
27.一种分布式设备集群系统,包括多于一个的心跳消息产生节点和多于一个的状态管理节点,所述各个心跳消息产生节点与所述各个状态管理节点之间通过网络连接,所述心跳消息产生节点产生并发送心跳消息给相应的状态管理节点,所述状态管理节点对相应的心跳消息进行分析处理,特征在于,
各个心跳消息产生节点上部署有权利要求17至权利要求26任一权利要求所述的发送消息的装置,用于向相应的状态管理节点发送其所产生的心跳消息;
或者所述各个状态管理节点相互之间通过网络相互连接并且所述各个状态管理节点上部署有权利要求17至权利要求26任一权利要求所述的发送消息的装置,用于将其所收到的所述心跳消息产生节点发送来的心跳消息转发给相应状态管理节点。
28.一种分布式设备集群系统,包括多于一个的心跳消息产生节点,心跳消息转发节点和多于一个的状态管理节点,所述心跳消息产生节点,所述心跳消息转发节点和所述状态管理节点相互之间通过网络连接,所述心跳消息产生节点产生并发送心跳消息给所述心跳消息转发节点,所述心跳消息转发节点接收并转发所述心跳消息给相应的所述状态管理节点,所述状态管理节点对相应的心跳消息进行分析处理,特征在于:
各个心跳消息产生节点上部署有权利要求17至权利要求26任一权利要求所述的发送消息的装置,用于通过所述心跳消息转发节点向相应的状态管理节点发送其所产生的心跳消息;
或者所述心跳消息转发节点部署有权利要求17至权利要求26任一权利要求所述的发送消息的装置,用于将所述心跳消息产生节点发送来的心跳消息转发给相应的状态管理节点;
再或者所述各个状态管理节点相互之间通过网络相互连接并且所述各个状态管理节点上部署有权利要求17至权利要求26任一权利要求所述的发送消息的装置,用于将其所收到的所述心跳消息产生节点发送来的心跳消息转发给相应状态管理节点。
CN201610412091.9A 2016-06-12 2016-06-12 一种发送消息的方法和装置及分布式设备集群系统 Active CN107493308B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610412091.9A CN107493308B (zh) 2016-06-12 2016-06-12 一种发送消息的方法和装置及分布式设备集群系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610412091.9A CN107493308B (zh) 2016-06-12 2016-06-12 一种发送消息的方法和装置及分布式设备集群系统

Publications (2)

Publication Number Publication Date
CN107493308A CN107493308A (zh) 2017-12-19
CN107493308B true CN107493308B (zh) 2021-02-12

Family

ID=60642223

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610412091.9A Active CN107493308B (zh) 2016-06-12 2016-06-12 一种发送消息的方法和装置及分布式设备集群系统

Country Status (1)

Country Link
CN (1) CN107493308B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109274604B (zh) * 2018-09-29 2021-12-07 创新先进技术有限公司 报文处理方法及系统
CN109413209B (zh) * 2018-12-17 2021-07-09 上海金融期货信息技术有限公司 一种基于双队列及注册中心的动态负载均衡方法和系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104852934A (zh) * 2014-02-13 2015-08-19 阿里巴巴集团控股有限公司 基于前端调度实现流量分配的方法、装置和系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012060995A2 (en) * 2010-11-01 2012-05-10 Michael Luna Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
CN103067439B (zh) * 2012-10-17 2016-05-11 北京奇虎科技有限公司 负载均衡方法和系统
CN105357253A (zh) * 2015-09-28 2016-02-24 努比亚技术有限公司 网络数据请求处理装置及方法
CN105516284B (zh) * 2015-12-01 2019-05-03 深圳市华讯方舟软件技术有限公司 一种集群数据库分布式存储的方法和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104852934A (zh) * 2014-02-13 2015-08-19 阿里巴巴集团控股有限公司 基于前端调度实现流量分配的方法、装置和系统

Also Published As

Publication number Publication date
CN107493308A (zh) 2017-12-19

Similar Documents

Publication Publication Date Title
US9143422B2 (en) Determining network node performance data based on location and proximity of nodes
US7539150B2 (en) Node discovery and communications in a network
JP6686033B2 (ja) メッセージをプッシュするための方法および装置
CN111966289B (zh) 基于Kafka集群的分区优化方法和系统
CN108062243B (zh) 执行计划的生成方法、任务执行方法及装置
WO2012072344A1 (en) Endpoint-to-endpoint communications status monitoring
US20200329118A1 (en) Data transmission scheduling method and system
US20090182825A1 (en) Method and system for providing source information of data being published
US10802896B2 (en) Rest gateway for messaging
CN107493308B (zh) 一种发送消息的方法和装置及分布式设备集群系统
CN112398797B (zh) 数据传输方法、接收装置、发送装置、介质、设备及系统
CN115623000A (zh) 一种数联网上数据高效分发方法与装置
US8977595B1 (en) Message-recovery file log locating and monitoring
CN106790354B (zh) 一种防数据拥堵的通信方法及其装置
EP3570169B1 (en) Method and system for processing device failure
US10715608B2 (en) Automatic server cluster discovery
KR20140125223A (ko) 정보 중심 네트워킹 기반의 콘텐츠 네트워크에서 관리 인터페이스를 이용한 정보 수집 방법, 콘텐츠 네트워크 관리 시스템 및 노드 장치
CN110740064A (zh) 分布式集群节点故障处理方法、装置、设备及存储介质
CN107231394B (zh) 一种数据源地址分发树的构造方法和用于复制数据的方法
KR101715377B1 (ko) 사물 인터넷을 위한 시스템, 클러스터 헤더 노드 및 센서 노드 탐색 방법
US20190014025A1 (en) Neighbor monitoring in a hyperscaled environment
CN116095180B (zh) 一种日志回传的选路方法、装置和存储介质
US11190432B2 (en) Method and first node for managing transmission of probe messages
CN113190347A (zh) 一种边缘云系统及任务管理方法
US20200028897A1 (en) Load balancing system

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: 1248415

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant