基于分布式消息的设备处理方法和系统与流程

文档序号:12751676阅读:217来源:国知局
基于分布式消息的设备处理方法和系统与流程

本发明涉及互联网技术领域,尤其涉及一种基于分布式消息的设备处理方法和系统。



背景技术:

在互联网技术中,消息中心利用高效可靠的消息传递机制进行平台无关的数据交流,并且基于数据通信来进行分布式系统的集成。在开源产品中以ActiveMQ为代表的基于Java消息服务(Java Message Service,简称JMS)技术规范的消息中心在企业信息化领域应用最为广泛。

现有技术中,ActiveMQ包含应用系统的客户端与消息中心服务器两部分,发送者的客户端,将消息发送给消息中心服务器之后,消息中心服务器将消息存放在若干队列中,在合适的时候再将消息转发给接收者的客户端。由于消息中心服务器可以实现跨平台通信,因此可以屏蔽各种协议之间的特性,实现应用程序之间的协同。

然而现有技术中,消息中心多为集群部署,一个消息中心服务器集群中具有多个消息中心服务器,ActiveMQ由于自身特性支持消息中心服务器集群之间的桥接,这使得消息中心服务器集群之间不再孤立,但是现有的桥接关系以静态的配置文件方式维护,消息中心服务器桥接时不能自动识别在线的其他消息中心服务器,也不能自动剔除离线的消息中心服务器,从而这使得每次都需要管理人员修改配置文件,进而使得消息中心服务器集群无法弹性扩展。



技术实现要素:

本发明提供一种基于分布式消息的设备处理方法和系统,用以解决现有技术中消息中心服务器桥接时不能自动识别在线的其他消息中心服务器,也不能自动剔除离线的消息中心服务器,从而这使得每次都需要管理人员修改配置文件,进而无法弹性扩展的问题。

本发明的一方面是提供一种基于分布式消息的设备处理方法,包括:

在消息中心服务器启动时,消息中心服务器向配置中心装置中的指定节点下,写入与消息中心服务器对应的注册信息,所述注册信息包括集群信息;

所述配置中心装置确定所述指定节点接收到其他消息中心服务器发送的注册信息时,通知消息中心服务器获取所述指定节点上的其他消息中心服务器的注册信息;

所述消息中心服务器获取到所述指定节点上的其他消息中心服务器的注册信息,并根据所述其他消息中心服务器的注册信息中的集群信息,判断其他消息中心服务器与当前消息中心服务器是否归属于同一个集群,若不归属于同一个集群,则所述消息中心服务器与所述其他消息中心服务器之间建立双向桥接关系。

本发明的另一方面是提供一种基于分布式消息的设备处理系统,包括:

消息中心服务器和配置中心装置;

所述消息中心服务器,用于在消息中心服务器在启动时,消息中心服务器向配置中心装置中的指定节点下,写入与消息中心服务器对应的注册信息,所述注册信息包括集群信息;

所述配置中心装置,用于确定所述指定节点接收到其他消息中心服务器发送的注册信息时,通知消息中心服务器获取所述指定节点上的其他消息中心服务器的注册信息;

所述消息中心服务器,还用于获取到所述指定节点上的其他消息中心服务器的注册信息,并根据所述其他消息中心服务器的注册信息中的集群信息,判断其他消息中心服务器与当前消息中心服务器是否归属于同一个集群,若不归属于同一个集群,则所述消息中心服务器与所述其他消息中心服务器之间建立双向桥接关系。

本发明的技术效果是:通过在消息中心服务器在启动时,消息中心服务器向配置中心装置中的指定节点下,写入与消息中心服务器对应的注册信息;配置中心装置确定指定节点,接收到其他消息中心服务器发送的注册信息时,通知消息中心服务器获取指定节点上的其他消息中心服务器的注册信息;消息中心服务器获取指定节点上其他消息中心服务器的注册信息,并根据其他消息中心服务器的注册信息中的集群信息,判断其他消息中心服务器与当前消息中心服务器是否归属于同一个集群,若不归属于同一个集群,则消息中心服务器与其他消息中心服务器之间建立双向桥接关系。同时,消息中心服务器监听到指定节点上的其他消息中心服务器的注册信息消失,则消息中心服务器确定其他消息中心服务器发生异常,并销毁与异常的其他消息中心服务器之间的双向桥接关系。从而通过由配置中心装置的指定节点记录消息中心服务器的注册信息,由消息中心服务器监听指定节点变化,进而实现其他消息中心服务器上线、离线的判断,完成弹性扩展,从而实时调整各服务器集群之间的消息中心服务器的双向桥接关系,避免了静态桥接重启服务、组播桥接对网络的影响。并且,通过配置中心装置向客户端装置推送消费者会话级别、线程数,并修改客户端装置的会话级别、线程数,可实现消费者处理能力的弹性扩展;同时,客户端装置保存会话级别和线程数,使得应用程序不再直接绑定消息中心服务器的地址和集群信息等信息。

