OpenStack这十几年

这七大核心组件之外,社区还有几十个孵化项目——Heat(编排)、Ceilometer(监控)、Magnum(容器编排)、Manila(文件存储)等等,覆盖越来越广。OpenStack的版本命名也很有意思:按字母顺序从A排到Z,每半年发布一个大版本。从2010年10月的Austin开始,Bexar、Cactus、Diablo、Essex……一直到近年的Wallaby、Victoria,十多年走过来,已经成为云基础软件领域版本最多的开源项目之一。

OpenStack的技术架构,有三个设计思想最值得提。

第一,一切皆API。所有组件对外都通过RESTful API提供服务。Nova不直接管网络,它调用Neutron的API;要挂存储,调用Cinder的API;要取镜像,调用Glance的API。组件之间是"服务互相调用"关系,不是"代码嵌套"关系。这种设计的好处非常明显——任何一个组件都可以独立替换、独立升级、独立扩容,整个系统天然是分布式的。当你的云从几十台扩展到几万台服务器时,这种松耦合的设计就是天然契合。

第二,消息总线解耦。组件内部用消息队列(通常是RabbitMQ)做通信,而不是直接函数调用。比如Nova要创建虚拟机,它不会同步等结果:发个消息到队列,具体的计算节点接到消息后异步执行。这种异步消息模式让系统能扛住高并发,也天然支持容错,某个节点挂了,消息会重新分发给其他节点。

第三,插件化后端。OpenStack自己不生产硬件,它定义抽象接口,让后端去适配。Nova通过驱动对接KVM、VMware、Xen;Cinder通过驱动对接Ceph、NetApp、Pure Storage;Neutron通过插件对接各种SDN控制器。这种"定义标准、开放生态"的打法,和Linux的理念一脉相承,也是它为什么能成为工业标准的关键。任何一家存储、网络、服务器厂商,只要按OpenStack的接口标准写一个驱动,就能被纳入云平台生态。

评论已关闭。