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. Js Date泣血整理

    原文:Js Date泣血整理 JS Date 对象用于处理日期和时间. 创建 Date 对象的语法: var myDate=new Date() Date 对象会自动把当前日期和时间保存为其初始值. ...

  2. NodeJs技术

    我的NodeJs技术总结——第一篇   既然是我的技术总结,那就是以我的技术水平为基础的,写浅了大家不要笑话,如果有错误的地方还望指正. 这第一篇就谈谈NodeJs的一些编程细节吧. 1.遍历数组 f ...

  3. Toast,AlertDialog的误解

    在一般的软件开发中,子线程中是不能更改UI主线程中创建的UI控件的.之前的理解是Toast也不能在子线程中创建.事实上并不是这样子的. @Override protected void onCreat ...

  4. Coded UI Test对Webpage进行自动化测试

    如何使用Coded UI Test对Webpage进行自动化测试   在Visual Studio中,Coded UI Test已经不是什么新特性了,较早版本的Visual Studio中就已经有这个 ...

  5. 凝结时光:ImageMagick 制作 gif

    从去年12.12开始,工作日都会从单位的落地窗向外拍一张照片,有点每日打卡的意思.weekday 是一天不落的,weekend 不是每次都到单位,落了几次. 想法来自上学的时候,有同学在同一个地方,拍 ...

  6. web 安全知识

    目录 背景最简单的 Web 物理架构攻击方式总览Web 软件安全攻击防护浏览器安全攻击Cookie 假冒隐藏变量修改跨站脚本攻击服务器安全攻击缓冲区溢出认证逃避非法输入授权逃避SQL 注入异常敏感信息 ...

  7. .net中的emit

      .net中的emit .net中的emit命名空间是system.reflection.emit.可见,emit是作为反射的一个比较高级的功能. 反射允许我们在运行时获取对象的相关信息,并执行对象 ...

  8. 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)介绍(二)

    基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)介绍(二) 之前文章中给大家说明了下我这个小小的想法,发现还是有不少人的支持和关注.你们的鼓励是对我最大的支持. 我总结了了 ...

  9. 迟到的 WPF 学习 —— 布局

    布局是 WPF 很重头的一部分内容,这一部分梳理和记录关于布局章节的知识点. 1. WPF 使用一种基于流(Flow-based)的概念来处理布局逻辑,将传统的基于"坐标"的思想尽 ...

  10. synchronized简介

    synchronized简介 Java提供了一种内置的锁机制来支持原子性:同步代码块(Synchronized Block).同步代码块包括两部分:一个作为锁对象的引用,一个作为由这个锁保护的代码块. ...