凌云时刻 · 技术

导读:阿里云智能资深技术专家韩伟东在首届中国云计算基础架构开发者大会上做了主题为《云原生底层系统思考》的技术演讲。

作者 | 韩伟东

来源 | 云巅论剑

前言

10 月 25 日,首届中国云计算基础架构开发者大会(简称 CID)在长沙召开,阿里云智能共分享 5 个演讲主题,阿里云智能资深技术专家韩伟东也在会上做了主题为《云原生底层系统思考》的技术演讲。

本文内容根据其演讲内容整理而成。以下为演讲全文:

云原生的发展

经过云计算十几年的发展和普及,用户逐渐从迁移上云演进到更好地使用好云的阶段。在传统模式下设计和实现的应用没法最大化的利用云计算基础设施的特点和能力,所以开发者开始基于云计算设施去设计和实现应用,这就是所谓的从云里长出来的云原生应用。2015 年 Matt Stine 给出了 twelve-factor applications 来定义云原生应用。2018 年,CNCF 给出了更全面的云原生定义,不仅涉及到应用,也包括代表技术、基础设施、运维等,可以说云原生已经从最初的应用层扩展到整体云计算技术栈。

相比于 IaaS,云原生应用场景有很多的不同,比如应用特点上有有状态和无状态以及长生命周期和短生命周期的区别,用户使用体验上有购买资源和按需使用服务的区别。所有这些差异点,能够很好的体现出云原生在提升效率和降低成本上的优势。

我们站在用户视角和系统视角来看一下云原生的变化。用户视角看,一个很大的变化是可以业务不相关的工作从应用剥离下沉到底层平台,用户只需要关心业务逻辑。

系统视角看,系统提供的用户服务界面上移,从物理资源层、虚拟化资源层上升到应用开发和运行层,云原生应用之下的底层系统技术栈变深。

云原生底层系统定义

服务界面上移这个变化使得应用开发和运行层之下的技术栈都变成了云厂商的内部系统,这需要从整体上重新去审视如何打造这个系统。我们从这个角度出发,给云原生底层系统做了一个定义:单机上支持应用代码和应用容器运行的整个软件系统。云原生场景下,在单机上是云原生应用+云原生底层系统,另外在集群层面,还有云原生应用平台,这个平台负责编排调度、服务治理、智能运维等。

云原生底层系统的构建思路

首先我们考虑云原生底层系统需要具备什么样的核心能力。

第一个能力是隔离性,在公有云场景,多租户的安全隔离是最基本的要求,同时在私有云场景和 Serverless 架构下各种业务应用混部部署,以及云原生轻量化后产生的高密部署,需要底层系统提供性能隔离和故障隔离上的保障。

第二个能力是兼容性,云计算是社会性的基础设施,面对的是全场景的用户,通用也是最基本的要求,云原生作为云计算新阶段,也必须保证好通用性,从底层系统上来说,需要有技术创新,但是需要做好各种兼容,应用兼容、服务兼容、云原生技术生态和标准兼容等,降低用户升级到云原生的门槛和成本。

第三个是效率,这是支撑实现云原生核心价值的能力,包括,资源效率:减少资源损耗,提高资源使用效率,降低成本;弹性效率:快速启动、并发效率等;运行效率:高性能。

IaaS 时代的运行单元是虚拟机,云原生时代需要什么样的运行单元?在企业内部,容器是一种很好的运行单元,但是普通容器存在很明显的缺陷就是隔离性,公有云场景的多租户安全隔离,私有云场景下性能隔离和故障隔离也不理想。兼顾隔离性、兼容性和效率,我们认为安全容器将会是云原生时代的重要运行单元。

实现安全容器有几种技术流派:

第一种是基于轻量级虚拟化和容器技术相结合的 MicroVM,这种方案整体上在隔离性、兼容性和效率更优,也是目前业界最主流的方案,各大云厂商都在积极投入。

