浅谈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的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
随机推荐
- OSG开发笔记(三十三):同时观察物体不同角度的多视图从相机技术
前言 前面的相机hud可以单独显示图形,继续深入研究相机hud,技术就是子视图了,实现该功能的直接技术是从相机技术. 本篇描述osg从相机技术 Demo 相机视口的关键调用 ...
- 简单几步,基于云主机快速为Web项目添加AI助手
在华为开发者空间,借助华为云对话机器人服务 CBS您可以零代码创建一个大模型 RAG (Retrieval-Augmented Generation,即检索增强生成)应用,来实现 AI 助手的智能问答 ...
- TypeScript名词解释系列:tsconfg中的target,module和moduleResolution
tsconfg中的target,module和moduleResolution target 就是TypeScript文件编译后生成的javascript文件里的语法应该遵循哪个JavaScript的 ...
- OSPF协议
OSPF(Open Shortest Path First)开放式最短路径优先,是一种链路状态型路由协议,用于在网络中计算最短路径.OSPF协议是基于Dijkstra算法的,使用链路状态信息来计算最短 ...
- Linux中的用户管理-创建删除修改
用户管理 一.用户分类 用户分为三类: 1.管理员 root root UID:0 #拥有最高权限 默认系统中就一个 UID即user ID 类似于身份号码,唯一的,不可重复 2.虚拟用户 作用:在运 ...
- JConsole 远程监控Tomcat服务
JConsole 远程监控Tomcat服务 1.概述 JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动.如果要把一个应用以可管理的形式启动, ...
- PTA-1002
原先主要错误: 没有考虑到有关0的相关情况 观看的大佬代码 整理思路 无非就是在相同的指数的情况下,系数相加 因为最后是要从大到小输出来. 注意 要对最后的结果进行四舍五入: PTA的英语题对英语不好 ...
- Electron 通信
1.web向主进程发送消息 (单项) 使用ipcMain.on 监听事件 const hanle = (event, data) => { console.log(event) console. ...
- Mplus数据分析:性别差异gendergap的相关研究如何做?
再出一篇用mplus做的多组比较和中介分析的文章,专门谈谈诸如性别差异的各种研究的分析方法,从本文中大家不止可以知道性别差异,各种差异,各种gap只要你感兴趣都可以套进来这个方法来进行你的研究设计. ...
- 【Java】获取近六个月的年月
数据库里面存储的字段类型就是varchar,数据格式就是类似2024-12这样的年月格式. 目标: 以当前月份为标准,向前获取近6个月的年月(year_month)形成列表 // 获取近6个月的年月列 ...