附图说明

图1为本发明实施例一提供的基于分布式消息的设备处理方法的流程图;

图2为本发明实施例二提供的基于分布式消息的设备处理方法的流程图;

图3为本发明实施例三提供的基于分布式消息的设备处理系统的结构示意图;

图4为本发明实施例四提供的基于分布式消息的设备处理系统的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例一提供的基于分布式消息的设备处理方法的流程图,如图1所示,本实施例的方法包括:

步骤101、在消息中心服务器在启动时,消息中心服务器向配置中心装置中的指定节点下,写入与消息中心服务器对应的注册信息,注册信息包括集群信息。

在本实施例中,具体的,本实施的方法包括了各客户端装置、操作台装置、配置中心装置、以及各消息中心服务器。其中,客户端装置基于ActiveMQ的API进行封装,使用Java语言基于Spring框架实现,用于发送、接收消息,同时获取配置中心装置的配置项;操作台装置部署为B/S结构的web应用服务器,提供配置中心的操作功能,包括配置项的建立、发布、版本管理,以及注册节点信息的展现;配置中心装置是一个高可靠的集群,用于记录配置项的信息和注册信息;消息中心服务器用于消息处理,包括接收、转发消息、持久化消息,同时向配置中心装置注册并监听配置中心装置的变化。

消息中心服务器在启动时,消息中心服务器向配置中心装置中与消息中心服务器对应的指定节点发送注册信息,注册信息包括服务器地址、集群信息和桥接信息;此时,消息中心服务器可以将消息中心服务器的注册信息写入到配置中心装置中的指定节点下。从而消息中心服务器启动前维护注册信息,然后在消息中心服务器启动时将注册信息写入到配置中心装置中的指定节点下,并消息中心服务器监听此指定节点的内容变化。

步骤102、配置中心装置确定指定节点接收到其他消息中心服务器发送的注册信息时,通知消息中心服务器获取指定节点上的其他消息中心服务器的注册信息。

在本实施例中,具体的,当配置中心装置确定与消息中心服务器对应的指定节点,接收到其他消息中心服务器发送的注册信息的时候,配置中心装置可以通知消息中心服务器来获取指定节点上的其他消息中心服务器的注册信息。

举例来说,当其他消息中心服务器也同样注册到此指定节点下时,已启动的指定节点将捕获到变更内容“新启动的消息中心服务器的注册信息”发送给消息中心服务器。

步骤103、消息中心服务器获取到指定节点上的其他消息中心服务器的注册信息,并根据其他消息中心服务器的注册信息中的集群信息,判断其他消息中心服务器与当前消息中心服务器是否归属于同一个集群,若不归属于同一个集群,则消息中心服务器与其他消息中心服务器之间建立双向桥接关系。

在本实施例中,具体的,消息中心服务器获取配置中心装置中指定节点上的其他消息中心服务器的注册信息;然后消息中心服务器根据其他消息中心服务器的注册信息中的集群信息,判断其他消息中心服务器与当前消息中心服务器是否归属于同一个集群;若归属于同一个集群,则消息中心服务器与其他消息中心服务器之间不建立双向桥接关系;若不归属于同一个集群,则消息中心服务器与其他消息中心服务器之间建立双向桥接关系。

其中,消息中心服务器与其他消息中心服务器之间建立双向桥接关系,具体包括了消息中心服务器与其他消息中心服务器建立桥接关系,同时,新启动的其他消息中心服务器,也会根据相同规则判断是否需要桥接,然后与消息中心服务器建立桥接关系;从而通过此方式实现消息中心服务器之间的双向桥接关系的建立。桥接关系为ActiveMQ消息中心服务器之间的一种网络连接,可以实现消息中心服务器间消息的传递,从而增加消息转发能力,防止消息积压在某个消息中心服务器上。

