CN105871907A - 一种通用的创建基于amqp协议代理服务的方法 - Google Patents
一种通用的创建基于amqp协议代理服务的方法 Download PDFInfo
- Publication number
- CN105871907A CN105871907A CN201610364469.2A CN201610364469A CN105871907A CN 105871907 A CN105871907 A CN 105871907A CN 201610364469 A CN201610364469 A CN 201610364469A CN 105871907 A CN105871907 A CN 105871907A
- Authority
- CN
- China
- Prior art keywords
- service
- class
- agency service
- agency
- amqp
- 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.)
- Withdrawn
Links
Classifications
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/03—Protocol definition or specification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及软件服务管理技术领域,特别是一种通用的创建基于AMQP协议代理服务的方法。所述方法包括:定义AMQP代理服务通用类和具体代理服务消息处理类;主方法读取代理服务配置文件并进行参数注册;主方法利用相关参数及定义的RPC消息处理类实例化服务通用类;主方法利用服务类实例启动代理服务。采用本发明提供的方法可以在基于AMQP的软件程序中快速编写出新的代理服务;可以用于对Openstack的二次开发。
Description
技术领域
本发明涉及软件服务管理技术领域,特别是一种通用的创建基于AMQP协议代理服务的方法。
背景技术
AMQP和RabbitMQ
AMQP是应用层协议的一个开放标准,为面向消息的中间件而设计。RabbitMQ是AMQP协议的一个开源实现,也就是说,“消息”是AMQP实现通信的基本因素。AMQP有两个核心要素——交换器(Exchange)与队列(Queue)通过消息的绑定与转发机制实现信息通信。其中,交换器是由消费者应用程序创建,并且可与其他应用程序实现共享服务,其功能与数据通信网络中的路由器非常相似,即接收消息之后通过路由表将消息准确且安全的转发至相应的消息队列。
代理服务与Openstack
当前,软件行业发展迅速,开源、高内聚松耦合的软件架构越来越受欢迎;如Openstack,架构先进、功能丰富,且极易扩展,其组件与组件之间通信基于开源的AMQP,实现了很多具体底层的代理服务。随着Openstack开源云平台应用越来越广泛,各家云平台都借助于其实现自己的私有云平台,但是往往Openstack现有的功能并不能满足用户的特色需求,故需求对其进行二次开发。
发明内容
本发明解决的技术问题在于提供一种通用的创建基于AMQP协议代理服务的方法,实现在基于AMQP协议的架构系统中,快速编写出新的代理服务。
本发明解决上述技术问题的技术方案是,
所述的方法是先定义AMQP代理服务通用类和具体代理服务消息处理类;然后,由主方法读取代理服务配置文件并进行参数注册,利用相关参数及定义的RPC消息处理类实例化服务通用类;再利用服务类实例启动代理服务。
所述的主方法是代理服务的启动方法,一般为main函数;
所述的相关参数主要包括有代理服务所在节点的主机名,代理服务与控制端的通信时间间隔,代理服务消息处理底层驱动;所述的控制端是指与代理服务进行通信,并保存代理相关信息到数据库,同时对外提供接口的服务程序。
所述的定义AMQP代理服务通用类是一个使用于所有的代理服务的通用的继承类结构,主要提供对服务实例进行管理的属性和方法集合;所述的属性主要有具体代理服务消息处理类实例;所述的方法主要有服务启动、关闭、重启等函数;
所述的代理服务消息处理类是指某个具体代理服务对指定消息的处理方法集,不同的代理服务各自不同。
所述的主方法利用相关参数及定义的RPC消息处理类实例化服务通用类,进一步包括:
构造AMQP主题交换器的主题,创建主题交换器和消费者队列;
实例化RPC消息处理类;
实例化服务通用类;
所述的AMQP主题是指类似于路由通信当总的路由规则,在AMQP中定义为routing key(路由关键字),一般可以是一个指定的字符串。
所述的RPC消息处理类实例化服务通用类,进一步包括:
启动子程序发送RPC请求,汇报代理服务本身的状态信息给控制端;
然后,接受控制端响应返回的本代理服务的底层驱动相关的资源信息并同步;
所述的子程序可以是进程、线程以及协程。
所述的主方法利用服务类实例启动代理服务,进一步包括:
创建代理服务的AMQP主题交换器和主题消费者,在代理服务启动之后,使控制端主动与代理服务的RPC通信;
调用服务类实例的after_start方法进行代理服务启动之后的后续相关操作。
本发明方案的有益效果如下:
1、提供一种通用的在基于AMQP协议的软件架构上,方便快速的进行代理服务创建的方法。
2、本发明方法在实现上层次结构清晰,逻辑简单,可以快速的学习掌握与应用。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员没有做出实质性创造获得的方案,都属于本发明保护的范围。
请参见图1,为本发明实施例提供的一种通用的创建基于AMQP协议代理服务的方法的流程示意图,本实施类以python语言为例在Openstack云平台中创建gcloudqos-agent代理服务为例进行描述,所述方法包括:
首先定义AMQP代理服务通用类结构的Service继承关系:
通用服务类基类:
通用服务类子类:
如上定义了代理服务通用服务类Service结构,其中父类负责初始化AQMP中的消息通信部分,子类负责实例化具体的消息处理类。定义了代理服务管理的相关方法,如start,stop等。
定义代理服务具体的消息处理类:
如上定义了GcloudQosAgentWithStateReport消息处理类,并在初始化方法中启动子程序(协程)来运行_report_state方法与控制端进行RPC通信,完成代理服务状态的汇报。代理服务继续在_report_state方法中启动协程运行run方法,调用sync_state进行与控制端的信息同步,run方法定义如下:
代理服务主方法定义如下:
主方法利用register_options方法读取配置文件并注册,然后利用report_interval,topic,manager等参数通过create方法实例化Service,在这个过程中通过Service类的定义可知会同时实例化消息处理类GcloudQosAgentWithStateReport,启动子程序与控制端程序进行RPC通信,完成状态汇报和信息同步。最后主方法利用service.launch(server).wait()启动代理服务,该过程是通过调用Service类实例的start方法,完成AQMP消息主题交换器、消息队列的创建;将定义的消息处理类实例化为manager,并作为endpoints进行监听以便后面处理消息。
Claims (10)
1.一种通用的创建基于AMQP协议代理服务的方法,其特征在于,所述的方法是先定义AMQP代理服务通用类和具体代理服务消息处理类;然后,由主方法读取代理服务配置文件并进行参数注册,利用相关参数及定义的RPC消息处理类实例化服务通用类;再利用服务类实例启动代理服务。
2.根据权利要求1所述的方法,其特征在于:
所述的主方法是代理服务的启动方法,一般为main函数;
所述的相关参数主要包括有代理服务所在节点的主机名,代理服务与控制端的通信时间间隔,代理服务消息处理底层驱动;所述的控制端是指与代理服务进行通信,并保存代理相关信息到数据库,同时对外提供接口的服务程序。
3.根据权利要求1所述的方法,其特征在于:
所述的定义AMQP代理服务通用类是一个使用于所有的代理服务的通用的继承类结构,主要提供对服务实例进行管理的属性和方法集合;所述的属性主要有具体代理服务消息处理类实例;所述的方法主要有服务启动、关闭、重启等函数;
所述的代理服务消息处理类是指某个具体代理服务对指定消息的处理方法集,不同的代理服务各自不同。
4.根据权利要求2所述的方法,其特征在于:
所述的定义AMQP代理服务通用类是一个使用于所有的代理服务的通用的继承类结构,主要提供对服务实例进行管理的属性和方法集合;所述的属性主要有具体代理服务消息处理类实例;所述的方法主要有服务启动、关闭、重启等函数;
所述的代理服务消息处理类是指某个具体代理服务对指定消息的处理方法集,不同的代理服务各自不同。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述的主方法利用相关参数及定义的RPC消息处理类实例化服务通用类,进一步包括:
构造AMQP主题交换器的主题,创建主题交换器和消费者队列;
实例化RPC消息处理类;
实例化服务通用类;
所述的AMQP主题是指类似于路由通信当总的路由规则,在AMQP中定义为routing key,一般可以是一个指定的字符串。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述的RPC消息处理类实例化服务通用类,进一步包括:
启动子程序发送RPC请求,汇报代理服务本身的状态信息给控制端;
然后,接受控制端响应返回的本代理服务的底层驱动相关的资源信息并同步;
所述的子程序可以是进程、线程以及协程。
7.根据权利要求5所述的方法,其特征在于,所述的RPC消息处理类实例化服务通用类,进一步包括:
启动子程序发送RPC请求,汇报代理服务本身的状态信息给控制端;
然后,接受控制端响应返回的本代理服务的底层驱动相关的资源信息并同步;
所述的子程序可以是进程、线程以及协程。
8.根据权利要求1至4任一项所述的方法,其特征在于,所述的主方法利用服务类实例启动代理服务,进一步包括:
创建代理服务的AMQP主题交换器和主题消费者,在代理服务启动之后,使控制端主动与代理服务的RPC通信;
调用服务类实例的after_start方法进行代理服务启动之后的后续相关操作。
9.根据权利要求5所述的方法,其特征在于,所述的主方法利用服务类实例启动代理服务,进一步包括:
创建代理服务的AMQP主题交换器和主题消费者,在代理服务启动之后,使控制端主动与代理服务的RPC通信;
调用服务类实例的after_start方法进行代理服务启动之后的后续相关操作。
10.根据权利要求6所述的方法,其特征在于,所述的主方法利用服务类实例启动代理服务,进一步包括:
创建代理服务的AMQP主题交换器和主题消费者,在代理服务启动之后,使控制端主动与代理服务的RPC通信;
调用服务类实例的after_start方法进行代理服务启动之后的后续相关操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610364469.2A CN105871907A (zh) | 2016-05-26 | 2016-05-26 | 一种通用的创建基于amqp协议代理服务的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610364469.2A CN105871907A (zh) | 2016-05-26 | 2016-05-26 | 一种通用的创建基于amqp协议代理服务的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105871907A true CN105871907A (zh) | 2016-08-17 |
Family
ID=56642564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610364469.2A Withdrawn CN105871907A (zh) | 2016-05-26 | 2016-05-26 | 一种通用的创建基于amqp协议代理服务的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105871907A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108900485A (zh) * | 2018-06-15 | 2018-11-27 | 郑州信大壹密科技有限公司 | 基于国产平台的多级管控通信方法 |
CN110635932A (zh) * | 2018-06-22 | 2019-12-31 | 复旦大学 | 一种基于OpenStack控制平面的虚拟网络性能的优化方法 |
CN111541662A (zh) * | 2020-04-15 | 2020-08-14 | 赞同科技股份有限公司 | 一种基于二进制通信协议的通信方法、装置、系统及设备 |
CN111679918A (zh) * | 2019-03-11 | 2020-09-18 | 华为技术有限公司 | 一种消息传输方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064731A (zh) * | 2012-12-26 | 2013-04-24 | 人民搜索网络股份公司 | 一种提高消息队列系统性能的装置及其方法 |
-
2016
- 2016-05-26 CN CN201610364469.2A patent/CN105871907A/zh not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064731A (zh) * | 2012-12-26 | 2013-04-24 | 人民搜索网络股份公司 | 一种提高消息队列系统性能的装置及其方法 |
Non-Patent Citations (2)
Title |
---|
仇晗: "《OpenStack之RPC调用(一)》", 《CSDN》 * |
郑晨: "《基于Openstack的移动设备消息中间件研究与实现》", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108900485A (zh) * | 2018-06-15 | 2018-11-27 | 郑州信大壹密科技有限公司 | 基于国产平台的多级管控通信方法 |
CN110635932A (zh) * | 2018-06-22 | 2019-12-31 | 复旦大学 | 一种基于OpenStack控制平面的虚拟网络性能的优化方法 |
CN110635932B (zh) * | 2018-06-22 | 2021-10-15 | 复旦大学 | 一种基于OpenStack控制平面的虚拟网络性能的优化方法 |
CN111679918A (zh) * | 2019-03-11 | 2020-09-18 | 华为技术有限公司 | 一种消息传输方法及装置 |
CN111679918B (zh) * | 2019-03-11 | 2024-04-26 | 华为云计算技术有限公司 | 一种消息传输方法及装置 |
CN111541662A (zh) * | 2020-04-15 | 2020-08-14 | 赞同科技股份有限公司 | 一种基于二进制通信协议的通信方法、装置、系统及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11394689B2 (en) | Application based network traffic management | |
US7673029B2 (en) | Grid automation bus to integrate management frameworks for dynamic grid management | |
WO2017185922A1 (zh) | 一种业务部署方法、装置以及网元 | |
US8775651B2 (en) | System and method for dynamic adaptation service of an enterprise service bus over a communication platform | |
CN105871907A (zh) | 一种通用的创建基于amqp协议代理服务的方法 | |
CN109743415A (zh) | 一种公有云网络弹性ip实现方法及系统 | |
US10140121B2 (en) | Sending a command with client information to allow any remote server to communicate directly with client | |
US20080243900A1 (en) | Dynamic and Real-Time Discovery of Computing Resources | |
CN106953848B (zh) | 一种基于ForCES的软件定义网络实现方法 | |
CN103685608A (zh) | 一种自动配置安全虚拟机ip地址的方法及装置 | |
WO2014194452A1 (zh) | 消息发布与订阅的方法及装置 | |
CN106445705A (zh) | 基于RabbitMQ和Socket.io的平台级联方法和系统 | |
US11153224B2 (en) | Method of providing cloud computing infrastructure | |
EP2838243A1 (en) | Capability aggregation and exposure method and system | |
WO2017148326A1 (zh) | 一种资源管理方法和装置 | |
TWI707561B (zh) | 虛擬網路功能的管理系統和管理方法 | |
WO2023024740A1 (zh) | 一种基于容器部署联邦学习任务的方法及装置 | |
WO2015109950A1 (zh) | 业务资源组实现方法及装置 | |
CN103780686A (zh) | 一种云组织内自定义申请审批流程的方法及系统 | |
JP2014518417A (ja) | インタプリター型ランタイム・アプリケーションを多数のクライアントに適応させる技法 | |
WO2016082594A1 (zh) | 数据更新处理方法及装置 | |
CN103297269B (zh) | 一种基于服务计算平台的网络服务部署与管理方法 | |
CN102326147A (zh) | 虚拟网络环境中的复制避免 | |
CN102109981A (zh) | 实时通讯通用插件 | |
CN110995489B (zh) | 大数据平台服务器管理方法、装置、服务器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20160817 |