下图是 MicroVM 的基本架构。

第二种是基于进程级虚拟化的应用内核方案,由于采用全新的用户态内核,兼容性不够好,同时对性能也有一定的影响。

第三种是 libos / unikernel,让应用带上轻量化的内核,一般都需要修改应用,兼容性不好。

安全容器作为运行单元已经体现出隔离性、兼容性和轻量化资源开销的好处,接下来我们看一下弹性效率方面。

启动速度是实现弹性效率的关键。

我们以一个应用容器的启动为例,可以分成如下几个主要的阶段,首先镜像加载是一个很耗时的阶段,一般需要网络下载和解压,需要用到按需加载或缓存等方法加速。网卡和磁盘的创建也比较耗时,要做到极速需要用到预创建这样的方法。安全容器自身的启动,需要通过轻量化设备模型和精简内核等方法。应用启动速度跟语言和应用自身有关,一般来说 Java 应用启动会比较慢,这方面已经有人在探索 Java 启动加速的相关技术。

这里稍微展开介绍一下我们在镜像加速上的方案。为了解决镜像下载和解压耗时大,以及镜像解压后无法再被校验,无法感知恶意篡改的问题,阿里云智能和蚂蚁集团的工程师一起实现了 Nydus 镜像加速服务,实现新的镜像格式,分成元数据和数据两层,并实现一个用户态文件系统,可以按需加载下载启动容器镜像,大大缩短镜像加载时间,并提供端到端的镜像数据一致性校验,从而让用户能够更安全快捷地管理容器应用。Nydus 已经正式开源,在 CNCF Dragonfly 项目中引入 Nydus 镜像加速服务。

欢迎大家关注和参与 Nydus 项目,开源代码地址:
https://github.com/dragonflyoss/image-service

接下来简单介绍一下实现底层系统高性能的思路。因为底层系统技术栈很深,而且这些技术栈是不直接暴露给用户,所以为打破边界和重塑提供了机会,我们的核心思路是通过全栈优化来实现高性能,从最底层的软硬协同,到 host 和 guest 内核的上下协同甚至融合,到最上面的中间件和预研 runtime 跟 OS 的垂直优化。

到这里我们把计算相关的部分告一段落,接下来看看底层系统的其它方面。

在 Kubernetes 服务网络方面, kube-proxy 基于 netfilter 框架,性能和扩展性比较差。Service mesh 引入 sidecar 架构,数据链路上额外增加网络上一跳,影响性能。我们的一个思路是通过 eBPF 来加速这些网络,对于 Kubernetes 网络,基于 eBPF 实现一种新的服务网络和服务策略 tc-ebpf。tc-ebpf 位于 Linux 协议栈的 L2 层,可以 hook 网络设备的入、出双向流量到 eBPF 实现的 datapath。性能相比 kube-proxy 有明显的提升。对于 service mesh,我们采用基于 eBPF 的 sockmap 进行加速。sockmap 允许将 TCP 连接之间的数据转发过程卸载到内核中,从而绕过复杂的 Linux 网络协议栈直接在内核完成 socket 之间的数据转发操作,减少了上下文切换以及用户态和内核态之间的数据拷贝操作,优化 TCP 连接之间 socket 数据转发的性能。

关于云原生底层系统的存储,我们从问题和场景需求两方面入手。

首先对于 9pfs 作为安全容器 rootfs 的问题,我们建议采用 virtio-fs 替换 9pfs,可以从性能上有数倍的提升。Serverless 场景高密部署和按需短时生命周期执行请求的特点,高速临时存储将会很重要,一方面可以考虑对现有的存储处理进行一定的简化提升性能,另一方面也可以考虑通过高速介质(比如 AEP、内存)进行加速。

