一、概述:

  在openstack项目中,api的调用规则:

    跨项目:如nova调用keystone, glance,cinder等,使用rest api(通过相应的python-XXXclient 库)

    项目内跨服务调用,使用RPC调用,通过服务提供的rpcapi.py文件,比如cinder内部,cinder-api与cinder-volume,cinder-scheduler服务之间使用RPC接口,即RabbitMQ消息;

  cinder系统结构图:

    cinder-api是cinder 服务的endpoint, 提供了rest接口,负责处理client的请求,并将rest请求解封,并重新封装成RPC请求至cinder-scheduler组件;

    除dashboard之外,所有的服务均有XXX-api作为XXX服务的endpoint,提供rest 接口,负责处理XXXclient 的请求:

 [root@TS-M2-Cloud172 ~(keystone_admin)]# openstack-service list |grep api
openstack-ceilometer-api
openstack-cinder-api
openstack-glance-api
openstack-nova-api

二、openstack RPC通信

 openstack组件内部的RPC(Remote Producer Call)机制的实现是基于AMQP协议作为通讯模型,从而组件内部的松耦合性。AMQP是用于异步消息通讯的消息中间件协议;AMQP模型有四个重要的角色:

  • Exchange: 根据Routing key转发消息到对应的Message Queue中;
  • Routing key: 用于Exchange判断那些消息需要发送对应的Message Queue
  • Publisher: 消息发送者,将消息发送的Exchange并指明Routing Key,以便Message Queue可以正确的收到消息;
  • Consumer:消息接受者,从Message Queue获取消息;   

 消息发布者 Publisher 将 Message 发送给 Exchange 并且说明 Routing Key。Exchange 负责根据 Message 的 Routing Key 进行路由,将 Message 正确地转发给相应的 Message Queue。监听在 Message Queue 上的 Consumer 将会从 Queue 中读取消息。

  Routing Key 是 Exchange 转发信息的依据,因此每个消息都有一个 Routing Key 表明可以接受消息的目的地址,而每个 Message Queue 都可以通过将自己想要接收的 Routing Key 告诉 Exchange 进行 binding,这样 Exchange 就可以将消息正确地转发给相应的 Message Queue。

  

  OpenStack层封装call和cast接口用于远程调用RPC的server上的方法,这些方法都是构造RPC的server的endpoints内的方法。远程调用时,需要提供一个字典对象来指明调用的上下文,调用方法的名字和传递给调用方法的参数(用字典表示)。如:

    cctxt =self.client.prepare(vesion=’2.0’)

    cctxt.cast(context,‘build_instances’, **kw)

通过cast方式的远程调用,请求发送后就直接返回了;通过call方式远程调用,需要等响应从服务器返回。

openstack rpc机制的更多相关文章

  1. openstack RPC通信

    openstack RPC通信 OpenStack 的主要组件有 Nova.Cinder.Neutron.Glance 等,分别负责云平台的计算.存储.网络资源管理.openstack 各组件之间是通 ...

  2. OpenStack RPC框架解析

    1  消息队列Rabbitmq介绍 Rabbitmq的整体架构图 (1)Rabbitmq Server:中间那部分就是Rabbitmq Server,也叫broken server,主要是负责消息的传 ...

  3. Hadoop学习笔记—3.Hadoop RPC机制的使用

    一.RPC基础概念 1.1 RPC的基础概念 RPC,即Remote Procdure Call,中文名:远程过程调用: (1)它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网 ...

  4. Hadoop RPC机制的使用

    一.RPC基础概念 1.1 RPC的基础概念 RPC,即Remote Procdure Call,中文名:远程过程调用: (1)它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网 ...

  5. 理解Android系统的进程间通信原理(二)----RPC机制

    理解Android系统中的轻量级解决方案RPC的原理,需要先回顾一下JAVA中的RMI(Remote Method Invocation)这个易于使用的纯JAVA方案(用来实现分布式应用).有关RMI ...

  6. 每天收获一点点------Hadoop RPC机制的使用

    一.RPC基础概念 1.1 RPC的基础概念 RPC,即Remote Procdure Call,中文名:远程过程调用: (1)它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网 ...

  7. Hadoop的RPC机制及简单实现

    1.RPC简介 Remote Procedure Call 远程过程调用协议 RPC——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些 ...

  8. Hadoop2源码分析-RPC机制初识

    1.概述 上一篇博客,讲述Hadoop V2的序列化机制,这为我们学习Hadoop V2的RPC机制奠定了基础.RPC的内容涵盖的信息有点多,包含Hadoop的序列化机制,RPC,代理,NIO等.若对 ...

  9. hadoop的RPC机制 -源码分析

    这些天一直奔波于长沙和武汉之间,忙着腾讯的笔试.面试,以至于对hadoop RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上 ...

随机推荐

  1. 解析oui.txt文件,通过MAC前缀获取Organization

    1.前言 OUI是指Organizationally unique identifier  (组织唯一标识符),签发给各类组织的唯一标识符.MAC地址共有6个字节48位组成,前3个字节体现了OUI,其 ...

  2. vim上次和下次光标位置

    ctrl + I 下次光标位置 ctrl + o上次光标位置.

  3. Spark Structured Streaming:将数据落地按照数据字段进行分区方案

    方案一(使用ForeachWriter Sink方式): val query = wordCounts.writeStream.trigger(ProcessingTime(5.seconds)) . ...

  4. RateLimiter 限流

    @RestControllerpublic class RateLimiterController { private RateLimiter rateLimiter = RateLimiter.cr ...

  5. oauth2-server-php-docs 集成3

    Yii集成 对于Yii集成,请通过Filsh查看Yii OAuth2服务器资源库 CakePHP的 有关CakePHP中集成的这个库的示例,请参阅Qsoomro CakePHP OAuth2 Demo ...

  6. linux 文件系统与磁盘修复

    fsck修复受损的文件系统   Linux不正常关机,有时候再次启动时会报文件系统损坏,如何修复文件? 首先会让你输入root用户的密码.  1)出错的时候如果告诉你是哪一块硬盘的分区有问题,比如是/ ...

  7. OS 获取用户相册。保存图片。编辑图片为圆形

    // // ViewController.m // YunPhoto // // Created by qingyun on 3/4/14. // Copyright (c) 2014 qingyun ...

  8. Linux中禁用THP(Transparent Huge Pages)

    一.简介 Centos6开始引入THP,Centos7时默认启用,用来提升内存性能. 二.说明 争对一些数据库,如Oracle.MariaDB.MongoDB.VoltDB在使用时,要求关闭此功能. ...

  9. C++ 第五课:C/C++ 数据类型

    C语言包含5个基本数据类型: void, integer, float, double, 和 char. 类型 描述 void 空类型 int 整型 float 浮点类型 double 双精度浮点类型 ...

  10. TortoiseGit使用指南

    http://www.360doc.com/content/13/0424/17/9171956_280649187.shtml