在步骤103之后,还包括:

步骤104、配置中心装置确定与其他消息中心服务器之间的网络断开,则销毁指定节点上的其他消息中心服务器的注册信息;消息中心服务器监听到指定节点上的其他消息中心服务器的注册信息消失,则消息中心服务器确定其他消息中心服务器发生异常,并销毁与异常的其他消息中心服务器之间的双向桥接关系。

在本实施例中,具体的,各个消息中心服务器会与配置中心之间存在心跳检测;当其他消息中心服务器发生异常时,异常包括了宕机和离线,其他消息中心服务器与配置中心装置的心跳断开,此时配置中心装置确定与其他消息中心服务器之间的网络断开,则配置中心装置销毁指定节点上的其他消息中心服务器的注册信息。消息中心服务器监听到指定节点的变化后,即监听到指定节点上的其他消息中心服务器的注册信息消失,从而消息中心服务器可以确定其他消息中心服务器发生异常,此时消息中心服务器销毁与异常的其他消息中心服务器之间的双向桥接关系。从而在当消息中心服务器捕获到指定节点中的注册信息减少时,则确定其他消息中心服务器有宕机或离线的情况发生;在线的所有消息中心服务器则判断是否曾与这些异常的消息中心服务器建立过双向桥接关系,如有则销毁双向桥接关系。避免消息无效的传递。

当发生异常的消息中心服务器恢复时,则又继续注册到指定节点上,消息中心服务器也会再次对新发现的消息中心服务器进行双向桥接关系的建立。

本实施例通过在消息中心服务器在启动时,消息中心服务器向配置中心装置中的指定节点下,写入与消息中心服务器对应的注册信息;配置中心装置确定指定节点,接收到其他消息中心服务器发送的注册信息时,通知消息中心服务器获取指定节点上的其他消息中心服务器的注册信息;消息中心服务器获取指定节点上其他消息中心服务器的注册信息,并根据其他消息中心服务器的注册信息中的集群信息,判断其他消息中心服务器与当前消息中心服务器是否归属于同一个集群,若不归属于同一个集群,则消息中心服务器与其他消息中心服务器之间建立双向桥接关系。同时,消息中心服务器监听到指定节点上的其他消息中心服务器的注册信息消失,则消息中心服务器确定其他消息中心服务器发生异常,并销毁与异常的其他消息中心服务器之间的双向桥接关系。从而通过由配置中心装置的指定节点记录消息中心服务器的注册信息,由消息中心服务器监听指定节点变化,进而实现其他消息中心服务器上线、离线的判断,完成弹性扩展,从而实时调整各服务器集群之间的消息中心服务器的双向桥接关系,避免了静态桥接重启服务、组播桥接对网络的影响。

图2为本发明实施例二提供的基于分布式消息的设备处理方法的流程图,在实施例一的基础上如图2所示,本实施例的方法,还包括:

步骤201、客户端装置向配置中心装置发送消费者配置信息,其中,配置信息包括消费者会话级别、线程数。

在本实施例中,具体的,客户端装置可以向配置中心装置发送消费者配置信息,其中,消费者配置信息包括了消费者会话级别、线程数。

步骤202、配置中心装置接收客户端装置发送的消费者配置信息,并对消费者配置信息中的各信息进行调整,将调整后的消费者配置信息发送给客户端装置,以使客户端装置接收调整后的消费者配置信息。

其中,步骤202的具体实现方式为:

配置中心装置接收客户端装置发送的消费者配置信息,并对消费者配置信息进行调整,以生成调整后的消费者会话级别、调整后的线程数;

配置中心装置通知客户端装置发送的消费者配置信息已发生变化,并通知客户端装置从配置中心装置记录消费者配置信息的节点中获取信息。

配置中心装置接收客户端装置发送的配置项获取请求,并根据配置项获取请求,将调整后的消费者配置信息发送给客户端装置,其中,调整后的配置信息包括了调整后的消费者会话级别、调整后的线程数;

客户端装置接收并保存配置中心装置发送的调整后的配置信息,并根据调整后的消费者会话级别、调整后的线程数,动态修改消费者会话级别以及修改线程数。

