CN107315641A - 基于Qconf的消息队列高可用系统及方法 - Google Patents
基于Qconf的消息队列高可用系统及方法 Download PDFInfo
- Publication number
- CN107315641A CN107315641A CN201710390305.1A CN201710390305A CN107315641A CN 107315641 A CN107315641 A CN 107315641A CN 201710390305 A CN201710390305 A CN 201710390305A CN 107315641 A CN107315641 A CN 107315641A
- Authority
- CN
- China
- Prior art keywords
- qconf
- message queue
- service
- nodes
- port
- 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
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于Qconf的消息队列高可用系统及方法,该系统包括应用程序端、Qconf客户端、Qconf服务端、Qconf管理端、Qconf监控节点和消息队列服务端:Qconf客户端和Qconf服务端交互,获取最新的消息队列zk服务节点信息;Qconf服务端指zookeeper集群,存储消息队列zk服务节点信息;Qconf管理端通过调用Qconf服务端接口,对消息队列zk服务节点进行添加、删除、更新和获取操作;Qconf监控节点监控所述消息队列zk服务节点存活;本发明可用性高,当消息队列集群某个成员故障时,不会影响应用程序访问消息队列集群,大大提升了消息队列服务可用性;易用性好、维护成本低、稳定性强大,通过Qconf、应用程序和消息队列解耦,调整消息队列服务,应用程序不需要修改配置,大大降低了服务耦合度。
Description
技术领域
本发明属于计算机技术领域,主要应用于消息队列服务高可用场景,用于提升消息队列服务可用性和灵活性。
背景技术
对于互联网公司而言,随着业务需求越来越复杂,为了降低服务之间的耦合度,提升服务模块化,消息队列使用越来越广泛,消息队列服务的可用性也显得越来越重要。传统消息队列使用方法具有如下缺点:
(1)可用性低:一旦某个消息队列服务故障,应用程序就无法访问消息队列服务。
(2)维护成本高:采用了比较复杂的架构提高消息队列可用性,运维成本高。
(3)引入新的隐患:由于采用的高可用架构本身存在隐患,导致整个高可用架构可用性不高。
(4)易用性差:虽然实现了高可用,但是不方便使用,导致可操作性低下。
发明内容
本发明针对现有技术的不足,提供一种基于Qconf的消息队列高可用系统及方法,基于Qconf可以注册消息队列zk服务节点,不但可以实现消息队列服务高可用,同时可以实现负载均衡,该系统可以支持大规模消息队列高可用和负载均衡。
本发明的目的是通过以下技术方案来实现的:一种基于Qconf的消息队列高可用系统,该系统包括应用程序端、Qconf客户端、Qconf服务端、Qconf管理端、Qconf监控节点和消息队列服务端:
应用程序端:运行应用程序的服务器,应用程序调用对应的Qconf扩展接口,解析传入的参数:zk服务节点,得到消息队列的IP和端口,然后应用程序和所述消息队列建立连接,进而和所述消息队列交互读写请求;
Qconf客户端:包括Qconf agent服务、应用程序对应的Qconf扩展;Qconf客户端和应用程序同机部署,用于和Qconf服务端交互,获取最新的消息队列zk服务节点信息;
Qconf服务端:部署zookeeper集群,存储消息队列zk服务节点信息;
Qconf管理端:通过调用Qconf服务端接口,对消息队列zk服务节点进行添加、删除、更新和获取操作,Qconf管理端部署Qconf管理扩展,用于管理人员管理zk服务节点;
Qconf监控节点:部署Qconf监控服务,监控消息队列zk服务节点存活,能够实现所述消息队列zk服务节点上下线;在一台服务器上部署Qconf监控节点,可以监控Qconf服务端所有的消息队列zk服务节点;
消息队列服务端:是部署消息队列的服务器,采用集群形式部署消息队列,不同的消息队列集群,采用端口号唯一标识;所有消息队列集群的IP和端口信息,保存在消息队列元信息中。
进一步地,所述消息队列服务端包括消息队列服务管理模块:采用一个磁盘节点和两个内存节点形式部署消息队列;一个消息队列集群中所有成员的端口保持一致,不同的消息队列集群,端口不同,采用端口唯一标识所述消息队列集群。
进一步地,所述Qconf管理端包括管理zk服务节点模块,需要传入的参数:zk服务节点、消息队列的IP以及端口和zookeeper连接字符串;zookeeper连接字符串表示zookeeper集群所有成员的IP和端口组成的字符串;
通过扫描消息队列元信息,获取消息队列IP和端口,所述端口是指zk服务节点对应的消息队列集群的端口,每个zk服务节点表示一个消息队列集群;所述zk服务节点的值是该端口对应的消息队列集群所有成员的IP和端口;对zk服务节点的操作包括:添加zk服务节点:调用Qconf管理端接口,进行添加zk服务节点、为zk服务节点新增值、为zk服务节点删除值、zk服务节点上下线、获取zk服务节点的所有成员。
进一步地,所述Qconf客户端包括Qconf客户端管理模块,需要传入的参数:zookeeper连接字符串;按照Qconf部署要求,部署Qconf客户端服务,Qconf客户端配置文件需要设置zookeeper连接字符串,然后启动Qconf客户端服务;查看Qconf客户端进程是否启动;如果修改了Qconf客户端配置文件,需要重启Qconf客户端服务;部署Qconf客户端服务后,按照Qconf扩展部署要求在应用程序端部署应用程序相应的Qconf扩展。
进一步地,所述应用程序端包括解析服务节点模块和应用程序访问模块;
所述解析服务节点模块需要传入的参数:zk服务节点;在应用程序端部署Qconf客户端服务后,应用程序调用相应的Qconf扩展接口解析zk服务节点,得到消息队列集群成员;
所述应用程序访问模块需要传入的参数:消息队列的IP和端口;解析服务节点模块执行结束后,得到某个消息队列的IP和端口,应用程序根据所述消息队列IP和端口,和所述消息队列建立连接,应用程序可以发送读写请求,消息队列处理这些读写请求。
进一步地,所述Qconf监控节点包括监控服务节点模块:
需要传入参数:zookeeper集群所有成员IP和端口;
在Qconf监控节点部署Qconf监控服务,修改Qconf监控配置文件中zookeeper参数值为所述zookeeper集群所有成员IP和端口,然后启动Qconf监控服务;查看启动进程;Qconf监控服务启动后,如果所述消息队列某个成员故障,所述消息队列集群对应的zk服务节点下线所述消息队列集群的故障成员,这样,应用程序每次获取到的消息队列服务都是状态存活的。
进一步地,所述Qconf监控节点还包括服务节点web管理模块:在Qconf监控节点部署web管理页面,对所述zk服务节点进行添加、删除、更新和查看操作。
一种基于Qconf的消息队列高可用方法,该方法包括以下步骤:
(1)在多台服务器上部署消息队列集群,在消息队列元信息中记录消息队列集群所有成员的IP和端口;
(2)在Qconf服务端部署zookeeper集群,zookeeper集群所有成员的IP和端口记为zookeeper连接字符串;zookeeper集群存储zk服务节点信息,包括zk服务节点名称和zk服务节点值;在Qconf管理端部署Qconf管理扩展,调用Qconf管理扩展接口,对zk服务节点进行添加、删除、新增和获取操作;
(3)Qconf监控节点调用Qconf服务端接口,获取到Qconf服务端所有的zk服务节点以及zk服务节点值,检测端口存活进行对相应的zk服务节点上下线操作;
(4)在Qconf客户端部署Qconf客户端服务,Qconf客户端自动和Qconf服务端建立连接,从Qconf客户端可以获取到Qconf服务端最新的zk服务节点;
(5)应用程序端的应用程序访问模块传入zk服务节点给解析服务节点模块,解析服务节点模块调用Qconf客户端服务获取到zk服务节点对应的消息队列的IP和端口,然后返回给应用程序访问模块。
本发明的有益效果是:
(1)可用性高:当消息队列集群某个成员故障时,不会影响应用程序访问消息队列集群,大大提升了消息队列服务可用性。
(2)易用性好:应用程序只需要一行代码,就可以获得所述消息队列IP和端口,对于应用程序开发者而言,使用方便简洁。
(3)维护成本低:整个系统简单稳定,便于管理人员维护。
(4)稳定性强大:目前Qconf技术成熟,zookeeper集群本身具有高可用,整体稳定性比较好,不会引入新的隐患。
(5)降低服务耦合度:通过Qconf,应用程序和消息队列解耦,调整消息队列服务,应用程序不需要修改配置,大大降低了服务耦合度。
附图说明
图1是本发明基于Qconf的消息队列高可用方法总体架构图;
图2是本发明基于Qconf的消息队列高可用系统各个模块流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细说明。
如图1所示,本发明提供的一种基于Qconf的消息队列高可用系统,该系统包括应用程序端、Qconf客户端、Qconf服务端、Qconf管理端、Qconf监控节点和消息队列服务端六个单元:
(1)应用程序端
应用程序端是运行应用程序的Linux服务器,应用程序调用对应的Qconf扩展接口,解析传入的参数:zk(zookeeper)服务节点,得到消息队列的IP和端口,然后应用程序和所述消息队列建立连接,进而和所述消息队列交互读写请求。
(2)Qconf客户端
包括Qconf agent服务、应用程序对应的Qconf扩展,统称为Qconf客户端。要求和应用程序同机部署,主要功能是和Qconf服务端交互,获取最新的消息队列zk服务节点信息。
(3)Qconf服务端
Qconf服务端主要是指zookeeper集群,功能是存储消息队列zk服务节点信息。zookeeper集群本身具有高可用和分布式特性,保证了Qconf服务端的可用性和可扩展性。同时,zookeeper集群具有通知机制,一旦消息队列zk服务节点发生修改,zookeeper可以实时通知所述Qconf客户端,从而保证所述应用程序可以获取最新的消息队列zk服务节点。
(4)Qconf管理端
通过调用Qconf服务端接口,对消息队列zk服务节点进行添加、删除、更新和获取操作,需要在Qconf管理端部署Qconf管理扩展,以便管理人员管理zk服务节点。可以采用php语言编写管理代码来管理zk服务节点,也可以在web页面上实现zk服务节点添加、删除、更新和获取功能,方便管理人员操作。
(5)Qconf监控节点
通过Qconf管理端在Qconf服务端注册消息队列zk服务节点后,在Qconf监控节点上部署Qconf监控服务,监控所述消息队列zk服务节点存活,可以实现所述消息队列zk服务节点上下线,从而实现消息队列高可用。Qconf监控节点不仅可以监控所述消息队列zk服务节点存活,还可以获取Qconf服务端所有zk服务节点信息,从而可以在web页面展示Qconf服务端所有zk服务节点信息。
在一台服务器上部署Qconf监控节点,可以监控Qconf服务端所有的消息队列zk服务节点。
(6)消息队列服务端
主要是部署消息队列的服务器,一般情况下,采用集群形式部署消息队列,以便实现消息队列自身的高可用。不同的消息队列集群,采用端口号唯一标识。所有消息队列集群的IP和端口信息,保存在消息队列元信息中。所述消息队列可以是Rabbitmq消息队列,也可以是其他类型的消息队列。
如图2所示,每个单元具体包括的模块如下:
(1)消息队列服务管理模块
在消息队列服务端,为了提高消息队列的可用性,采用集群形式在多台服务器上部署消息队列,本发明采用一个磁盘节点和两个内存节点形式部署消息队列。
一个消息队列集群中所有成员的端口保持一致,不同的消息队列集群,端口不同,采用端口唯一标识所述消息队列集群,便于维护和管理。
所有的消息队列集群的IP和端口,保存在消息队列元信息中,便于管理zk服务节点模块调用。
(2)管理zk服务节点模块
需要传入的参数:zk服务节点、消息队列的IP以及端口和zookeeper连接字符串;
zookeeper连接字符串表示zookeeper集群所有成员的IP和端口组成的字符串,如下所示:
zk_ip1:zk_port1,zk_ip2:zk_port1,zk_ip3:zk_port1
zk_port1是zookeeper集群的端口号,zk_ip1、zk_ip2、zk_ip3分别表示zookeeper集群成员的IP。
在Qconf管理端,通过扫描所述消息队列元信息,获取到所述消息队列IP和端口,zk服务节点采用如下形式:
/db/mq/mq_端口
说明:这里的端口是指所述zk服务节点对应的消息队列集群的端口。每个zk服务节点表示一个消息队列集群;
所述zk服务节点的值是该端口对应的消息队列集群所有成员的IP和端口,如下所示:
IP1:port1,IP2:port1:IP3:port1
说明:IP1、IP2和IP3分别代表所述消息队列集群所有成员的IP,port1是所述消息队列集群的端口。
本模块主要包括:
a)添加zk服务节点:
调用Qconf管理端接口,进行添加zk服务节点,如下所示:
$qzk=new QConfZK("zookeeper连接字符串");
$service_path="/db/mq/mq_port1";
$services_input=array("IP1:port1"=>QCONF_STATUS_UP,"IP2:port1"=>QCONF_STATUS_UP,"IP3:port1"=>QCONF_STATU S_UP);
$qzk->servicesSet($service_path,$services_input);
说明:port1表示所述消息队列集群的端口号,所述消息队列集群中所有成员的端口号均为port1,所述成员的IP分别为IP1、IP2和IP3。
b)为zk服务节点新增值
当某个消息队列集群需要扩容或者调整服务器时,需要为对应的zk服务节点新增值,操作如下:
$qzk=new QConfZK("zookeeper连接字符串");
$service_path="/db/mq/mq_port1";
$qzk->serviceAdd($service_path,"IP4:port1",QCONF_STATUS_UP);
说明:IP4是新增成员的服务器IP
c)为zk服务节点删除值
当某个消息队列集群调整或者服务器调整,需要下线某个成员时,操作如下:
$qzk=new QConfZK("zookeeper连接字符串");
$service_path="/db/mq/mq_port1";
$qzk->serviceDelete($service_path,"IP3:port1");
说明:假设IP3服务器上的消息队列需要从对应的消息队列集群中去掉,本示例将IP3:port1对应的消息队列成员从所述zk服务节点中去掉,这样,应用程序将无法访问到IP3:port1所对应的消息队列,保证了消息队列服务高可用。
d)zk服务节点上下线
如果zk服务节点中成员IP1:port1需要下线,可以如下操作:
$qzk=new QConfZK("zookeeper连接字符串");
$service_path="/db/mq/mq_port1";
$qzk->serviceOffline($service_path,"IP1:port1");
上线IP1:port1操作如下:
$service_path="/db/mq/mq_port1";
$qzk->serviceUp($service_path,"IP1:port1");
e)获取zk服务节点的所有成员
可以通过如下方式获取到某个zk服务节点对应的所有所述消息队列集群成员:
$qzk=new QConfZK("zookeeper连接字符串");
$service_path="/db/mq/mq_port1";
$services_list=$qzk->servicesGet($service_path);
(3)Qconf客户端管理模块
需要传入的参数:zookeeper连接字符串
在Qconf客户端,按照Qconf部署要求,需要部署Qconf客户端服务,所述Qconf客户端配置文件需要设置所述zookeeper连接字符串,然后启动Qconf客户端服务:
#cd/usr/local/qconf/bin&&sh agent-cmd.sh.sh start
查看Qconf客户端进程是否启动,如下:
#ps–ef|egrep qconf_agent|grep–v grep
如果修改了Qconf客户端配置文件,需要重启Qconf客户端服务:
#cd/usr/local/qconf/bin&&sh agent-cmd.sh restart
部署Qconf客户端服务后,需要按照Qconf扩展部署要求在应用程序端部署应用程序相应的Qconf扩展。
(4)解析服务节点模块
需要传入的参数:zk服务节点
在应用程序端,部署Qconf客户端服务后,应用程序调用相应的Qconf扩展接口解析所述zk服务节点,得到所述消息队列集群成员,如下所示:
$mq_host=QConf::getHost("db/mq/mq_port1");
说明:port1是某个消息队列集群的标识,db/mq/mq_port1标识port1对应的消息队列集群的Qconfzk服务节点,通过如上操作,可以得到port1对应的消息队列集群的一个成员。每次调用如上Qconf扩展接口,得到不同的所述成员,从而实现所述消息队列负载均衡。
(5)应用程序访问模块
需要传入的参数:消息队列的IP和端口;
解析服务节点模块执行结束后,得到某个消息队列的IP和端口,然后,所述应用程序根据所述消息队列IP和端口,和所述消息队列建立连接,接下来,应用程序可以发送读写请求,消息队列处理这些读写请求。
(6)监控服务节点模块
需要传入参数:zookeeper集群所有成员IP和端口
在Qconf监控节点部署Qconf监控服务,修改Qconf监控配置文件中zookeeper参数值为所述zookeeper集群所有成员IP和端口,然后启动Qconf监控服务:
#cd/usr/local/qconf/monitor&&sh bin/monitor-cmd.sh start
通过如下操作查看启动进程:
#ps-ef|grep qconf_monitor|grep-v grep
所述Qconf监控服务启动后,如果所述消息队列某个成员故障,所述消息队列集群对应的zk服务节点下线所述消息队列集群的故障成员,这样,应用程序每次获取到的消息队列服务,都是状态存活的,从而提高了消息队列服务可用性。
(7)服务节点web管理模块
本模块可选。在Qconf监控节点,部署web管理页面,方便对所述zk服务节点进行添加、删除、更新和查看操作。采用web管理页面形式,简化了zk服务节点管理,从而降低了维护成本。
一种基于Qconf的消息队列高可用方法,该方法包括:
(1)调用消息队列服务管理模块,在多台服务器上部署消息队列集群,在消息队列元信息中记录消息队列集群所有成员的IP和端口;
(2)调用管理zk服务节点模块,在Qconf服务端部署zookeeper集群,zookeeper集群所有成员的IP和端口,记为zookeeper连接字符串。zookeeper集群存储zk服务节点信息,包括zk服务节点名称和zk服务节点值,zk服务节点值格式为“IP1:port1”,如果存在多个IP和端口,以逗号分隔。在Qconf管理端部署Qconf管理扩展,调用Qconf管理扩展接口,对zk服务节点进行添加、删除、新增和获取操作。
(3)启动监控服务节点模块,监控服务节点模块调用Qconf服务端接口,获取到Qconf服务端所有的zk服务节点以及zk服务节点值,zk服务节点值是以IP:端口形式存在,监控服务节点模块检测所述端口存活进行对相应的zk服务节点上线下操作。
服务节点web管理模块调用管理zk服务节点模块,在web页面,对zk服务节点进行添加、删除、新增操作,服务节点web管理模块调用监控服务节点模块,在web页面上对zk服务节点进行上下线和查看操作,简化zk服务节点管理工作。
(4)调用Qconf客户端管理模块,在Qconf客户端部署Qconf客户端服务,Qconf客户端自动和Qconf服务端建立连接,从Qconf客户端可以获取到Qconf服务端最新的zk服务节点。
(5)应用程序访问模块传入zk服务节点给解析服务节点模块,解析服务节点模块调用Qconf客户端服务获取到zk服务节点对应的消息队列的IP和端口,然后返回给应用程序访问模块。
上述实施例只是本发明的举例,尽管为说明目的公开了本发明的最佳实例和附图,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例和附图所公开的内容。
Claims (8)
1.一种基于Qconf的消息队列高可用系统,其特征在于,该系统包括应用程序端、Qconf客户端、Qconf服务端、Qconf管理端、Qconf监控节点和消息队列服务端:
应用程序端:运行应用程序的服务器,应用程序调用对应的Qconf扩展接口,解析传入的参数:zk服务节点,得到消息队列的IP和端口,然后应用程序和所述消息队列建立连接,进而和所述消息队列交互读写请求;
Qconf客户端:包括Qconf agent服务、应用程序对应的Qconf扩展;Qconf客户端和应用程序同机部署,用于和Qconf服务端交互,获取最新的消息队列zk服务节点信息;
Qconf服务端:部署zookeeper集群,存储消息队列zk服务节点信息;
Qconf管理端:通过调用Qconf服务端接口,对消息队列zk服务节点进行添加、删除、更新和获取操作,Qconf管理端部署Qconf管理扩展,用于管理人员管理zk服务节点;
Qconf监控节点:部署Qconf监控服务,监控消息队列zk服务节点存活,能够实现所述消息队列zk服务节点上下线;在一台服务器上部署Qconf监控节点,可以监控Qconf服务端所有的消息队列zk服务节点;
消息队列服务端:是部署消息队列的服务器,采用集群形式部署消息队列,不同的消息队列集群,采用端口号唯一标识;所有消息队列集群的IP和端口信息,保存在消息队列元信息中。
2.根据权利要求1所述的一种基于Qconf的消息队列高可用系统,其特征在于,所述消息队列服务端包括消息队列服务管理模块:采用一个磁盘节点和两个内存节点形式部署消息队列;一个消息队列集群中所有成员的端口保持一致,不同的消息队列集群,端口不同,采用端口唯一标识所述消息队列集群。
3.根据权利要求1所述的一种基于Qconf的消息队列高可用系统,其特征在于,所述Qconf管理端包括管理zk服务节点模块,需要传入的参数:zk服务节点、消息队列的IP以及端口和zookeeper连接字符串;zookeeper连接字符串表示zookeeper集群所有成员的IP和端口组成的字符串;
通过扫描消息队列元信息,获取消息队列IP和端口,所述端口是指zk服务节点对应的消息队列集群的端口,每个zk服务节点表示一个消息队列集群;所述zk服务节点的值是该端口对应的消息队列集群所有成员的IP和端口;对zk服务节点的操作包括:添加zk服务节点:调用Qconf管理端接口,进行添加zk服务节点、为zk服务节点新增值、为zk服务节点删除值、zk服务节点上下线、获取zk服务节点的所有成员。
4.根据权利要求1所述的一种基于Qconf的消息队列高可用系统,其特征在于,所述Qconf客户端包括Qconf客户端管理模块,需要传入的参数:zookeeper连接字符串;按照Qconf部署要求,部署Qconf客户端服务,Qconf客户端配置文件需要设置zookeeper连接字符串,然后启动Qconf客户端服务;查看Qconf客户端进程是否启动;如果修改了Qconf客户端配置文件,需要重启Qconf客户端服务;部署Qconf客户端服务后,按照Qconf扩展部署要求在应用程序端部署应用程序相应的Qconf扩展。
5.根据权利要求1所述的一种基于Qconf的消息队列高可用系统,其特征在于,所述应用程序端包括解析服务节点模块和应用程序访问模块;
所述解析服务节点模块需要传入的参数:zk服务节点;在应用程序端部署Qconf客户端服务后,应用程序调用相应的Qconf扩展接口解析zk服务节点,得到消息队列集群成员;
所述应用程序访问模块需要传入的参数:消息队列的IP和端口;解析服务节点模块执行结束后,得到某个消息队列的IP和端口,应用程序根据所述消息队列IP和端口,和所述消息队列建立连接,应用程序可以发送读写请求,消息队列处理这些读写请求。
6.根据权利要求1所述的一种基于Qconf的消息队列高可用系统,其特征在于,所述Qconf监控节点包括监控服务节点模块:
需要传入参数:zookeeper集群所有成员IP和端口;
在Qconf监控节点部署Qconf监控服务,修改Qconf监控配置文件中zookeeper参数值为所述zookeeper集群所有成员IP和端口,然后启动Qconf监控服务;查看启动进程;Qconf监控服务启动后,如果所述消息队列某个成员故障,所述消息队列集群对应的zk服务节点下线所述消息队列集群的故障成员,这样,应用程序每次获取到的消息队列服务都是状态存活的。
7.根据权利要求6所述的一种基于Qconf的消息队列高可用系统,其特征在于,所述Qconf监控节点还包括服务节点web管理模块:在Qconf监控节点部署web管理页面,对所述zk服务节点进行添加、删除、更新和查看操作。
8.一种应用权利要求1-7任一项系统的消息队列高可用方法,其特征在于,该方法包括以下步骤:
(1)在多台服务器上部署消息队列集群,在消息队列元信息中记录消息队列集群所有成员的IP和端口;
(2)在Qconf服务端部署zookeeper集群,zookeeper集群所有成员的IP和端口记为zookeeper连接字符串;zookeeper集群存储zk服务节点信息,包括zk服务节点名称和zk服务节点值;在Qconf管理端部署Qconf管理扩展,调用Qconf管理扩展接口,对zk服务节点进行添加、删除、新增和获取操作;
(3)Qconf监控节点调用Qconf服务端接口,获取到Qconf服务端所有的zk服务节点以及zk服务节点值,检测端口存活进行对相应的zk服务节点上下线操作;
(4)在Qconf客户端部署Qconf客户端服务,Qconf客户端自动和Qconf服务端建立连接,从Qconf客户端可以获取到Qconf服务端最新的zk服务节点;
(5)应用程序端的应用程序访问模块传入zk服务节点给解析服务节点模块,解析服务节点模块调用Qconf客户端服务获取到zk服务节点对应的消息队列的IP和端口,然后返回给应用程序访问模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710390305.1A CN107315641B (zh) | 2017-05-27 | 2017-05-27 | 基于Qconf的消息队列高可用系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710390305.1A CN107315641B (zh) | 2017-05-27 | 2017-05-27 | 基于Qconf的消息队列高可用系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107315641A true CN107315641A (zh) | 2017-11-03 |
CN107315641B CN107315641B (zh) | 2018-08-14 |
Family
ID=60183962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710390305.1A Active CN107315641B (zh) | 2017-05-27 | 2017-05-27 | 基于Qconf的消息队列高可用系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107315641B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108154431A (zh) * | 2018-01-17 | 2018-06-12 | 北京网信云服信息科技有限公司 | 一种标的募集状态处理方法及装置 |
CN108199896A (zh) * | 2018-01-16 | 2018-06-22 | 中电福富信息科技有限公司 | 基于RabbitMQ的分布式消息发布系统 |
CN109413209A (zh) * | 2018-12-17 | 2019-03-01 | 上海金融期货信息技术有限公司 | 一种基于双队列及注册中心的动态负载均衡方法和系统 |
CN110187972A (zh) * | 2019-05-31 | 2019-08-30 | 上海银行股份有限公司 | 一种基于api的软负载均衡实现方案 |
CN111314114A (zh) * | 2020-01-19 | 2020-06-19 | 苏州浪潮智能科技有限公司 | 一种提高RabbitMQ高可用性的部署方法和系统 |
CN111475537A (zh) * | 2020-04-09 | 2020-07-31 | 杭州趣维科技有限公司 | 基于pulsar的全球数据同步系统 |
CN111600753A (zh) * | 2020-05-13 | 2020-08-28 | 山东汇贸电子口岸有限公司 | 一种云计算环境下智能agent管理系统 |
CN111953506A (zh) * | 2019-05-15 | 2020-11-17 | 北京沃东天骏信息技术有限公司 | 消息处理方法和处理系统 |
CN112783669A (zh) * | 2021-01-06 | 2021-05-11 | 北京同有飞骥科技股份有限公司 | 分布式存储管理方法及系统 |
CN115550361A (zh) * | 2022-09-20 | 2022-12-30 | 三未信安科技股份有限公司 | 一种基于消息队列的集群实现方法 |
CN116893914A (zh) * | 2023-09-11 | 2023-10-17 | 中移(苏州)软件技术有限公司 | 消息处理的方法、消息队列系统、客户端和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102710554A (zh) * | 2012-06-25 | 2012-10-03 | 深圳中兴网信科技有限公司 | 分布式消息系统和分布式消息系统的服务状态检测方法 |
CN103064731A (zh) * | 2012-12-26 | 2013-04-24 | 人民搜索网络股份公司 | 一种提高消息队列系统性能的装置及其方法 |
CN104486108A (zh) * | 2014-12-08 | 2015-04-01 | 畅捷通信息技术股份有限公司 | 基于Zookeeper的节点配置方法和基于Zookeeper的节点配置系统 |
CN104753817A (zh) * | 2013-12-25 | 2015-07-01 | 中国移动通信集团公司 | 一种云计算消息队列服务本地模拟方法和系统 |
CN105338086A (zh) * | 2015-11-04 | 2016-02-17 | 浪潮软件股份有限公司 | 一种分布式的消息转发方法 |
-
2017
- 2017-05-27 CN CN201710390305.1A patent/CN107315641B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102710554A (zh) * | 2012-06-25 | 2012-10-03 | 深圳中兴网信科技有限公司 | 分布式消息系统和分布式消息系统的服务状态检测方法 |
CN103064731A (zh) * | 2012-12-26 | 2013-04-24 | 人民搜索网络股份公司 | 一种提高消息队列系统性能的装置及其方法 |
CN104753817A (zh) * | 2013-12-25 | 2015-07-01 | 中国移动通信集团公司 | 一种云计算消息队列服务本地模拟方法和系统 |
CN104486108A (zh) * | 2014-12-08 | 2015-04-01 | 畅捷通信息技术股份有限公司 | 基于Zookeeper的节点配置方法和基于Zookeeper的节点配置系统 |
CN105338086A (zh) * | 2015-11-04 | 2016-02-17 | 浪潮软件股份有限公司 | 一种分布式的消息转发方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108199896A (zh) * | 2018-01-16 | 2018-06-22 | 中电福富信息科技有限公司 | 基于RabbitMQ的分布式消息发布系统 |
CN108154431A (zh) * | 2018-01-17 | 2018-06-12 | 北京网信云服信息科技有限公司 | 一种标的募集状态处理方法及装置 |
CN108154431B (zh) * | 2018-01-17 | 2021-07-06 | 北京网信云服信息科技有限公司 | 一种标的募集状态处理方法及装置 |
CN109413209A (zh) * | 2018-12-17 | 2019-03-01 | 上海金融期货信息技术有限公司 | 一种基于双队列及注册中心的动态负载均衡方法和系统 |
CN111953506A (zh) * | 2019-05-15 | 2020-11-17 | 北京沃东天骏信息技术有限公司 | 消息处理方法和处理系统 |
CN110187972A (zh) * | 2019-05-31 | 2019-08-30 | 上海银行股份有限公司 | 一种基于api的软负载均衡实现方案 |
CN110187972B (zh) * | 2019-05-31 | 2023-08-01 | 上海银行股份有限公司 | 一种基于api的软负载均衡实现方案 |
CN111314114A (zh) * | 2020-01-19 | 2020-06-19 | 苏州浪潮智能科技有限公司 | 一种提高RabbitMQ高可用性的部署方法和系统 |
CN111475537A (zh) * | 2020-04-09 | 2020-07-31 | 杭州趣维科技有限公司 | 基于pulsar的全球数据同步系统 |
CN111475537B (zh) * | 2020-04-09 | 2023-06-23 | 杭州小影创新科技股份有限公司 | 基于pulsar的全球数据同步系统 |
CN111600753A (zh) * | 2020-05-13 | 2020-08-28 | 山东汇贸电子口岸有限公司 | 一种云计算环境下智能agent管理系统 |
CN111600753B (zh) * | 2020-05-13 | 2023-03-28 | 山东汇贸电子口岸有限公司 | 一种云计算环境下智能agent管理系统 |
CN112783669A (zh) * | 2021-01-06 | 2021-05-11 | 北京同有飞骥科技股份有限公司 | 分布式存储管理方法及系统 |
CN115550361A (zh) * | 2022-09-20 | 2022-12-30 | 三未信安科技股份有限公司 | 一种基于消息队列的集群实现方法 |
CN116893914A (zh) * | 2023-09-11 | 2023-10-17 | 中移(苏州)软件技术有限公司 | 消息处理的方法、消息队列系统、客户端和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107315641B (zh) | 2018-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107315641B (zh) | 基于Qconf的消息队列高可用系统及方法 | |
KR101169117B1 (ko) | 확장 가능하고 자동으로 복제되는 서버 팜 구성 관리인프라스트럭처를 위한 서버 팜, 시스템 및 방법 | |
US6539381B1 (en) | System and method for synchronizing database information | |
JP3980596B2 (ja) | サーバを遠隔かつ動的に構成する方法およびシステム | |
US6973491B1 (en) | System and method for monitoring and managing system assets and asset configurations | |
US6810427B1 (en) | Router table manager | |
US7493518B2 (en) | System and method of managing events on multiple problem ticketing system | |
US20130191516A1 (en) | Automated configuration error detection and prevention | |
CN107343034A (zh) | 基于QConf的Redis高可用系统及方法 | |
US6901594B1 (en) | Apparatus and method for establishing communication between applications | |
US20030220946A1 (en) | Resource list management system | |
CN106506490B (zh) | 一种分布式计算控制方法以及分布式计算系统 | |
CN109284170B (zh) | 一种局域网内usb共享系统及共享方法 | |
JP2010539572A (ja) | ネットワークを管理する方法、ネットワーク管理システム及びコンピュータ・プログラム | |
CN1761944A (zh) | 用于虚拟机的动态服务注册中心 | |
JP3581779B2 (ja) | マルチサーバワークフローシステム | |
US10069941B2 (en) | Scalable event-based notifications | |
US20200159560A1 (en) | Propagating ordered object changes | |
JP2010205047A (ja) | 業務環境生成システム、業務環境生成方法、及び業務環境生成用プログラム | |
JP2000163303A (ja) | ディレクトリデータ変換方法、ディレクトリデータ変換プログラムが記憶された記憶媒体、およびディレクトリ変換サーバ | |
US20030059004A1 (en) | System for synchronizing voice messaging subscriber information | |
US7660882B2 (en) | Deploying network element management system provisioning services | |
CN109067593A (zh) | 一种云计算环境下的ipmi自动化配置装置和方法 | |
CN115811546A (zh) | 用于科技服务实现网络协同分布式处理的系统及其方法 | |
JP3870701B2 (ja) | コンピュータの階層情報管理方法および装置ならびにその処理プログラムを記録した記録媒体 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220714 Address after: 310000 room 801, 8th floor, building 1, No. 108 Xiangyuan Road, Gongshu District, Hangzhou City, Zhejiang Province Patentee after: Hangzhou mingshitang Digital Technology Co.,Ltd. Address before: 310019 room 507, floor 5, building A15, No. 9, Jiusheng Road, Jianggan District, Hangzhou, Zhejiang Province Patentee before: HANGZHOU MISTONG EDUCATION SCIENCE & TECHNOLOGY DEVELOPMENT CO.,LTD. |
|
TR01 | Transfer of patent right |