提高消息传输可靠性的方法和系统的制作方法

文档序号:10569910阅读:301来源:国知局
提高消息传输可靠性的方法和系统的制作方法
【专利摘要】本发明公开了一种提高消息传输可靠性的方法和系统,其中,适用于将消息发送方的消息传输至多个消息接收方,所述方法包括:消息发送方将消息发送至数据库系统;各消息接收方从所述数据库系统获取消息。该技术方案以数据库系统为媒介来实现消息的传输,具体地,由消息发送方将消息发送至数据库系统,再由各消息接收方从所述数据库系统获取消息。由于数据库系统的稳定性,保证了消息传输的可靠,可以尽量避免出现消息丢失、不能及时获取消息等影响通信效率和效果的情况,提高了用户体验。
【专利说明】
提高消息传输可靠性的方法和系统
技术领域
[0001]本发明涉及数据库技术领域,具体涉及一种提高消息传输可靠性的方法和系统。
【背景技术】
[0002]在分布式系统的层级间的消息传输过程中,消息传输的可靠性经常很难得到保证。例如由于层级间的网络抖动,导致没有收到消息或延迟收到消息,这样消息的发出方并不知情;下一层级没有返回结果或延迟返回结果,上一层也并不能感知到,可能导致上一层级接收到的结果不完整。现有技术中,往往采取增大消息发送/接收的等待时间的技术方案,但效果并不理想。

【发明内容】

