架构源自需求
需求分析
软件架构大部分都来自于需求,可以说,有什么样的需求,就会有什么样的架构, 虽然不同时期,不同的人来实现,可能不完全一样。但是总体来说, 架构不会相差太远。
现在假设如果需要自己来实现一个类似Openstack这样功能的软件,会是什么样的呢?
首先,还是再看看前一章中总结的最简单的需求
- 物理服务器的管理
- 服务器的选择
- 虚拟机的创建、开机、关机、挂起、暂停、调整、迁移等操作
物理服务器的管理
要对物理服务器进行管理, 至少要满足以下几个条件
- 要有一台做管理用的服务器
- 每台服务器至少可以和管理服务进行网络通信
- 管理服务器有能力对服务进行一些操作管理
通过上述的分析,通信时至少需要一种通信协议,但为了满足更多的需求,可以考虑支持多种协议, 远程的管理需要远程调用功能。
服务器的选择
同样, 要根据客户的不同配置来选择服务, 至少需要满足以下几个条件
- 能够获取服务器的的状态信息, 比如说可用的CPU个数,内在大小, 硬盘大小等
- 需要保存服务器的状态信息,作为选择时的输入信息
- 需要一些选择过虑的规则
以上的需求,至少需要保存数据的数据库, 和协议有同样的问题,现在的数据库很多,可以考虑支持多种数据库。