trove的设计

高水平的描述

trove的目的是支持单租户数据库,在一个nova的实例中。没有限制nova是如何配置的,因为trove与其他OpenStack组件纯粹通过API。

Trove-api

trove-api服务提供一个支持JSON和XML的RESTful API提供和管理大量的实例。

REST-ful组件

入口点——Trove/ bin / trove-api

使用一个WSGI发射器配置,在Trove/etc/trove/api-paste.ini

定义过滤器的管道;authtoken,ratelimit等等。

定义app_factory ,为troveapp,当做 trove.common.api:app_factory

API类(wsgi路由器)电线其余路径到适当的控制器

实现控制器的相关模块(versions/instance/flavor/limits), 在service.py模块

控制器通常执行重定向到一个类的models.py模块

基于此点,一个api模块的另一个组件(TaskManager、GuestAgent等)通过RabbitMQ用于发送请求开始

Trove-taskmanager

trove-taskmanager服务的重点在于配置实例,实例的生命周期管理,并在数据库实例上执行操作。

RabbitMQ的监听服务

切入点Trove/bin/trove-taskmanager

运行由Trove/etc/trove/trove-taskmanager.conf.sample配置的RpcService,这trove.taskmanager.manager.Manager定义为管理者 - 基本上这是请求到达队列的切入点

如上所述,要求该组件被从另一个组件使用TaskManager的MQ api模块使用_cast()或_call()(同步/同步),把方法的名称作为参数

Trove/openstack/common/rpc/dispatcher.py- RpcDispatcher.dispatch()调用适当的方法在一些相当于管理的反射

然后管理处理重定向到一个对象的models.py模块。它加载对象的上下文,即instance_id相关类

实际处理通常是在models.py模块中

Trove-guestagent

guestagent是在客人实例运行时的服务,负责管理和执行操作在数据库自身。guestagent侦听RPC消息通过消息总线和执行所请求的操作。

类似于TaskManager的感觉作为一个服务运行,监听RabbitMQ。

GuestAgent运行在每个数据库实例,和使用一个专门的MQ主题(标识为实例的id)

入口点——Trove/bin/trove-guestagent

作为RpcService运行,配置来自Trove/etc/trove/trove-guestagent.conf.sample。定义了trove.guestagent.manager.Manager作为管理。基本上这是请求到达队列的切入点。

如上所述,要求该组件被从另一个组件使用GuestAgent的MQ api模块使用_cast()或_call()(同步/同步),把方法的名称作为参数

Trove/openstack/common/rpc/dispatcher.py- RpcDispatcher.dispatch()调用适当的方法在一些相当于管理的反射,然后管理处理重定向到一个对象从dbaas(通常).py模块。

实际处理通常在dbaas.py模块

Trove-conductor

Conductor是在主机上运行服务,负责从客人实例接收消息,更新主机的信息。例如,实例状态和当前备份的状态。与Conductor,客人实例不需要直接连接到主机的数据库。Conductor侦听RPC消息通过消息总线和执行相关的操作。

类似于它是一个guest-agent服务监听一个RabbitMQ。不同之处在于Conductor生存在主机,而不是客人。

Guest agents与Conductor的交流,通过将消息在cfg中声明,作为conductor_queue 主题。默认情况下,这是“trove-conductor”。

入口点——Trove/bin/trove-conductor

作为RpcService运行,配置在Trove/etc/trove/trove-conductor.conf.sample。定义了trove.conductor.manager.Manager作为管理。基本上这是请求到达队列的切入点。

与guestagent一样,请求被推到MQ使用_cast从另一个组件()(同步),通常的形式{“方法”:“< method_name >”,“参数”:{ <参数> } }

实际数据库更新工作是由trove/conductor/manager.py

“heartbeat”方法用于更新实例的状态。这是用来报告实例从NEW到BUILDING到ACTIVE等等。

“update_backup”方法改变一个备份的详细信息,包括其当前状态,备份的大小,类型和校验和。

原地址:http://docs.openstack.org/developer/trove/dev/design.html

更多信息:http://www.cnblogs.com/S-tec-songjian/

此文章属博客园用户S-tec原创作品,受国家《著作权法》保护,未经许可,任何单位及个人不得做营利性使用;若仅做个人学习、交流等非营利性使用,应当指明作者姓名、作品名称,原文地址,并且不得侵犯作者依法享有的其他权利。

