浅谈OpenStack(一)
本文分享自天翼云开发者社区《浅谈OpenStack(一)》,作者:EmmaDu
OpenStack刚诞生的时候比较单纯,只有计算(NASA开源)和存储(Rackspace开源)两个功能组件,至于NASA和Rackspace开源这两个项目并成立OpenStack社区(https://www.openstack.org)的原因,网络上流传了很多版本,感兴趣的同学可以去网上找找。
个人认为OpenStack是一个伟大的开源项目,几乎所有的架构、所有的厂商都能在社区找到解决方案。截至到现在,OpenStack已经拥有超过1000万行核心代码,这是由8000多名开发者贡献了50万+的变更得来的。最初的OpenStack有多厉害?很多开发者仅仅是把OpenStack的代码搬到本地,运行起来再卖出去,就能成立一家公司。
OpenStack刚开始只有nova(计算)和swift(存储)两个核心组件,尤其是nova,几乎负责了云主机生命周期的所有操作,包括cpu、内存、磁盘、网络等,后来随着功能越来越多,项目越来越庞大,社区才把镜像管理(nova-image)服务、存储管理(nova-volume)服务、网络管理(nova-network)服务等独立出来,于是有了glance、cinder、neutron等服务。在OpenStack里有两个概念:组件和服务。我们把每个完成独立功能的项目称为一个组件,比如nova、cinder、glance、neutron。每个组件里会细分很多个服务,用来承担不同的职责,比如nova里会有nova-api服务,负责api请求的处理;nova-scheduler服务负责宿主机的调度;nova-compute服务负责与虚拟化软件进行交互,来操作云主机。

上图展示了OpenStack里的主要核心组件的交互流程,可以看到,组件和组件之间通过RESTful API交互;组件内的服务和服务之间通过消息队列交互。整个架构,逻辑清晰,组件之间相互独立,耦合性很低;而组件内部,通过消息队列来传递请求,耦合性也很低。个人认为,松耦合是OpenStack最大的特点,也是最值得学习的地方。
什么是松耦合?松耦合是指系统架构中不同的组件之间存在低度的耦合关系,这之间彼此相互独立,如果发生改变,其他相关模块不受影响,即可以分离出来独立开发或替换。我们的TeleCloudOS4.0底座虽然不再使用OpenStack,但是在做设计时,还是有很多OpenStack的影子。比如,现在各个产品线之间负责独立组件(计算、存储、网络等),而每个组件之间通过RESTful API的方式进行调用;比如每个组件内部又细分了很多服务,来负责不同的功能(api、调度、计算代理服务等)。各个产品线只需要专注的实现自有的产品功能,而不需要关心其他产品的内部实现,产品线的产品调用通过RESTful API来实现,只要定义好对接的接口格式,就可以实现并行开发,独立维护,互不影响,可以大大的提升开发效率,同时某一个组件的bug影响范围控制在组件内部,对其他组件不会造成影响。而产品线内部在设计时,也参考了OpenStack,将一个组件细分成很多服务来承担不同的任务,服务之间通过分布式队列来交互,其实和OpenStack异曲同工。
浅谈OpenStack(一)的更多相关文章
- 浅谈OpenStack架构
首先,先来了解,什么是OpenStack? OpenStack是一个云平台管理的项目,它不是一个软件.这个项目由几个主要的组件组合起来完成一些具体的工作.OpenStack是一个旨在为公共及私有云 ...
- 浅谈openstack中使用linux_bridge实现vxlan网络
openstack环境: 1 版本:ocata 2 系统:ubuntu16.04.2 3 控制节点 1个 + 计算节点 1个 4 控制节点网卡为ens33,ip = 172.171.5.200 ens ...
- 浅谈OpenStack与虚拟机的区别与联系
很多不太明白OpenStack与虚拟机之间的区别,下面以KVM为例,给大家讲一下他们的区别和联系 OpenStack:开源管理项目OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项 ...
- 浅谈 Fragment 生命周期
版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...
- 浅谈 LayoutInflater
浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- 浅谈SQL注入风险 - 一个Login拿下Server
前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
- 浅谈angular2+ionic2
浅谈angular2+ionic2 前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别. 1. 项目所用:angular2+ionic2 ...
- iOS开发之浅谈MVVM的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
随机推荐
- 社区发布非官方龙架构 .NET 9 SDK 发行版
随着.NET 9的发布,龙芯的Loongarch 架构的.NET 9 SDK的发布也提上了日程,在龙芯.NET 的官方支持之外,今年在社区有一个非官方龙架构 .NET SDK 发行版(https:// ...
- 三、FreeRTOS学习笔记-系统配置
FreeRTOSConfig.h配置文件作用:对FreeRTOS进行功能配置和裁剪,以及API函数的使能. 系统配置文件中主要是一些宏定义 相关宏定义可分为三类: 1."INCLUDE&qu ...
- tmux之常见问题
1. 使用tmux ls的时候显示错误 failed to connect to server: Connection refused 解决: 查看进程是否存在 ps -aux|grep tmux 发 ...
- 用VuePress在GitHub Pages上搭建博客
请先点击链接RobinDevNotes,体验用VuePress搭建博客的效果(logo还没有合适的替换),目前部署在GitHub Pages上,国内访问速度还可以,再阅读本文感受来龙去脉和搭建过程. ...
- 使用mvn 将 pom文件推送到私服
1.业务场景 现在我有一个 *.pom文件 需要上传到私服. 比如 spring-cloud-dependencies-2021.0.9.pom 这个时候可以使用命令将这个文件传到私服. 2.上传脚本 ...
- feign 使用
feign 是netflix 提供的申明式的httpclient调用框架 整合方法 1.添加依赖 <dependency> <groupId>org.springframewo ...
- building qtqml requires python
编译Qt5.14.2的qtdeclarative发生错误:building qtqml requires python,系统是ubuntu18.04,安装有python3,修复需要做2步: 1.用na ...
- 实用干货分享 - Oracle数据库RPM部署指南
下载依赖和Oracle19c版本的RPM包 http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-dat ...
- 中电金信:亚洲TOP1 霸榜15年
近日,国际权威语言服务研究机构CSA Research公布了<2022年全球语言服务提供商100强>和<亚太地区TOP 30语言服务商>排名报告. 中电金信凭借卓越的品质管控. ...
- 【C#】萌狼学习C#那年写的笔记汇总
目录 习题汇总 例子汇总 报错解决 考前复习 习题汇总 [C#][平时作业]习题-2-数据类型运算符表达式 - 萌狼蓝天 - 博客园 (cnblogs.com) [C#][平时作业]习题-3-数组 ...