安全方面,除了前面提到的多租户安全隔离,以及兼容支持各种云计算的安全服务之外,还要考虑云原生技术和安全技术结合支持新的业务场景。机密计算是一种解决数据安全的新方法,是在一个基于硬件的可信执行环境(TEE)中保护数据执行计算。为了在云原生场景支持机密计算,我们实现了Inclavare containers,一种在硬件强制实施的TEE中运行enclave runtime和可信应用的新型容器运行时:

l  兼容容器生态:OCI runtime和容器镜像标准

l 基于Library OS技术,改善enclave引入的约束条件所带来的兼容性问题

l 提供对高级语言Runtime的支持,进一步提升泛用性

l 定义通用的Enclave Runtime PAL API规范,构建Enclave Runtime生态

Inclavare containers 项目已经开源,项目官网:
https://inclavare-containers.io

开源代码:
https://github.com/alibaba/inclavare-containers

欢迎大家关注和参与!

阿里巴巴云原生底层系统:袋鼠

介绍完我们对云原生底层系统的一些思考,也简单看一下我们构建的云原生底层系统:袋鼠。

我们不仅仅实现安全容器和 inclavare containers 这样的全新运行单元,而且在云原生底层系统整体层面构建了一些关键能力。袋鼠已经开始规模化地支撑阿里巴巴的云原生产品和业务。

小结

云原生在重构整个软件生命周期,是一项体系化的工作,整体上云原生还处于早期阶段,云原生技术正在快速的发展演进。我们的判断是云原生底层系统将会迎来一波的技术创新高峰,我们在这里分享的一些思考主要是抛砖引玉,面向未来,希望能够跟同行们一起推动云原生底层系统技术的创新和突破,构建更好更强大的云原生服务提供给广大的用户。

END

往期精彩文章回顾

云湖共生,下一代数据湖来了?

您有一封阿里云自动化运维沙龙邀请函待查收

这款机器人也想体验双十一!

如何应对互联网和物联网化带来的工业安全新风险?

阿里马涛:重新定义云时代的开源操作系统

如何构建一套高性能、高可用性、低成本的视频处理系统?

新增“组件池”概念,平头哥剑池 CDK 新版本实现组件强复用

阿里云张献涛:公共云平台四大发展趋势

我对零售云在云原生体系中的角色的思考(下)

我对零售云在云原生体系中的角色的思考(上)

长按扫描二维码关注凌云时刻

每日收获前沿技术与科技洞见