在本实施例中,具体的,配置中心装置接收客户端装置发送的消费者配置信息,并对消费者配置信息中的各信息进行调整,将调整后的消费者配置信息发送给客户端装置;客户端装置接收调整后的消费者配置信息,然后实现消费者消息处理线程的增减、消费水平的调整。

具体来说,配置中心装置接收客户端装置发送的消费者配置信息,配置中心装置可以对消费者配置信息中的各信息进行调整,生成调整后的消费者会话级别、调整后的线程数。然后,配置中心装置可以去通知客户端装置发送的消费者配置信息已发生变化,并配置中心装置通知客户端装置,可以从配置中心装置记录消费者配置信息的节点上去获取发送变化后的消费者配置信息,使得在客户端装置随应用系统启动时,客户端装置向配置中心装置发起配置项获取请求。配置中心装置接收客户端装置发送的配置项获取请求,配置中心装置根据配置项获取请求,将调整后的消费者配置信息发送给客户端装置,调整后的消费者配置信息包括了调整后的消费者会话级别、调整后的线程数。客户端装置接收配置中心装置发送的调整后的消费者配置信息,并且客户端装置将调整后的消费者配置信息保存在本地;然后客户端装置根据调整后的消费者配置信息,通过Spring框架实时加载,实现与消息中心服务器的连接池创建、消息队列初始化、消息发送者和接收者的建立等操作;并且,客户端装置根据调整后的消费者会话级别、调整后的线程数,修改消费者会话级别,并修改线程数,从而实现消费者消息处理线程的增减、消费水平的调整。

本实施例通过在消息中心服务器在启动时,消息中心服务器向配置中心装置中的指定节点下,写入与消息中心服务器对应的注册信息;配置中心装置确定指定节点,接收到其他消息中心服务器发送的注册信息时,通知消息中心服务器获取指定节点上的其他消息中心服务器的注册信息;消息中心服务器获取指定节点上其他消息中心服务器的注册信息,并根据其他消息中心服务器的注册信息中的集群信息,判断其他消息中心服务器与当前消息中心服务器是否归属于同一个集群,若不归属于同一个集群,则消息中心服务器与其他消息中心服务器之间建立双向桥接关系。同时,消息中心服务器监听到指定节点上的其他消息中心服务器的注册信息消失,则消息中心服务器确定其他消息中心服务器发生异常,并销毁与异常的其他消息中心服务器之间的双向桥接关系。从而通过由配置中心装置的指定节点记录消息中心服务器的注册信息,由消息中心服务器监听指定节点变化,进而实现其他消息中心服务器上线、离线的判断,完成弹性扩展,从而实时调整各服务器集群之间的消息中心服务器的双向桥接关系,避免了静态桥接重启服务、组播桥接对网络的影响。并且,通过配置中心装置向客户端装置推送消费者会话级别、线程数,并修改客户端装置的会话级别、线程数,可实现消费者处理能力的弹性扩展;同时,客户端装置保存会话级别和线程数,使得应用程序不再直接绑定消息中心服务器的地址和集群信息等信息。

图3为本发明实施例三提供的基于分布式消息的设备处理系统的结构示意图,如图3所示,本实施例提供的系统,包括:

消息中心服务器31和配置中心装置32;

消息中心服务器31,用于在消息中心服务器31在启动时,消息中心服务器31向配置中心装置32中的指定节点下,写入与消息中心服务器31对应的注册信息,注册信息包括集群信息;

配置中心装置32,用于确定指定节点接收到其他消息中心服务器31发送的注册信息时,通知消息中心服务器31获取指定节点上的其他消息中心服务器31的注册信息;

消息中心服务器31,还用于用于获取到指定节点上的其他消息中心服务器31的注册信息,并根据其他消息中心服务器31的注册信息中的集群信息,判断其他消息中心服务器31与当前消息中心服务器31是否归属于同一个集群,若不归属于同一个集群,则消息中心服务器31与其他消息中心服务器31之间建立双向桥接关系。

配置中心装置32,还用于:

确定与其他消息中心服务器31之间的网络断开,则销毁指定节点上的其他消息中心服务器31的注册信息。

消息中心服务器31,还用于:

在消息中心服务器31与其他消息中心服务器31之间建立双向桥接关系之后,监听到指定节点上的其他消息中心服务器31的注册信息消失,则消息中心服务器31确定其他消息中心服务器31发生异常,并销毁与异常的其他消息中心服务器31之间的双向桥接关系。

