浅谈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的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
随机推荐
- C#-公众号H5页面授权获取用户code、openid、unionid
一:配置信息 公众号设置: 1:设置 IP白名单(所在的服务器ip).记录公众号APPID和APPsecret; 2:设置 网页授权域名; 二:页面授权----[html中获取code] 1:页面引入 ...
- Shiro 漏洞复现
Shiro 漏洞复现 shiro是什么? ApacheShiro是一个灵活且全面的Java安全框架,它为现代应用程序提供了认证.授权.加密和会话管理等核心安全功能. shiro组件识别 1.在访问及登 ...
- jQuery 元素信息
先贴出元素模型信息 1.获取内容区大小 css():返回值是带单位的(getComputedStyle(node).width) <script> $(function(){ consol ...
- seldom-platform:颠覆传统的自动化测试平台
seldom-platform:颠覆传统的自动化测试平台 seldom-platform是一个自动化测试平台,其特点是让会写代码的测试人员能够通过seldom框架高效地完成自动化用例的编写,并将剩下的 ...
- uni-app 横竖屏问题
前情 uni-app是我很喜欢的跨平台框架,它能开发小程序,H5,APP(安卓/iOS),对前端开发很友好,自带的IDE让开发体验也很棒,公司项目就是主推uni-app 坑位 最近有用户反馈闪屏页也叫 ...
- OS之《线程管理》
进程是系统资源分配的最小单位,线程是最小的执行单位. 然而,现在的高级设计底层还是基于这个理论基础实现的.比如java的线程,还有最新版本的JDK的协程都是在为了更好的让CPU执行任务. 线程是为了使 ...
- IOS网络状态变化监听
IOS网络状态变化监听 使用Alamofire库的NetworkReachabilityManager 一共有三种状态 /// It is unknown whether the network is ...
- Linux系统部署FineReport
1. 概述 1.1 应用场景 帆软提供 Linux 操作系统下可直接安装使用的 FineReport 设计器,满足不同系统的用户的操作需求. 支持中标麒麟.银河麒麟.UOS 的 Linux 操作系统 ...
- VB 的一些歧义(不断更新)
foo . bar 它可能是 foo.bar() 也可能是 foo(withObj.bar). f (a) , b 它可能是 call f(a)._DEFAULT(a)(Missing, b) 也可能 ...
- JavaWeb HttpSession
/** * 使用session共享数据 */ public class SessionDemo1 extends HttpServlet { @Override protected void doPo ...