trove design翻译的更多相关文章

  1. trove命令翻译(上)(只做翻译,未实验效果)

    The trove client is the command-line interface (CLI) for the Database service API and its extensions ...

  2. Android Design 与 Holo Theme

    转载:http://www.geekpark.net/topics/179488 [核心提示] 提到 Android Design,很多人会做出”啊,知道,就是黑色的背景和灰蓝色的平的按钮嘛”,那么到 ...

  3. WebApp 设计要素

    从去年开始就负责公司WebApp的产品跟设计工作,最近整体大改了两个版本,也算累积了一些实际的经验.在不断学习的过程中,发现对于WebApp可以直接用于项目上的资料比较零碎,在这里总结一下,供初做 W ...

  4. 大型HashMap

    看到一篇评估大型HashMap的文章,备份几个Collections库. 原文:Large HashMap overview: JDK, FastUtil, Goldman Sachs, HPPC, ...

  5. 使用Material Design 创建App翻译系列----材料主题的使用(Using Material Theme)

    上一篇是使用Material Design 创建App翻译系列--開始学习篇,进入正题: 新的材料主题提供了下面内容: 1. 提供了同意设置颜色板的系统部件组件. 2. 为这些系统组件提供了触摸反馈动 ...

  6. 使用Material Design 创建App翻译系列---列表和卡片集的创建

    上一篇是使用Material Design 创建App翻译系列--材料主题的使用(Using Material Theme),进入正题: 想要在应用里创建Material Design风格的复杂列表和 ...

  7. (翻译)领域驱动设计实现-Implementing Domain Driven Design

    简介 Implementing Domain Driven Design 领域驱动设计实现 A practical guide for implementing the Domain Driven D ...

  8. 《Design by Contract for Embedded Software》 翻译

    原文: Design by Contract for Embedded Software (state-machine.com) Design by Contract is the single mo ...

  9. trove manual installation 翻译

    目标 此文件提供了一步一步的指导手动安装trove在一个现有OpenStack的环境为了开发. 该文件将不包括: OpenStack的设置 trove服务配置 要求 正在运行的OpenStack的环境 ...

随机推荐

  1. ASP.NET MVC IOC之Unity攻略

    ASP.NET MVC IOC之Unity攻略 一.你知道IOC与DI吗? 1.IOC(Inversion of Control )——控制反转 即依赖对象不在被依赖模块的类中直接通过new来获取 先 ...

  2. CRM2011 concurrency问题及解决方案

    CRM2011对删除和添加操作会自动做判断,比如A打开纪录x,B也打开纪录x,然后B删除了纪录x,A去更新的话就会有提示.更新的话是后者覆盖前者,比如A打开纪录x,B打开纪录x,然后B把记录x中的字段 ...

  3. 松瀚SN8P2711 2722 ADC初始化程序及应用--汇编源码

    /* 松瀚 SN8P2711 2722 ADC初始化程序 及应用实例 */ INIT_ADC: MOV A, #0XB2 // 启动ADC电路 使能AIN通道 B0MOV ADM, A MOV A,# ...

  4. 转载Mvc的多层架构

    Mvc的多层架构 分享一个Mvc的多层架构,欢迎大家拍砖斧正   多层架构是什么? 多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为主的应对策略,关于多层架构的标准,我认为有 ...

  5. 10.26最后的模拟DAY2 数字对[暴力]

    数字对 [题目描述] 小H是个善于思考的学生,现在她又在思考一个有关序列的问题. 她的面前浮现出一个长度为n的序列{ai},她想找出一段区间[L, R](1 <= L <= R <= ...

  6. Solrcloud,tomcat,外部zookeeper配置

  7. Android简单发送邮件(可带附件)

    项目中遇到了一个发送邮件的功能,在网上查了很多,资料也很多.这里就不一一介绍了,只是写出我使用的方案(最简单的) Intent email = new Intent(android.content.I ...

  8. poj1001求幂

    这道题目是实质上就是高精度的乘法,虽然是带小数点的数多少次幂,但是开始我们需要将它变为整数进行求幂,然后再加上小数点,然后要考虑前导0,有效数位问题,做的时候要十分的小心 #include<io ...

  9. jQuery extend函数详解

    一 jQuery的扩展方法原型是 $.extend(dest,src1,src2,src3); 含义是将src1,src2,src3合并到dest中,返回值为合并后的dest,该方法合并后,dest的 ...

  10. MVC常见的控制器,接口,数据层之间的操作

    user_books_info 类 namespace CiWong.LearningLevel.Mapping { public class user_books_info { /// <su ...