架构源自需求

需求分析

软件架构大部分都来自于需求。能够说。有什么样的需求,就会有什么样的架构, 尽管不同一时候期,不同的人来实现,可能不全然一样。可是整体来说, 架构不会相差太远。

如今假设假设须要自己来实现一个相似Openstack这样功能的软件,会是什么样的呢?

首先,还是再看看前一章中总结的最简单的需求

  1. 物理server的管理
  2. server的选择
  3. 虚拟机的创建、开机、关机、挂起、暂停、调整、迁移等操作

物理server的管理

要对物理server进行管理, 至少要满足下面几个条件

  1. 要有一台做管理用的server
  2. 每台server至少能够和管理服务进行网络通信
  3. 管理server有能力对服务进行一些操作管理

通过上述的分析。通信时至少须要一种通信协议。但为了满足很多其它的需求,能够考虑支持多种协议, 远程的管理须要远程调用功能。

server的选择

相同, 要依据客户的不同配置来选择服务。 至少须要满足下面几个条件

  1. 能够获取server的的状态信息, 比方说可用的CPU个数。内在大小, 硬盘大小等
  2. 须要保存server的状态信息,作为选择时的输入信息
  3. 须要一些选择过虑的规则

以上的需求。至少须要保存数据的数据库, 和协议有相同的问题,如今的数据库非常多,能够考虑支持多种数据库。

虚拟机的创建、开机、关机、挂起、暂停、调整、迁移等操作

在前一章中, 已经强调一点。 Openstack仅仅是管理平台。它是不会实现虚拟功能, 还有, 要创建一台虚拟机,至少须要CPU, 内存, 硬件三种硬件。并且虚拟本身就是为提供服务而存在,而如今的大部分服务。都是基于网络服务,所以网络也是不可缺少的一种硬件。

所以整体的需求大概例如以下

  1. 各种虚拟化技术的支持管理,眼下主流的虚拟化技术例如以下:

    • Baremetal
    • Docker
    • Hyper-V
    • Kernel-based Virtual Machine (KVM)
    • Linux Containers (LXC)
    • Quick Emulator (QEMU)
    • User Mode Linux (UML)
    • VMware vSphere
    • Xen
  2. 硬盘支持
  3. 网络支持
  4. 镜像支持

隐形需求

  1. 对外的接口,仅仅有对外可操作,才干管理
  2. 用户管理, 不同的用户须要有不同的权限

到此为此, 一些最主要的需求已经出来了。把全部的节点用图表示出来例如以下:

Nova的实现

前面我们从需求的角度出发, 自己分析了假设要满足基本需求, 须要什么样的实现。

那么Nova的真实实现会和我们一样吗?

最新文章

  1. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xm
  2. C语言多线程编程 死锁解析
  3. python访问mysql将返回的表转化为json
  4. 六 GPU 并行优化的几种典型策略
  5. Java-马士兵设计模式学习笔记-建造者模式
  6. jacob 给word加印的功能
  7. 【HDOJ】3505 Writing Robot
  8. Galgame引擎编写,图像层
  9. 第9课_3_db库安装
  10. zoj1013 Great Equipment
  11. linux内存操作--ioremap和mmap学习笔记
  12. Win10系统下装Ubuntu虚拟机的遇到的问题总结
  13. LinkedHashMap源码分析
  14. [SCOI2008]奖励关(期望dp)
  15. TeXstudio+TexLive交叉引用
  16. ubuntu14.06 Lts开启ssh服务
  17. [破解] nasca drm file -ver1.00
  18. opencv车流量统计算法
  19. hadoop管理
  20. DBLookupComboBox 的初始值

热门文章

  1. C++ 递归位置排列算法及其应用
  2. js中常用的对象—String的属性和方法
  3. 跨域使用onmessage实现方式
  4. 多行文本溢出显示...的方法(-webkit-line-clamp)
  5. 002 python介绍/解释器安装/变量/常量/内存管理
  6. HDU 5188 zhx and contest(带限制条件的 01背包)
  7. js32---CommonUtil.js
  8. javascript创建对象的方法--原型模式
  9. CISP/CISA 每日一题 20
  10. Spring学习总结(10)——Spring JMS---三种消息监听器