阿里云马涛:什么是操作系统的云原生?
简介: 云原生已经成为IT界最流行的一个定语,似乎不谈云原生就out了,但什么才是真正的云原生?
注:本文作者马涛,阿里云智能研究员、阿里巴巴集团内核团队创始人之一、阿里云基础软件部操作系统团队负责人。先后在ORACLE、阿里巴巴负责Linux以及操作系统内核相关的研发工作。十五年以上操作系统和内核相关研发经验,国内知名Linux内核研发人员,在文件系统、内存管理、通用块设备层等方面均有深厚的积累,多次受邀在国内外知名Linux操作系统以及内核相关会议上发表讲座。
现在我们在各个场合可以看到各种各样的“云原生XXX”,云原生已经成为IT界最流行的一个定语,似乎不谈云原生就out了。但什么才是真正的云原生?把老的技术跑在云上就可以了么?貌似不太行!用阿里云高级研究员蒋江伟的一句话来定义——“因云而生才是云原生”。简单来说,一个产品或者技术要能真正加上云原生这个定语,一定要有因云而生的创新和演进,所以想加上云原生这个定语可不是容易的。如果各位读者感兴趣,可以上网搜索文章“阿里云蒋江伟:什么是真正的云原生?”
今天,我就毛遂自荐来讲讲云原生操作系统。
大家可能比较好奇,操作系统不是所有用电脑的人每天都在使用的玩意么?“操作系统原理”不是一般计算机系同学的第一门艰深的专业课么?现在最流行的操作系统Linux不是1991年就由Linus Torvalds大神创立了么?以上问题的答案都是肯定的,那么,这么一个颇为传统的系统软件也可以云原生了么?对,操作系统也要与时俱进!所以,今天我站在操作系统的角度,来谈谈这个颇为传统的系统软件是如何因云而生、因云而变,成为“云原生操作系统”的。
在展开讲技术之前,我先简单介绍一下自己。我是从2006年开始与操作系统结缘的,最开始是在Oracle从事操作系统的开发工作,2010年加入淘宝核心系统做操作系统,作为阿里最早一批做操作系统的同学,从淘宝到阿里云一直坚守在操作系统领域,一路参与和见证了操作系统在阿里因云而生的演进发展。虽然淘宝也是一家互联网公司,但是淘宝的操作系统和传统的操作系统其实区别并不大。一切因云而生的改变从我2012年从淘宝转入阿里云开始。
那个时候,阿里云的操作系统和淘宝的有区别么?客观来说区别不大。唯一的一点点区别:在淘宝,操作系统是淘宝的一个基础组件;而在阿里云,操作系统和虚拟化成为了第一代云计算的基石,这是操作系统和云的第一次亲密接触。
2000年左右,VMware和Xen虚拟化技术相继出现,操作系统通过将物理资源虚拟化达到提高资源利用率和灵活调度的目的,最终催生了云计算的诞生。早期的AWS、阿里云都是利用这一技术提供虚拟主机的服务。这是云原生么,是因云而生的么?当然不是。首先这些云厂商大都是在线下硬件上实现一个虚拟化层(hypervisor),把原来直接操控硬件的操作系统架到hypervisor上运行,然后服务器物理资源层面的抽象和管理都由hypervisor重新实现。那么,这个事情线下能做么?绝对可以,所以显然这不符合云原生的定义。虽说这是云的开端,但这不是云原生的。
时间来到了2013年,操作系统和云的第二次亲密接触源于容器的诞生和发展。与虚拟机的服务器资源虚拟化不同,容器是操作系统虚拟化,在技术栈上上升了一层——通过内核里实现的cgroup和namespace等技术为不同应用提供轻量、隔离的运行环境。2013年docker的横空出世,使得应用容器的打包分发变得非常简单易用,随后k8s等容器编排技术的出现,容器生态系统得到了快速的普及和发展,容器也迅速成为应用打包分发和开发测试的主流形态,逐渐成为云计算的主要运行单元。
这就是CNCF定义的云原生了,但它只是“狭义”的,操作系统在这个“狭义”云原生中起到了很大的作用,但其实它并不是真正意义上的“因云而生的”,也没有在云上体现任何革命性的技术革新。
不过仔细观察一下上图,我们可以发现——容器在安全方面的不足在云上成为了一个大问题。一方面传统的操作系统对于容器之间的干扰问题没有很好的解决方案,另一方面容器之间还存在彼此攻击,共享一些关键资源等非常严重的安全问题。机会总是留给有准备的人,此时的操作系统终于需要因云而变、为云演进了。我们基于操作系统实现了轻量级虚拟化和应用内核等技术,打造了一种全新的安全的容器,我们称之为安全沙箱容器。
沙箱容器在解决容器安全隔离问题的同时,仍然保留容器完整的技术生态和体验,可以跟普通容器无缝的混合使用。这是操作系统在容器场景上因云而生的一个重要演进,至此操作系统完成了“因云而生”的漂亮转型,成为一个云原生操作系统。目前这套系统已经服务于阿里集团各个云原生相关业务,也通过阿里云上各种容器实例产品服务于我们的云客户。
故事到这里还没有结束。面向未来的云原生,操作系统如何继续“因云而与众不同”呢?这就不得不提云原生中另外一个趋势Serverless。
2019年,UC伯克利大学预测Serverless将会逐渐取代Serverful计算,成为云时代的新计算范式。随着云原生理念的推广以及各种云原生技术的不断发展,Serverless计算的趋势在加速。在这种新场景中,用户只需要专注于应用和业务逻辑,更多的通用功能、资源和系统能力都下沉到云,用户不需要提前规划容量,不需要运维底层系统,可以真正像用水、用电一样按需使用按需付费,Serverless将大幅提升云的生产效率。
背景介绍完,问题也来了—— Serverless和操作系统有啥关系呢?我认为要构建好Serverless服务,操作系统一定不能缺席。由于Serverless场景下服务边界的上移,对用户来说应用容器或函数代码之下的系统就是一个整体,用户不再感知底层系统的技术栈分层。这个变化给技术垂直整合创造了条件。我们认为云原生的操作系统需要进行整体性的全栈优化和重塑,这样才能为Serverless提供更优的底层系统能力,基础运行环境、资源弹性、高效执行等能力也将因此得到极大的释放。
如果说在容器和K8S时代操作系统是“因云而演进”,那么到了Serverless时代,我们则要彻底创造出一个全新的云原生操作系统。通过底层系统全栈技术的协同融合,为云原生平台和应用提供高效和创新的云原生系统服务。这次变革和创新的力度对于传统操作系统而言是前所未有的,但是我们坚信,操作系统一定会为云而改变,为云而重生。在阿里内部,我们给这样的云原生操作系统起了一个响亮的名字——“袋鼠”。
多年之后,也许大学课程“操作系统原理”里的内容会因为这次变革而发生翻天覆地的改变,但我们坚信,这就是云带给我们这一代操作系统研发人员的使命:重新定义操作系统。只有通过因云而生的技术创新打造出来的操作系统,才是真正的云原生操作系统。
原文链接
本文为阿里云原创内容,未经允许不得转载。
阿里云马涛:什么是操作系统的云原生?相关推荐
- 阿里云马涛:因云进化的基础软件
简介: 基础软件的云原生化. 编者按:2021 年10 月20 日,在2021 云栖大会·云计算产业升级峰会上,阿里云"因云而生"云原生心智大图正式发布,包含弹性计算.云网络.基础 ...
- 始于阿里,回归社区:阿里8个项目进入CNCF云原生全景图
破土而出的生命力,源自理想主义者心底对技术的信念. 云原生技术正席卷全球,云原生基金会在去年KubeCon +CloudNativeCon NA的现场宣布: 其正在孵化的项目已达14个,入驻的厂家或产 ...
- 阿里云云效技术专家分享:云原生开发、调测及可靠发布解决方案
简介: 高效开发.稳健发布. 在云原生环境中,基于Kubernetes的工具链一方面简化了开发者的许多日常琐碎,另一方面也带来了许多新的概念和工作方式的改变.本篇文章将聚焦于云原生基础设施,谈谈如何在 ...
- 阿里云云效何勉:云原生是“精益实践”的最佳助力
简介: 1月15日,国内知名"精益产品开发"研究和实践者.阿里云云效资深技术专家何勉在阿里云<云计算情报局>线上直播栏目中,分享其对研发新模式的最新思考,提出" ...
- 阿里技术专家:进击的 Java ,云原生时代的蜕变
作者| 易立 阿里云资深技术专家 导读:云原生时代的来临,与Java 开发者到底有什么联系?有人说,云原生压根不是为了 Java 存在的.然而,本文的作者却认为云原生时代,Java 依然可以胜任&qu ...
- 云原生是全云开发的敲门砖?蒋涛独家对话阿里云贾扬清、华先胜等大咖
新一轮科技革命和产业变革正重塑全球发展格局,以云计算为代表的新一代信息技术相互渗透,成为数字经济智能和创新发展新引擎. 过去 12 年,人们对云计算的讨论从原来的"为什么上云",到 ...
- CSDN 独家对话阿里云贾扬清、华先胜等大咖,剧透阿里云原生技术密码
新一轮科技革命和产业变革正重塑全球发展格局,以云计算为代表的新一代信息技术相互渗透,成为数字经济智能和创新发展新引擎. 过去 12 年,人们对云计算的讨论从原来的"为什么上云",到 ...
- 阿里云金融创新峰会云原生分论坛圆满举办,加速金融行业落地云原生
随着云计算在多个行业的深入应用,企业应用构建面临资源弹性.系统稳定.应用敏捷.业务智能.可信安全等新的问题和挑战,云原生已经成为云时代业务应用构建的主流模式,全面容器化.核心技术互联网化和应用 Ser ...
- 阿里云李响荣获 2020 中国开源杰出贡献人物奖,我们找他聊了聊开源和云原生
作者 | 禾易 在第十五届"开源中国开源世界"高峰论坛上,阿里云资深技术专家.etcd 创始人.CNCF TOC 李响荣获 2020 中国开源杰出人物贡献奖.恭喜李响! 去年,全球 ...
最新文章
- 优化eclipse启动速度
- python C++ 求逆矩阵库
- oracle惯用缩写的含义
- python基础练习(八)
- ScriptManager 帮助您实现 Web 应用程序的 AJAX 功能
- [architecture]-ARMV7的模式切换总结
- 十一、深入Java的判断语句
- 使用jMeter构造逻辑上有依赖关系的一系列并发请求
- USACO 6.1.3 Cow XOR
- python3 random模块_Python3 中 random模块
- vue aplayer 进度条无法拖动_「最近项目小结」使用Vue实现一个简单的鼠标拖拽滚动效果插件...
- Xcode12 “PushKit apps that use VoIP push must link either CallKit or IncomingCallNotifications
- 【android自定义控件】自定义View属性
- Android Netd ndc
- 佳博打印机驱动安装方法
- Unity在运行时使用FBX SDK的API
- MATLAB做驻波,SMB色谱分离驻波优化设计的一种Matlab实现
- php中怎么批量修改图片大小,怎么批量修改图片大小 光影魔术手批量处理图片...
- 大数据资源争夺战此起彼伏 对用户而言是福是祸?
- 什么硬盘保存时间长 硬盘的保存时间
热门文章
- HTML的script标签
- AndroidManifest.xml详解
- python链表实现栈_python实现链表队列栈
- pytorch微调bert_小版BERT也能出奇迹:最火的预训练语言库探索小巧之路
- windows多用户 文件夹不共享_手把手教你如何使用Tekla多用户
- Java 数据库进度条_java进度条
- vs2012 entity framework mysql_MVC4,MVC3,VS2012+ entity framework Migration from Sqlserver
- springboot全局常量_Spring-Boot配置属性和环境变量的加载顺序
- 985博士妈妈辅导女儿作业被气哭:博士父母带娃真是太难了...
- 女孩子们,你的专业由你做主