[0003]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的提高消息传输可靠性的方法和系统。
[0004]依据本发明的一个方面,提供了一种提高消息传输可靠性的方法,其中,适用于将消息发送方的消息传输至多个消息接收方,该方法包括:
[0005]消息发送方将消息发送至数据库系统;
[0006]各消息接收方从所述数据库系统获取消息。
[0007]可选地,所述数据库系统包括一个主数据库和多个从数据库;
[0008]所述消息发送方将消息发送至数据库系统为:所述消息发送方将消息发送至数据库系统的主数据库;
[0009]所述主数据库将消息同步到各从数据库;
[0010]各消息接收方从所述数据库系统获取消息包括:各消息接收方从所述数据库系统的各从数据库获取消息。
[0011]可选地,所述各消息接收方从所述数据库系统的各从数据库获取消息包括:
[0012]每个消息接收方向数据库系统订阅消息;
[0013]当该消息接收方订阅的消息到达数据库系统时,数据库系统根据网络连接状况为该消息接收方指定一个从数据库;
[0014]该消息接收方从指定的从数据库获取消息。
[0015]可选地,所述数据库系统根据网络连接状况为该消息接收方指定一个从数据库进一步包括:
[0016]数据库系统根据网络连接状况选择一个或多个从数据库;当选择一个从数据库时,为该消息接收方指定该选择的从数据库;当选择多个从数据库时,根据各从数据库的访问量为该消息接收方指定一个从数据库。
[0017]可选地,所述消息发送方是Sa11Stack系统中的主控节点;
[0018]所述消息接收方是Sa11 Stack系统中的Synd i c节点。
[0019]可选地,所述消息发送方将消息发送至数据库系统包括:SaltStack系统中的主控节点启动一个生产者进程,由该生产者进程将消息发布到数据库系统的主数据库;
[0020]各消息接收方从所述数据库系统获取消息包括:SaltStack系统中的每个Syndic节点启动一个消费者进程,由该消费者进程向数据库系统订阅消息;当订阅的消息到达数据库系统时,数据库系统根据网络连接状况为该消费者进程指定一个从数据库;该消费者进程从指定的从数据库获取消息并将获取的消息发给对应的Syndic节点。
[0021 ] 可选地,该方法进一步包括:Syndic节点将收到的消息下发到对应的多个Min1n节点。
[0022]依据本发明的另一方面,提供了一种提高消息传输可靠性的系统,其中,该系统包括:消息发送装置、数据库系统和多个消息接收装置;
[0023]消息发送装置,适于将消息发送至数据库系统;
[0024]数据库系统,适于保存消息;
[0025]各消息接收装置,适于从所述数据库系统获取消息。
[0026]可选地,所述数据库系统包括一个主数据库和多个从数据库;
[0027]所述消息发送装置,适于将消息发送至数据库系统的主数据库;
[0028]所述主数据库将消息同步到各从数据库;
[0029]所述各消息接收装置,适于从所述数据库系统的各从数据库获取消息。
[0030]可选地,每个消息接收装置,适于向数据库系统订阅消息;
[0031]数据库系统,适于当消息接收装置订阅的消息到达时,根据网络连接状况为该消息接收装置指定一个从数据库;
[0032]该消息接收装置,从指定的从数据库获取消息。
[0033]可选地,所述数据库系统,适于根据网络连接状况选择一个或多个从数据库;当选择一个从数据库时,为该消息接收方指定该选择的从数据库;当选择多个从数据库时,根据各从数据库的访问量为该消息接收方指定一个从数据库。
[0034]可选地,所述消息发送装置是SaltStack系统中的主控节点;
[0035]所述消息接收装置是SaltStack系统中的Syndic节点。
[0036]可选地,SaltStack系统中的主控节点启动一个生产者进程,由该生产者进程将消息发布到数据库系统的主数据库;
[0037]SaltStack系统中的每个Syndic节点启动一个消费者进程,由该消费者进程向数据库系统订阅消息;当订阅的消息到达数据库系统时,数据库系统根据网络连接状况为该消费者进程指定一个从数据库;该消费者进程从指定的从数据库获取消息并将获取的消息发给对应的Sy nd i c节点。
[0038]可选地,Syndic节点进一步适于将收到的消息下发到对应的多个Min1n节点。
[0039]由上述可知,本发明的技术方案,以数据库系统为媒介来实现消息的传输,具体地,由消息发送方将消息发送至数据库系统,再由各消息接收方从所述数据库系统获取消息。由于数据库系统的稳定性,保证了消息传输的可靠,可以尽量避免出现消息丢失、不能及时获取消息等影响通信效率和效果的情况,提高了用户体验。
[0040]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0041]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0042]图1示出了根据本发明一个实施例的一种提高消息传输可靠性的方法的流程示意图;
[0043]图2示出了SaltStack系统的架构示意图;
[0044]图3示出了根据本发明一个实施例的一种提高消息传输可靠性的系统的结构示意图。
【具体实施方式】
[0045]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0046]图1示出了根据本发明一个实施例的一种提高消息传输可靠性的方法的流程示意图,其中,适用于将消息发送方的消息传输至多个消息接收方,如图1所示,该方法包括:
[0047]步骤SI10,消息发送方将消息发送至数据库系统。
[0048]步骤S120,各消息接收方从数据库系统获取消息。
[0049]具体地,消息为序列化后的数据串。
[0050]可见,图1所示的方法,以数据库系统为媒介来实现消息的传输,具体地,由消息发送方将消息发送至数据库系统,再由各消息接收方从数据库系统获取消息。由于数据库系统的稳定性,保证了消息传输的可靠,可以尽量避免出现消息丢失、不能及时获取消息等影响通信效率和效果的情况,提高了用户体验。
[0051]在本发明的一个实施例中,图1所示的方法中,数据库系统包括一个主数据库和多个从数据库;消息发送方将消息发送至数据库系统为:消息发送方将消息发送至数据库系统的主数据库;主数据库将消息同步到各从数据库;各消息接收方从数据库系统获取消息包括:各消息接收方从数据库系统的各从数据库获取消息。
[0052]优选地,各数据库可以架设在不同的服务器中,每个数据库具有单独的IP地址用于访问。主从数据库间会对存入的消息进行同步。为保证消息的时效性,应该在消息存入主数据库时立即将消息同步到各从数据库。消息本身可能也存在有效期,由于数据库间的同步速率快,因此相对于消息的有效期来说可以忽略不计,也可以在消息存入数据库后,重置消息的有效期。
[0053]在本发明的一个实施例中,上述方法中,各消息接收方从数据库系统的各从数据库获取消息包括:每个消息接收方向数据库系统订阅消息;当该消息接收方订阅的消息到达数据库系统时,数据库系统根据网络连接为该消息接收方指定一个从数据库;该消息接收方从指定的从数据库获取消息。
[0054]在本发明的一个实施例中,所述数据库系统根据网络连接状况为该消息接收方指定一个从数据库进一步包括:数据库系统根据网络连接状况选择一个或多个从数据库;当选择一个从数据库时,为该消息接收方指定该选择的从数据库;当选择多个从数据库时,根据各从数据库的访问量为该消息接收方指定一个从数据库。
[0055]例如,当消息接收方和多个从数据库之间的网络连接状态均为良好时,数据库系统可以为消息接收方任意指定一个从数据库;或者,数据库系统也可以根据各从数据库的访问量为该消息接收方指定一个从数据库,即根据网络连接状况从网络连接状况良好的多个从数据库中为该消息接收方指定一个从数据库。在本发明的一个实施例中,当为消息接收方指定了一个从数据库后,如果该指定的从数据库与消息接收方之间的网络连接状况一直保持良好,则该消息接收方可以一直或在一段时间内都从该从数据库获取消息,以避免消息接收方无故频繁更换从数据库所带来的资源浪费。当该指定的从数据库与消息接收方之间的网络连接发生抖动或者故障时,数据库系统可以重新为该消息接收方指定一个可连接的从数据库。
[0056]可以看出,各消息接收方向数据库系统订阅消息与消息发送方将消息发送至数据库系统是完全独立的。这样并不直接建立各消息接收方与消息发送方之间的通信,而是完全以数据库系统来实现,具体地,消息的层级间传输通过数据库系统的主从同步来完成,而消息接收方从数据库系统的各从数据库获取消息,以及消息发送方将消息发送至数据库系统的过程基本不会出现消息丢失的情况,即使出现,由于相应操作均是对数据库的访问,也易于纠错。
[0057]在本发明的一个实施例中,上述方法中,消息发送方是SaltStack系统中的主控节点;消息接收方是SaltStack系统中的Syndic节点。
[0058]图2示出了SaltStack系统的架构示意图。如图所示,SaltStack系统分为主控节点(Master)、Syndic节点和Min1n节点三个层级。贝Ij在本发明的一个实施例中,上述方法中,消息发送方将消息发送至数据库系统包括:SaltStack系统中的主控节点启动一个生产者进程,由该生产者进程将消息发布到数据库系统的主数据库;各消息接收方从数据库系统获取消息包括= SaltStack系统中的每个Syndic节点启动一个消费者进程,由该消费者进程向数据库系统订阅消息;当订阅的消息到达数据库系统时,数据库系统根据网络连接状况为该消费者进程指定一个从数据库;该消费者进程从指定的从数据库获取消息并将获取的消息发给对应的Syndic节点。
[0059]现有技术中,SaltStack系统使用Zeromq消息队列来实现消息传输,根据统计,主控节点的服务器侧使用salt命令行下发远程执行命令,运行5次,每次1w消息,每条消息500byte左右,在Syndic节点的客户端侧接收消息,最后消息丢失大概500条。在本实施例中,当主控节点有消息需要下发给Syndic节点时,主控节点启动一个生产者Producer进程,由Producer进程将消息发布到数据库系统的主数据库;与之独立的,SaltStack系统中的每个Syndic节点启动一个消费者Consumer进程,由Consumer进程向数据库系统订阅消息。Consumer进程会一直阻塞等待消息,一旦有消息,就会订阅(Subscribe)到消息;Consumer进程将收到的消息再次发给本机的Syndic节点。以上文同样的消息量进行测试,未丢失任何一条消息。
[0000]在本发明的一个实施例中,上述方法进一步包括:Syndic节点将收到的消息下发到对应的多个Mi n i on节点。
[0061]图3示出了根据本发明一个实施例的一种提高消息传输可靠性的系统的结构示意图,如图3所示,提高消息传输可靠性的系统300包括:消息发送装置310、数据库系统320和多个消息接收装置330;
[0062]消息发送装置330,适于将消息发送至数据库系统320。
[0063]数据库系统320,适于保存消息。
[0064]各消息接收装置330,适于从数据库系统320获取消息。
[0065]具体地,消息为序列化后的数据串。
[0066]可见,图3所示的装置,以数据库系统为媒介来实现消息的传输,具体地,由消息发送方将消息发送至数据库系统,再由各消息接收方从数据库系统获取消息。由于数据库系统的稳定性,保证了消息传输的可靠,可以尽量避免出现消息丢失、不能及时获取消息等影响通信效率和效果的情况,提高了用户体验。
[0067]在本发明的一个实施例中,图3所示的系统中,数据库系统包括一个主数据库和多个从数据库;消息发送装置,适于将消息发送至数据库系统的主数据库;主数据库将消息同步到各从数据库;各消息接收装置,适于从数据库系统的各从数据库获取消息。
[0068]各数据库可以架设在不同的服务器中,每个数据库具有单独的IP地址用于访问。主从数据库间会对存入的消息进行同步。为保证消息的时效性,应该在消息存入主数据库时立即将消息同步到各从数据库。消息本身可能也存在有效期,由于数据库间的同步速率快,因此相对于消息的有效期来说可以忽略不计,也可以在消息存入数据库后,重置消息的有效期。
[0069]在本发明的一个实施例中,上述系统中,每个消息接收装置,适于向数据库系统订阅消息;数据库系统,适于当消息接收装置订阅的消息到达时,根据网络连接状况为该消息接收装置指定一个从数据库;该消息接收装置,从指定的从数据库获取消息。
[0070]在本发明的一个实施例中,数据库系统根据网络连接状况为该消息接收装置指定一个从数据库进一步包括:数据库系统根据网络连接状况选择一个或多个从数据库;当选择一个从数据库时,为该消息接收装置指定该选择的从数据库;当选择多个从数据库时,根据各从数据库的访问量为该消息接收装置指定一个从数据库。
[0071]可以看出,各消息接收方向数据库系统订阅消息与消息发送方将消息发送至数据库系统是完全独立的。这样并不直接建立各消息接收方与消息发送方之间的通信,而是完全以数据库系统来实现,具体地,消息的层级间传输通过数据库系统的主从同步来完成,而消息接收方从数据库系统的各从数据库获取消息,以及消息发送方将消息发送至数据库系统的过程基本不会出现消息丢失的情况,即使出现,由于相应操作均是对数据库的访问,也易于纠错。
[0072]在本发明的一个实施例中,上述系统中,数据库系统,适于可选地,所述数据库系统,适于根据网络连接状况选择一个或多个从数据库;当选择一个从数据库时,为该消息接收装置指定该选择的从数据库;当选择多个从数据库时,根据各从数据库的访问量为该消息接收装置指定一个从数据库。
[0073]例如,当消息接收装置和多个从数据库之间的网络连接状态均为良好时,数据库系统可以为消息接收装置任意指定一个从数据库;或者,数据库系统也可以根据各从数据库的访问量为该消息接收装置指定一个从数据库,即根据网络连接状况从网络连接状况良好的多个从数据库中为该消息接收装置指定一个从数据库。在本发明的一个实施例中,当为消息接收装置指定了一个从数据库后,如果该指定的从数据库与消息接收装置之间的网络连接状况一直保持良好,则该消息接收装置可以一直或在一段时间内都从该从数据库获取消息,以避免消息接收装置无故频繁更换从数据库所带来的资源浪费。当该指定的从数据库与消息接收装置之间的网络连接发生抖动或者故障时,数据库系统可以重新为该消息接收装置指定一个可连接的从数据库。
[0074]在本发明的一个实施例中,上述系统中,消息发送装置是SaltStack系统中的主控节点;消息接收装置是Sa I tStack系统中的Synd i c节点。
[0075]在本发明的一个实施例中,上述系统中,SaltStack系统中的主控节点启动一个生产者进程,由该生产者进程将消息发布到数据库系统的主数据库;SaltStack系统中的每个Syndic节点启动一个消费者进程,由该消费者进程向数据库系统订阅消息;当订阅的消息到达数据库系统时,数据库系统根据网络连接状况为该消费者进程指定一个从数据库;该消费者进程从指定的从数据库获取消息并将获取的消息发给对应的Syndic节点。
[0076]现有技术中,SaltStack系统使用Zeromq消息队列来实现消息传输,根据统计,主控节点的服务器侧使用salt命令行下发远程执行命令,运行5次,每次1w消息,每条消息500byte左右,在Syndic节点的客户端侧接收消息,最后消息丢失大概500条。在本实施例中,当主控节点有消息需要下发给Syndic节点时,主控节点启动一个生产者Producer进程,由Producer进程将消息发布到数据库系统的主数据库;与之独立的,SaltStack系统中的每个Syndic节点启动一个消费者Consumer进程,由Consumer进程向数据库系统订阅消息。Consumer进程会一直阻塞等待消息,一旦有消息,就会订阅(Subscribe)到消息;Consumer进程将收到的消息再次发给本机的Syndic节点。以上文同样的消息量进行测试,未丢失任何一条消息。
[0077]在本发明的一个实施例中,上述系统中,Syndic节点进一步适于将收到的消息下发到对应的多个Min1n节点。
[0078]综上所述,本发明的技术方案,以数据库系统为媒介来实现消息的传输,具体地,由消息发送方将消息发送至数据库系统,再由各消息接收方从数据库系统获取消息。由于数据库系统的稳定性,保证了消息传输的可靠,可以尽量避免出现消息丢失、不能及时获取消息等影响通信效率和效果的情况,提高了用户体验。
[0079]需要说明的是:
[0080]在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0081]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0082]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0083]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0084]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0085]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的提高消息传输可靠性的系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0086]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0087]本发明公开了Al、一种提高消息传输可靠性的方法,其中,适用于将消息发送方的消息传输至多个消息接收方,该方法包括:
[0088]消息发送方将消息发送至数据库系统;
[0089]各消息接收方从所述数据库系统获取消息。
[0090]A2、如Al所述的方法,其中,
[0091 ]所述数据库系统包括一个主数据库和多个从数据库;
[0092]所述消息发送方将消息发送至数据库系统为:所述消息发送方将消息发送至数据库系统的主数据库;
[0093]所述主数据库将消息同步到各从数据库;
[0094]各消息接收方从所述数据库系统获取消息包括:各消息接收方从所述数据库系统的各从数据库获取消息。
[0095]A3、如A2所述的方法,其中,所述各消息接收方从所述数据库系统的各从数据库获取消息包括:
[0096]每个消息接收方向数据库系统订阅消息;
[0097]当该消息接收方订阅的消息到达数据库系统时,数据库系统根据网络连接状况为该消息接收方指定一个从数据库;
[0098]该消息接收方从指定的从数据库获取消息。
[0099]A4、如A3所述的方法,其中,所述数据库系统根据网络连接状况为该消息接收方指定一个从数据库进一步包括:
[0100]数据库系统根据网络连接状况选择一个或多个从数据库;当选择一个从数据库时,为该消息接收方指定该选择的从数据库;当选择多个从数据库时,根据各从数据库的访问量为该消息接收方指定一个从数据库。
[0101]A5、如A1-A4中任一项所述的方法,其中,
[0102]所述消息发送方是SaltStack系统中的主控节点;
[0? O3 ]所述消息接收方是Sa I tStack系统中的Synd i c节点。
[0104]A6、如A5所述的方法,其中,
[0105]所述消息发送方将消息发送至数据库系统包括:SaltStack系统中的主控节点启动一个生产者进程,由该生产者进程将消息发布到数据库系统的主数据库;
[0106]各消息接收方从所述数据库系统获取消息包括:SaltStack系统中的每个Syndic节点启动一个消费者进程,由该消费者进程向数据库系统订阅消息;当订阅的消息到达数据库系统时,数据库系统根据网络连接状况为该消费者进程指定一个从数据库;该消费者进程从指定的从数据库获取消息并将获取的消息发给对应的Syndic节点。
[0? O7] A7、如A6所述的方法,其中,该方法进一步包括:Syndi c节点将收到的消息下发到对应的多个Min1n节点。
[0108]本发明还公开了B8、一种提高消息传输可靠性的系统,其中,该系统包括:消息发送装置、数据库系统和多个消息接收装置;
[0109]消息发送装置,适于将消息发送至数据库系统;
[0110]数据库系统,适于保存消息;
[0111]各消息接收装置,适于从所述数据库系统获取消息。
[0112]B9、如B8所述的系统,其中,
[0113]所述数据库系统包括一个主数据库和多个从数据库;
[0114]所述消息发送装置,适于将消息发送至数据库系统的主数据库;
[0115]所述主数据库将消息同步到各从数据库;
[0116]所述各消息接收装置,适于从所述数据库系统的各从数据库获取消息。
[0117]B10、如B9所述的系统,其中,
[0118]每个消息接收装置,适于向数据库系统订阅消息;
[0119]数据库系统,适于当消息接收装置订阅的消息到达时,根据负网络连接状况为该消息接收装置指定一个从数据库;
[0120]该消息接收装置,从指定的从数据库获取消息。
[0121]B11、如BlO所述的系统,其中,
[0122]所述数据库系统,适于根据网络连接状况选择一个或多个从数据库;当选择一个从数据库时,为该消息接收方指定该选择的从数据库;当选择多个从数据库时,根据各从数据库的访问量为该消息接收方指定一个从数据库。
[0123]B12、如B8-B11中任一项所述的系统,其中,
[0124]所述消息发送装置是SaltStack系统中的主控节点;
[ΟΙ25]所述消息接收装置是SaltStack系统中的Syndic节点。
[0126]B13、如B12所述的系统,其中,
[0127]SaltStack系统中的主控节点启动一个生产者进程,由该生产者进程将消息发布到数据库系统的主数据库;
[0128]SaltStack系统中的每个Syndic节点启动一个消费者进程,由该消费者进程向数据库系统订阅消息;当订阅的消息到达数据库系统时,数据库系统根据网络连接状况为该消费者进程指定一个从数据库;该消费者进程从指定的从数据库获取消息并将获取的消息发给对应的Sy nd i c节点。
[0129]B14、如B13所述的系统,其中,
[0130]Syndic节点进一步适于将收到的消息下发到对应的多个Min1n节点。
【主权项】
1.一种提高消息传输可靠性的方法,其中,适用于将消息发送方的消息传输至多个消息接收方,该方法包括: 消息发送方将消息发送至数据库系统; 各消息接收方从所述数据库系统获取消息。2.如权利要求1所述的方法,其中, 所述数据库系统包括一个主数据库和多个从数据库; 所述消息发送方将消息发送至数据库系统为:所述消息发送方将消息发送至数据库系统的主数据库; 所述主数据库将消息同步到各从数据库; 各消息接收方从所述数据库系统获取消息包括:各消息接收方从所述数据库系统的各从数据库获取消息。3.如权利要求2所述的方法,其中,所述各消息接收方从所述数据库系统的各从数据库获取消息包括: 每个消息接收方向数据库系统订阅消息; 当该消息接收方订阅的消息到达数据库系统时,数据库系统根据网络连接状况为该消息接收方指定一个从数据库; 该消息接收方从指定的从数据库获取消息。4.如权利要求3所述的方法,其中,所述数据库系统根据网络连接状况为该消息接收方指定一个从数据库进一步包括: 数据库系统根据网络连接状况选择一个或多个从数据库;当选择一个从数据库时,为该消息接收方指定该选择的从数据库;当选择多个从数据库时,根据各从数据库的访问量为该消息接收方指定一个从数据库。5.如权利要求1-4中任一项所述的方法,其中, 所述消息发送方是SaltStack系统中的主控节点; 所述消息接收方是Sal t Stack系统中的Synd i c节点。6.如权利要求5所述的方法,其中, 所述消息发送方将消息发送至数据库系统包括:SaltStack系统中的主控节点启动一个生产者进程,由该生产者进程将消息发布到数据库系统的主数据库; 各消息接收方从所述数据库系统获取消息包括:SaltStack系统中的每个Syndic节点启动一个消费者进程,由该消费者进程向数据库系统订阅消息;当订阅的消息到达数据库系统时,数据库系统根据网络连接状况为该消费者进程指定一个从数据库;该消费者进程从指定的从数据库获取消息并将获取的消息发给对应的Syndic节点。7.如权利要求6所述的方法,其中,该方法进一步包括:Syndic节点将收到的消息下发到对应的多个Mi n i on节点。8.—种提高消息传输可靠性的系统,其中,该系统包括:消息发送装置、数据库系统和多个消息接收装置; 消息发送装置,适于将消息发送至数据库系统; 数据库系统,适于保存消息; 各消息接收装置,适于从所述数据库系统获取消息。9.如权利要求8所述的系统,其中, 所述数据库系统包括一个主数据库和多个从数据库; 所述消息发送装置,适于将消息发送至数据库系统的主数据库; 所述主数据库将消息同步到各从数据库; 所述各消息接收装置,适于从所述数据库系统的各从数据库获取消息。10.如权利要求9所述的系统,其中, 每个消息接收装置,适于向数据库系统订阅消息; 数据库系统,适于当消息接收装置订阅的消息到达时,根据负网络连接状况为该消息接收装置指定一个从数据库; 该消息接收装置,从指定的从数据库获取消息。
【文档编号】G06F17/30GK105930339SQ201610201690
【公开日】2016年9月7日
【申请日】2016年3月31日
【发明人】赵阳
【申请人】北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1