2020CID|阿里云韩伟东:云原生底层系统思考相关推荐

  1. 伟东云学堂—几何画板学习

    http://www.wdyedu.com/course/150288 几何画板入门视频教程 转载于:https://www.cnblogs.com/duodragon/p/8149290.html

  2. 伟东集团与百度云在2017国际教育信息化大会达成战略合作

    2017国际教育信息化大会于7月10日至11日在中国青岛开幕.大会由联合国教科文组织主办,青岛市教育局承办,伟东云教育集团是唯一协办方.国际教育信息化大会是全球规格最高和最具影响力的互联网教育盛会之一 ...

  3. 阿里云马涛:因云进化的基础软件

    简介: 基础软件的云原生化. 编者按:2021 年10 月20 日,在2021 云栖大会·云计算产业升级峰会上,阿里云"因云而生"云原生心智大图正式发布,包含弹性计算.云网络.基础 ...

  4. CSDN:《新程序员003》正式上市,华为、阿里等 30+ 公司的云原生及数字化实战经验

    CSDN:<新程序员003>正式上市,华为.阿里等 30+ 公司的云原生及数字化实战经验 目录 <新程序员003>正式上市,华为.阿里等 30+ 公司的云原生及数字化实战经验 ...

  5. 宜泊科技与阿里云联合打造基于云原生架构的停车系统解决方案,加速智慧停车产业数字化发展

    宜泊信息科技有限公司成立于2015年6月3日,总部设立在成都.目前员工百余人,公司股东成员来自联想.腾讯.华为等知名企业.宜泊科技产品拥有多项停车场领域发明专利和软件著作权,解决方案已经广泛投入商业化 ...

  6. 阿里云PolarDB数据库将云原生进行到底!业内首次实现三层池化

    10月20日,在2021云栖大会上,阿里云宣布自研云原生关系型数据库PolarDB重磅升级,实现内存池化.多主架构.HTAP实时分析等创新功能,进一步引领云原生数据库技术的持续创新. 阿里云智能数据库 ...

  7. 如何选择最优路径完成云原生上云?听这场阿里云特别分享【云原生技术与最佳实践】

    云原生是一个较为广义的概念.对于云原生,不同的企业有着不同的理解. 如何判断项目是否已经到了云原生上云的阶段:云原生上云的方式该怎样抉择:想要把云原生技术发挥到极致又需要考虑哪些因素? 面对诸如此类问 ...

  8. 在生产环境中,阿里云如何构建高性能云原生容器网络?(含 PPT 下载)

    作者 | 溪恒  阿里云技术专家 直播完整视频回顾:https://www.bilibili.com/video/BV1nC4y1x7mt/ 关注"阿里巴巴云原生"公众号,后台回复 ...

  9. 阿里云江岑:云原生在边缘形态下的升华

    简介:5月20-22日,第十三届中国系统架构师大会(SACC2021)在云端进行网络直播,主题为"数字转型.架构重塑".阿里云边缘云原生技术专家江岑,分享了阿里云在边缘云原生的探索 ...

  10. DTCC 2020 | 阿里云程实:云原生时代的数据库管理

    简介:随着云原生技术的不断发展,数据库也逐渐进入了云原生时代.在云原生时代,如何高效.安全且稳定地管理云上与云下的数据库成为摆在企业面前的一大难题.在第十一届中国数据库技术大会(DTCC2020)上, ...

最新文章

  1. 医 系统 springboot搜索到的spring boot 的javaweb项目
  2. shell匹配IP和shell正则匹配捕获引用
  3. android特效按钮点击效果
  4. postgresql 9.1 暂停 stream 后使用 rsync 异机同步文件
  5. 我国网民规模已达7.51亿 但网络安全值得警惕
  6. 爬取百度网盘资源报user is not authorized, hitcode:119
  7. Linux中7个判断文件系统类型的方法
  8. js中的总结汇总(以后的都收集到这篇)
  9. 编程java 格式_Java代码的基本格式
  10. 中文NER的正确打开方式: 词汇增强方法总结 (从Lattice LSTM到FLAT)
  11. Java新手小白入门篇 Java面向对象(一)
  12. 如何用计算机算rsd,rsd计算(rsd计算公式在线版)
  13. 骑士cms最新全局SQL注入(官方奇葩修复案例)
  14. Diskpart 实现分区自动化
  15. Word公式转LaTex神器
  16. 漫画:什么是服务熔断
  17. Android学习之zygote启动流程
  18. 创建Deployment时指定hostnetwork是干啥的?
  19. Linux宝塔面板命令大全,快速学会
  20. MATLAB2016笔记(五):进阶矩阵操作

热门文章

  1. [北京]招聘C++程序员
  2. 设计模式-第八篇之桥接模式
  3. Ubuntu安装Oracle手册(简单版)
  4. 导出excel用ajax不行,提交form表单可以
  5. 在2003上实现Custom Task Pane
  6. 测试VGA12H直接写屏速度 V1.1
  7. Building a Better Vocabulary: Lecture 1 Five Principles for Learning Vocabulary
  8. 《图解算法》学习笔记之选择排序
  9. atitit 编程语言选型知识点体系.docx 编程语言选型时,你需要考虑的几个方面 目录 1. 1.2. 类型系统 5 1 2. 1.5. 语言规范 25 1 3. 1.6. 编程范式 52
  10. Atitit 前端技术体系 目录 1. 基础系列 2 1.1. NUI CLI GUI 2 1.2. MVC WEBFORM PAGE模式 stage模式 2 2. 技术应用系列 2 2.