CN107315641B - 基于Qconf的消息队列高可用系统及方法 - Google Patents

基于Qconf的消息队列高可用系统及方法 Download PDF

Info

Publication number
CN107315641B
CN107315641B CN201710390305.1A CN201710390305A CN107315641B CN 107315641 B CN107315641 B CN 107315641B CN 201710390305 A CN201710390305 A CN 201710390305A CN 107315641 B CN107315641 B CN 107315641B
Authority
CN
China
Prior art keywords
qconf
message queue
service
port
application program
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
CN201710390305.1A
Other languages
English (en)
Other versions
CN107315641A (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.)
Hangzhou mingshitang Digital Technology Co.,Ltd.
Original Assignee
Hangzhou Ming Shitang Education And Science Development Co 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 Hangzhou Ming Shitang Education And Science Development Co Ltd filed Critical Hangzhou Ming Shitang Education And Science Development Co Ltd
Priority to CN201710390305.1A priority Critical patent/CN107315641B/zh
Publication of CN107315641A publication Critical patent/CN107315641A/zh
Application granted granted Critical
Publication of CN107315641B publication Critical patent/CN107315641B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols

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

基于Qconf的消息队列高可用系统及方法
技术领域
本发明属于计算机技术领域,主要应用于消息队列服务高可用场景,用于提升消息队列服务可用性和灵活性。
背景技术
对于互联网公司而言,随着业务需求越来越复杂,为了降低服务之间的耦合度,提升服务模块化,消息队列使用越来越广泛,消息队列服务的可用性也显得越来越重要。传统消息队列使用方法具有如下缺点:
(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服务节点的操作包括:调用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和端口,然后返回给应用程序访问模块。
CN201710390305.1A 2017-05-27 2017-05-27 基于Qconf的消息队列高可用系统及方法 Active CN107315641B (zh)

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 CN107315641A (zh) 2017-11-03
CN107315641B true 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)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108199896A (zh) * 2018-01-16 2018-06-22 中电福富信息科技有限公司 基于RabbitMQ的分布式消息发布系统
CN108154431B (zh) * 2018-01-17 2021-07-06 北京网信云服信息科技有限公司 一种标的募集状态处理方法及装置
CN109413209B (zh) * 2018-12-17 2021-07-09 上海金融期货信息技术有限公司 一种基于双队列及注册中心的动态负载均衡方法和系统
CN111953506A (zh) * 2019-05-15 2020-11-17 北京沃东天骏信息技术有限公司 消息处理方法和处理系统
CN110187972B (zh) * 2019-05-31 2023-08-01 上海银行股份有限公司 一种基于api的软负载均衡实现方案
CN111314114A (zh) * 2020-01-19 2020-06-19 苏州浪潮智能科技有限公司 一种提高RabbitMQ高可用性的部署方法和系统
CN111475537B (zh) * 2020-04-09 2023-06-23 杭州小影创新科技股份有限公司 基于pulsar的全球数据同步系统
CN111600753B (zh) * 2020-05-13 2023-03-28 山东汇贸电子口岸有限公司 一种云计算环境下智能agent管理系统
CN112783669A (zh) * 2021-01-06 2021-05-11 北京同有飞骥科技股份有限公司 分布式存储管理方法及系统
CN116893914A (zh) * 2023-09-11 2023-10-17 中移(苏州)软件技术有限公司 消息处理的方法、消息队列系统、客户端和电子设备

Citations (5)

* Cited by examiner, † Cited by third party
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 浪潮软件股份有限公司 一种分布式的消息转发方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
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 浪潮软件股份有限公司 一种分布式的消息转发方法

Also Published As

Publication number Publication date
CN107315641A (zh) 2017-11-03

Similar Documents

Publication Publication Date Title
CN107315641B (zh) 基于Qconf的消息队列高可用系统及方法
JP3980596B2 (ja) サーバを遠隔かつ動的に構成する方法およびシステム
US6973491B1 (en) System and method for monitoring and managing system assets and asset configurations
US6915457B1 (en) Apparatus and method for monitoring messages forwarded between applications
US7406473B1 (en) Distributed file system using disk servers, lock servers and file servers
US6810427B1 (en) Router table manager
KR101150146B1 (ko) 클라이언트가 서버와 상호작용하는 컴퓨터 구현 방법, 서버가 클라이언트와 상호작용하는 컴퓨터 구현 방법, 오브젝트를 공유하는 분산 파일 시스템 및 컴퓨터 판독가능 기록 매체
MX2007015188A (es) Infraestructura de manejo de configuracion de granja de servidor extensible y que responde automaticamente.
US20050015685A1 (en) Failure information management method and management server in a network equipped with a storage device
US20110208695A1 (en) Data synchronization between a data center environment and a cloud computing environment
US6901594B1 (en) Apparatus and method for establishing communication between applications
CN109284170B (zh) 一种局域网内usb共享系统及共享方法
JPH09198294A (ja) ローカル・エリア・ネットワークと分散コンピューティング環境との間の同期化をするシステム
US10069941B2 (en) Scalable event-based notifications
JP2011501254A (ja) セッション・アフィニティを使用する分散環境においてフェイルオーバを処理する方法及びシステム
US20200159560A1 (en) Propagating ordered object changes
CN113596117B (zh) 实时数据处理方法、系统、设备及介质
CN109587209A (zh) 一种基于文件多人协作编辑的服务器存储云平台
US20080052341A1 (en) System and method for processing data associated with a transmission in a data communication system
CN115811546A (zh) 用于科技服务实现网络协同分布式处理的系统及其方法
Fuhrmann dCache, the Commodity Cache.
CN113342547A (zh) 一种远程服务调用方法、装置、电子设备及可读存储介质
US8775484B2 (en) Data management apparatus and method
CN107180034A (zh) MySQL数据库的集群系统
WO2019163912A1 (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
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.