5

袋鼠:云原生底层系统探索和实践

 3 years ago
source link: https://kernel.taobao.org/2019/10/kangaroo-overview/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Oct 17, 2019 • 韩伟东 黄韶宇

袋鼠:云原生底层系统探索和实践

本文根据云栖大会系统软件专场内容整理

随着云计算的发展,云基础设施已经成为很多企业以及用户基础设施重要的组成部分,部分企业甚至会将自己的全部业务都托管在公共云环境上。而伴随着这些基于云计算基础设施进行开发、运维业务体量的扩张,云原生的概念也开始悄然进入人们的视线,并逐步发展壮大。

4.png
从2013年开始正式被提出,到2015年CNCF建立并至今,云原生的概念在一直不断地发展完善,虽然现在我们仍无法给云原生一个严格明确的定义,但是其特征已经相对比较明显,比如容器化、serverless化等等。然而可以看到的是,面向云原生更多目光还是聚焦在应用定义、编排管理、runtime等软件栈上,很少有人会去关注底层系统的实现,大家都天然地将这部分领域交由云厂商去解决,那么在这一块云厂商是否就能够轻松应对了呢?
当然不是。
首先,相较于传统的业务形态,云原生业务对于资源需求类型有了变化,从传统云时代获取虚拟机资源(虚拟化硬件)到获取虚拟OS资源(容器)到获取虚拟运行时资源(FaaS),用户对于资源的抽象层级以及粒度有了更高的要求。
2.png
同时,云原生业务天然伴随着对快速弹性的需求以及短时运行等特征,会要求云基础设施提供在短时间内快速地提供资源的能力,并且能够承受资源频繁创建、销毁的压力。
传统的云服务向用户提供的还是大粒度的资源(VM),用户拿到资源之后,依然需要自己做资源的拆分以及抽象。同时,传统云服务依然有厚重的软件分层,并为了兼容传统业务模型引入的大量复杂的功能,这与云原生业务需求的轻量、弹性、精简的模型是不匹配的。使用老的底层架构去支撑云原生场景,除了会给自身架构带来巨大的流量冲击之外,提供的服务效果也会大打折扣,甚至成为云原生业务的瓶颈。
阿里作为云原生的积极践行者,我们需要去思考,一个优秀的云原生基础底座应该拥有什么样的能力,如何才能打造一个新的底层系统。本文会介绍一下我们的思考以及探索。
首先,从云原生场景特点出发,我们认为需要从3个维度对底层系统进行设计,分别是资源、执行单元、系统能力,只有做到这3个层次的抽象才能够完整的支撑云原生业务。在此思考上,我们推出了袋鼠,打造出属于阿里的云原生底层系统。
5.png
在执行抽象层面,我们推出了推出了极致轻量、阿里云安全沙箱(Alibaba Cloud Sandbox),实现
  • 云上多租户安全
  • 上层透明无感知,原生容器体验
  • 云原生标准和生态兼容、无缝对接

在实现上,我们采用硬件虚拟化技术隔离,更精简轻量的实现减小攻击面。同时我们也在构建enclave级的可信执行环境的支持。
在资源抽象方面,我们追求极致的轻量,融合不同层次间的重复部分,精简不需要的功能,实现极简设备模型,最小化内核等。通过这些轻量化实现,目前安全沙箱实例内存消耗小于2.5MB,启动速度已经远远小于500ms,且单机并发创建速度达到了200个/s,已经可以比较好地满足云原生业务的快弹、高密等诉求。
在性能方面,我们也做了很多探索。云原生场景,用户更专注于应用逻辑,更多的技术栈内容下沉到基础设施,服务边界的上移。这样就给底层系统更多的施展空间,因为原有一些分层边界可以被打破,可以融合和垂直优化。在袋鼠系统中,我们基于不同层次融合的全栈优化思路实现高性能。

1.png
基于以上思路,我们在Redis以及Dragonwell(阿里云JDK发行版)都进行了全栈优化的实践探索,可以看到不错的效果:Redis在袋鼠上的吞吐性能相比传统VM场景性能提升超过1倍,Dragenwell在袋鼠上运行相比传统VM场景能提升JVM的协程调度效率和降低CPU资源利用率(10%左右)。
袋鼠已经对接和支持多个阿里云云原生产品,包括弹性容器实例ECI、容器服务ACK以及Serverless应用引擎SAE。
3.png
云原生不仅仅是上层应用开发、交付、运维的变化,同时也要求底层系统进行升级演进。云原生时代大幕已经拉开,阿里已经在全方面的构建云原生能力,并结合自身业务的云原生化进行大规模的实践,会持续不断的为阿里云用户提供更多更好的云原生产品和服务。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK