openstack中的rpc通信
来源:互联网 发布:细说php第四版 编辑:程序博客网 时间:2024/04/30 02:44
RPC即Remote Procedure Call(远程方法调用),是Openstack中一种用来实现跨进程(或者跨机器)的通信机制。Openstack中同项目内(如nova, neutron, cinder...)各服务(service)及通过RPC实现彼此间通信。
RCP只定义了一个通信接口,其底层的实现可以各不相同。目前Openstack中的主要采用AMQP来实现。AMQP(Advanced Message Queuing Protocol)是一种基于队列的可靠消息服务协议,具体可参考http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol。作为一种通信协议,AMQP同样存在多个实现,如Apache Qpid, RabbitMQ等。
AMQP 模型有四个重要的角色:
Publisher:消息发送者,将消息发送的 Exchange 并指明 Routing Key,以便 Message Queue 可以正确的收到消息。Routing key用于 Exchange 判断哪些消息需要发送对应的 Message Queue。
Consumer:消息接受者,从 Message Queue 获取消息。
Exchange:根据 Routing key 转发消息到对应的 Message Queue 中。
queue:用来保存消息的存储空间,消息没有被receiver前,保存在队列中。
exchange是一个很重要的概念。用来接收publisher发出的消息,并决定消息后续处理。后续处理取决于消息的路由算法,而路由算法又是由exchange type决定的。AMQP中定义的类型包括:direct, topic, headers and fanout。
Direct Exchange:Point-to-Point 消息模式,消息点对点的通信模式,Direct Exchange 根据 Routing Key 进行精确匹配,只有对应的 Message Queue 会接受到消息。
Topic Exchange:Publish-Subscribe(Pub-sub)消息模式,Topic Exchange 根据 Routing Key 进行模式匹配,只要符合模式匹配的 Message Queue 都会收到消息。
Fanout Exchange:广播消息模式,Fanout Exchange 将消息转发到所有绑定的 Message Queue。
Openstack RPC中主要用了这三种exchange type。
AMQP消息模型:
Openstack RPC中沿用了AMQP中的一些概念,并做了一些扩展。理解AMQP概念是理解RPC的前提。RPC中定义了如下主要概念:
Server:同AMQP中的consumer。
Client:同AMQP中的publisher。
Exchange:同AMQP中的exchange。
Topic:同AMQP中的topic exchange type。topic类似于面向对象中的class概念,一个topic下可以包括多个方法,client通过topic调用一个方法,server也通过监听topic来提供方法调用。通常每个topic下的方法应该是逻辑上密切相关的,正如class的设计一样。
下面几个概念是RPC扩展的:
Namespace:用来组织server中的方法(method),默认是null。
Method:及被调用的方法,和普通(本地)方法调用中的方法是一个概念。
API version:用来标识server中方法的版本。随着时间的推移,server中的方法可能不断变化,提供版本信息可以保持对之前client的兼容。
Transport:对RPC的底层实现机制的抽象。
待续!!!!!
- openstack中的rpc通信
- openstack RPC通信
- openstack中的RPC请求分析
- Openstack的RPC通信代码调用架构
- Openstack虚拟机创建中的RPC调用
- 【OpenStack源码分析之七】openstack中的RPC请求分析
- openstack的RPC消息通信,oslo.messagin实现
- openstack nova基础知识——rpc模块中的kombu
- openstack nova基础知识——rpc模块中的kombu
- rpc通信
- openstack nova 基础知识——rpc回调机制(callback) 和rpc模块中的kombu
- OpenStack nova rpc
- openstack学习之RPC
- openstack rpc 原理
- openstack rpc 学习
- Hadoop中的RPC实现——客户端通信组件
- Hadoop中的RPC实现——服务器端通信组件
- Hadoop中的RPC实现——客户端通信组件
- 【c++】单链表
- web常用标签
- 为什么C++不能有虚构造函数,却可以有虚析构函数
- Android完美满足你所有的拍照或从相册中选取照片
- Hdu1323 Perfection Time
- openstack中的rpc通信
- Mysql性能优化(1) 从新建一个表开始
- 笔试算法学习--买票找零问题(卡特兰数)
- 三十岁那年,我的梦想是年薪十万
- Ubuntu下,搭建java环境
- 八大排序--希尔排序
- 区块链开发教程
- 金融学基本概念
- Java征兵系统(可拓展)