本实施例的基于分布式消息的设备处理系统可执行本发明实施例一提供的基于分布式消息的设备处理方法,其实现原理相类似,此处不再赘述。

本实施例通过在消息中心服务器在启动时,消息中心服务器向配置中心装置中的指定节点下,写入与消息中心服务器对应的注册信息;配置中心装置确定指定节点,接收到其他消息中心服务器发送的注册信息时,通知消息中心服务器获取指定节点上的其他消息中心服务器的注册信息;消息中心服务器获取指定节点上其他消息中心服务器的注册信息,并根据其他消息中心服务器的注册信息中的集群信息,判断其他消息中心服务器与当前消息中心服务器是否归属于同一个集群,若不归属于同一个集群,则消息中心服务器与其他消息中心服务器之间建立双向桥接关系。同时,消息中心服务器监听到指定节点上的其他消息中心服务器的注册信息消失,则消息中心服务器确定其他消息中心服务器发生异常,并销毁与异常的其他消息中心服务器之间的双向桥接关系。从而通过由配置中心装置的指定节点记录消息中心服务器的注册信息,由消息中心服务器监听指定节点变化,进而实现其他消息中心服务器上线、离线的判断,完成弹性扩展,从而实时调整各服务器集群之间的消息中心服务器的双向桥接关系,避免了静态桥接重启服务、组播桥接对网络的影响。

图4为本发明实施例四提供的基于分布式消息的设备处理系统的结构示意图,在实施例三的基础上,如图4所示,本实施例提供的系统,包括:客户端装置41;

客户端装置41,用于向配置中心装置32发送消费者配置信息,其中,消费者配置信息包括消费者会话级别、线程数;

配置中心装置32,还用于接收客户端装置41发送的消费者配置信息,并对消费者配置信息中的各信息进行调整,将调整后的消费者配置信息发送给客户端装置41,以使客户端装置41接收调整后的消费者配置信息。

配置中心装置32,具体用于:

接收客户端装置41发送的消费者配置信息,并对消费者配置信息进行调整,以生成调整后的消费者会话级别、调整后的线程数;

通知客户端装置41发送的消费者配置信息已发生变化,并通知客户端装置41从配置中心装置32记录消费者配置信息的节点中获取信息。

接收客户端装置41发送的配置项获取请求,并根据配置项获取请求,将调整后的消费者配置信息发送给客户端装置41,其中,调整后的配置信息包括了调整后的消费者会话级别、调整后的线程数;

客户端装置41,具体用于:

接收并保存配置中心装置32发送的调整后的配置信息,并根据调整后的消费者会话级别、调整后的线程数,动态修改消费者会话级别以及修改线程数。

本实施例的基于分布式消息的设备处理系统可执行本发明实施例二提供的基于分布式消息的设备处理方法,其实现原理相类似,此处不再赘述。

本实施例通过在消息中心服务器在启动时,消息中心服务器向配置中心装置中的指定节点下,写入与消息中心服务器对应的注册信息;配置中心装置确定指定节点,接收到其他消息中心服务器发送的注册信息时,通知消息中心服务器获取指定节点上的其他消息中心服务器的注册信息;消息中心服务器获取指定节点上其他消息中心服务器的注册信息,并根据其他消息中心服务器的注册信息中的集群信息,判断其他消息中心服务器与当前消息中心服务器是否归属于同一个集群,若不归属于同一个集群,则消息中心服务器与其他消息中心服务器之间建立双向桥接关系。同时,消息中心服务器监听到指定节点上的其他消息中心服务器的注册信息消失,则消息中心服务器确定其他消息中心服务器发生异常,并销毁与异常的其他消息中心服务器之间的双向桥接关系。从而通过由配置中心装置的指定节点记录消息中心服务器的注册信息,由消息中心服务器监听指定节点变化,进而实现其他消息中心服务器上线、离线的判断,完成弹性扩展,从而实时调整各服务器集群之间的消息中心服务器的双向桥接关系,避免了静态桥接重启服务、组播桥接对网络的影响。并且,通过配置中心装置向客户端装置推送消费者会话级别、线程数,并修改客户端装置的会话级别、线程数,可实现消费者处理能力的弹性扩展;同时,客户端装置保存会话级别和线程数,使得应用程序不再直接绑定消息中心服务器的地址和集群信息等信息。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1