Serverless无服务应用架构纵横谈2:边缘计算激战正酣

合集 – Serverless无服务应用(2)

1.Serverless无服务应用架构纵横谈2:边缘计算激战正酣07-142.Serverless无服务应用架构纵横谈2017-12-08

收起

 

Serverless无服务应用架构纵横谈2

 

前言

6年前,我写了一篇《Serverless无服务应用架构纵横谈》。

文中说到无论是公有云FaaS还是私有云FaaS,都不是云计算的未来。

因为无论是Kubernetes还是PHP、Python、Node这些传统技术栈都太重了。

那么,6年来,Serverless又有了哪些变化,是否有了转机?

 

边缘战史

 

内容分发网络:EdgeComputing1.0

从历史看,内容分发网络CDN发生在1990年代末和2000年代初,当时Internet的使用和网站正经历爆炸性的增长。

但随着用户的增多和地域的分散,页面加载时间成为网站提供商关注的焦点,网站运营商开始痴迷优化页面加载时间。

在这种背景之下,很多公司开始涌现,于是CDN行业诞生了。从网络拓扑上看,CDN正位于互联网的边缘,边缘大战从此开启。

 

边缘Serverless:EdgeComputing2.0

2017年,亚马逊云科技的CDN服务CloudFront推出了Lambda@Edge,允许在全球范围内的CloudFront边缘位置执行Lambda函数。

在2008年创立时,CloudFront在全球范围内仅有14个边缘位置。如今,CloudFront在全球50个国家的100多个城市和都市圈部署了超过600个边缘位置。

正是Lambda@Edge将Serverless与Edge computing结合,引领了Serverless前进的方向。

 

彼时的Lambda@Edge,还没有王者之气,因为它使用的还是传统的Node技术栈。

这使得它无论是空间占用,启动速度,还是运行速度,都是十分低下的,不过边缘计算带来的好处,已经显露无疑。

无论位于全球何地访问网站,延迟时间都大幅减少。这给不少站点带来了大量流量。Lambda@Edge慢慢开始火爆。

 

2018 年,知名的CDN厂商Cloudflare 发布了 Cloudflare Workers (CFW)。这是一个基于 Chromium V8引擎的 FaaS 平台。Cloudflare Workers将冷启动时间减少了100倍,进入到毫秒阶段。并将内存使用量减少了10倍,从而可以更有效地利用硬件资源。

正是Cloudflare Workers的出色表现,将Serverless的长处充分展示出来,从而迎来了Serverless的迅猛增长,而Cloudflare也成功从CDN厂商转型为边缘云计算的头部玩家。

  

边缘云原生:EdgeComputing3.0

2020年,一家于2011年3月才成立的CDN厂商Fastly, 内测了其边缘计算产品Compute@Edge,有约 60 个客户参与 Beta 测试,并在 2021 年正式推向市场。

Fastly没有依赖现有技术来进行无服务器计算,而是决定全心投入WebAssembly,并构建了自己的Lucet编译器和运行时,对性能、安全性和紧凑性进行了优化。

WebAssembly 的前身是 Mozilla 2010年 创建的 Emscripten 项目。2018 年 7 月 WebAssembly 1.0 草案正式发布,在 2019 年 12 月正式成为 W3C 国际标准,成为与 HTML、CSS 和 JavaScript 并列的第四个前端技术。

Fastly冷启动时间完全进入微秒级别–官方宣称为35微秒。这至少比V8引擎快100倍,后者需要3-5毫秒才能启动(3,000到5,000微秒)。同样,由于Lucet仅包含运行已编译的汇编代码所需的代码模块,因此它只需要几千字节的内存。这大约是V8引擎使用的3MB的千分之一。

Fastly公司开源了他们的 Lucet 项目。而这个项目最终孵化了wasmtime。

 

Serverless无服务应用架构纵横谈2:边缘计算激战正酣

 

2017至2021年,4年时间,经过两次指数级性能提升,Serverless启动从秒级进入到微秒级。不仅制造了两家现象级厂商,也彻底激活了Serverless市场。

 

而在2019 年,Docker 创始人 Solomon Hykes 发布了一条推文,他说如果 2008 年就诞生 WebAssembly 和 WASI 的话,Docker 就没有必要诞生了。

这也就表明,最主流的容器技术已经从Docker和Kubernetes,转向了WebAssembly,它比原生容器更轻量,更容易控制,跨平台特性也更好。

事实上,WebAssembly不仅替代了Docker,还替代了Java跨平台的支柱地位,也是后者近年来占比大幅退步的根本原因。

 

Serverless无服务应用架构纵横谈2:边缘计算激战正酣

 

边缘战士

 

平台厂商

CNCF(云原生计算基金会)

CNCF 成立于 2015 年 12 月,它是 Linux 基金会的一部分。在成立之初,CNCF 得到了 Google 和 SoundCloud 的支持,这两家公司分别捐赠了著名的 Kubernetes 以及 Prometheus,在当时,一并作为会员加入 CNCF 的企业还有:Cisco、CoreOS、Docker、Google、华为、IBM、Intel 和 Redhat 等。

从成立时间看,彼时正在流行Kubernetes ;从成员看,都是传统云计算的大型基础软硬件厂商;从内容看,CNCF定义了云原生:容器化、微服务、可编排。

从这些可以看出,云原生就是将计算机云看成一台实体电脑,抹平硬件和操作系统的差异,并方便运行程序的基础软硬件设施。

CNCF的出身决定了它更强调治理,将WebAssembly做为Docker的替代品。

 

Bytecode Alliance(字节码联盟)

由 Mozilla、英特尔、RedHat 和 Fastly 公司宣布成立字节码联盟(Bytecode Alliance)。Bytecode Alliance 是一个推动 WebAssembly 标准化的组织,该组织正在推动标准化的 WASI(WebAssembly System Interface),使 WebAssembly 能够安全地访问文件、网络和内存等系统资源,让WebAssembly 运行环境从浏览器转向服务器。

BA的出身决定了,它更强调WebAssembly的多样性,在更多的领域发挥作用。

 

运行平台

主要有四大平台。

 

WasmEdge 

https://github.com/WasmEdge/WasmEdge

WasmEdge 可以说是目前最受关注的 WebAssembly 虚拟机实现,因为它不仅仅是 CNCF 推荐的 WASM 虚拟机,更是 Docker 内置的 WebAssembly 虚拟机。WasmEdge 是由美国的袁钧涛(Michael Juntao Yuan)发起,是由 CNCF 托管的云原生 WebAssembly runtime。它广泛应用于边缘计算、汽车、Jamstack、Serverless、SaaS、服务网格,乃至区块链应用。WasmEdge 可以进行 AOT (提前编译)编译器优化,是当今市场上最快的 WebAssembly runtime 之一。可以预计,随着 Docker Wasm 的普及,WasmEdge 将成为最流行的 WASM 虚拟机实现之一。

 

wasmtime

https://github.com/bytecodealliance/wasmtime

2022 年 9 月份,历经三年开发,Bytecode Alliance(字节码联盟)宣布 WebAssembly runtime —— Wasmtime 1.0 正式发布,并可用于生产环境。

wasmtime 使用 Rust 语言开发完成,并提供了 C/C++、Python、.NET、Go 等语言接口。

Serverless无服务应用架构纵横谈2:边缘计算激战正酣

 

WAMR

https://github.com/WAVM/WAVM

wasm-micro-runtime 也简称为 WAMR,与 wasmtime 一样是隶属于 Bytecode Alliance 的开源 WebAssembly 引擎项目,适用于嵌入式平台、各类 IoT 设备、智能合约和云原生等场景。名字中的 micro 也正是它的特点之一: WAMR 的二进制产物很轻量,纯 AOT 配置的产物体积只有约 50KB,非常适合资源受限的宿主。

  

wasmer 

https://github.com/wasmerio/wasmer

Wasmer 是支持 WASI 和 Emscripten 的通用 WebAssembly 运行时,提供基于 WebAssembly 的超轻量级容器,专注于支持在任何平台上运行 WASM 代码,从桌面端到云端、以及 IoT 设备,并且能嵌入在任何编程语言中。

 

开发语言

绝大多数的编程语言,都已经支持WebAssembly。

 

编译直出型语言

Rust、C/C++、Zig这种直接编译输出的语言无需任何依赖;

Emscripten,这是一个将 C/C++ 代码转换为 WebAssembly 模块的LLVM工具链。
2016 年 Rust 1.14发布,开始支持 WASM
2019年发布的Zig 0.5.0已开始支持WebAssembly和WASI(Web Assembly System Interface)

 

运行时GC型语言

Kotlin、Swift、Go这种带有GC的语言需要运行时代码或者依赖Wasm-gc;

2021 年,WebAssembly 开始支持 GC(垃圾回收器)
Go 1.21添加了一个新的端口,通过新的GOOS值wasip1来定位WASI预览1系统调用API。该端口建立在Go 1.11引入的Wasm端口的基础上。
Kotlin 1.8.20 版本,包括一项名为“Kotlin/Wasm”的实验性功能,明确将 WebAssembly 设为编译目标。
新开源项目SwiftWasm旨在将WebAssembly后端集成到官方Swift编译器中,该项目仍处于最早阶段。

 

托管运行时型语言

.net与Java这种重运行时的语言需要托管运行时;

Blazor是一个使用 .NET框架和C#编程语言Razor语法构建Web应用程序的UI框架
静态编译组合成wasm的代码。这些代码包括Mono C 运行时平台和开发者的.NET代码
TeaVM 现已支持将 Java 字节码编译成 WebAssembly

 

虚拟机依赖型语言

JavaScript、Python、Ruby这些脚本语言需要虚拟机运行程序;

JavaScript 用户,直接通过浏览器内置的 WebAssembly 模块,浏览器环境之外的 WASM +JS虚拟机
Ruby 3.2 也增加了基于 WASI 的 WebAssembly 支持。使得 CRuby 二进制内容可用于浏览器、以及 WASI 环境。
Python 3.11 对 wasm32-emscripten 和 wasm32-wasi 提供了支持,从而也实现了在浏览器执行 Python 的梦想。

.

新型专用型语言

凹语言,Moonbit这些为WebAssembly而生的语言最没有负担。

2022年7月,国内 Gopher 也发起了针对 WebAssembly 平台的凹语言。
MoonBit 负责人张宏波称,MoonBit 编译器预计在 2024 年第二季度末达到 Beta 状态,到时将会正式公开。

 

边缘战场

云原生

云原生的定义很复杂,原因是利益牵涉方太多,以我们这些纯路人的视角来定义,反而清楚得多。

云原生 = 以Docker为代表的容器技术 + 以K8S为代表的编排工具 + 以Wasm为代表的原生应用平台

最终,所有的东西都会被Wasm替代,容器技术大幅简化变成专用Linux、K8S也注定会被WASM编排工具替代。

Wasm会统一云原生生态,过程可能还要持续多年。

 

Serverless决战之地

Serverless 终于等到了它的理想战场,只有在数量庞大的边缘节点,无服务这种不运行不占用资源的特点才得到充分利用。

试想一下,在全球几百个边缘节点各开一个Docker,是单一服务器资源占用的数百倍

而在全球几百个边缘节点运行Serverless 的次数,与单一Serverless 服务器的资源占用相同

所以,前言中问题的答案很明显了,边缘云原生Serverless 就是未来,而且未来已来。

还找不着北的国产大厂们,不要犹豫了。

 

云计算厂商

主流的云计算厂商还在传统的云计算模式中(支持Java、Python、Node.js、GO、C#等)。得益于技术提升,无服务成本正在大幅下降中。

Cloudflare、Fastly、Vercel、Netlify、Akamai、Limelight 等公司都支持通过其边缘运行时部署 WebAssembly 功能。

 

亚马逊云计算Amazon AWS

Amazon CloudFront 是一种内容分发网络 (CDN) 服务,旨在获得优异性能、安全性和开发人员便利性。

 Serverless无服务应用架构纵横谈2:边缘计算激战正酣

 

微软云计算Microsoft Azure

Azure Functions 为 C#、JavaScript、F#、Java 和 Python 等语言提供了不同级别的支持。Azure Functions 使用计划根据每秒资源使用和执行次数计费。消费计划定价包括每月免费授予的 1 百万个请求和每个订阅每月 400,000 GB-s 的资源消耗,包含在订阅中所有函数应用之间的即用即付定价中。Azure Functions 高级计划提供增强的性能,并根据高级功能消耗的 vCPU 和 GB 数量按秒计费。

 

阿里云Alibaba Cloud

函数计算(Function Compute)是一个事件驱动的全托管 Serverless 计算服务,您无需管理服务器等基础设施,只需编写代码并上传,函数计算会为您准备好计算资源,并以弹性、可靠的方式运行您的代码。 函数计算3.0全新发布,降价幅度最高达93%。

同时提供边缘容器:容器服务 Edge 版 ACK Edge

 

华为云Huawei Cloud

函数工作流(FunctionGraph)是一项基于事件驱动的函数托管计算服务。通过函数工作流,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行。此外,按函数实际执行资源计费,不执行不产生费用。函数前100万次/月调用免费。

同时提供边缘容器:智能边缘平台 IEF(Intelligent EdgeFabric)

 

腾讯云Tencent Cloud

云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。

新用户前三个月将获得更多用量的免费额度,第四个月开始不再享受免费额度,同时从第四个月开始,系统每月会自动发放基础套餐额度(调用次数50万次、资源使用量10万GBs、外网出流量2GB)并扣除基础套餐费用12.8元。

同时提供边缘容器:腾讯云边缘容器服务(Tencent Kuberentes Service for Edge)

 

Cloudflare Workers

Cloudflare 成立于 2009 年,是一家主流网站安全管理、云内容交付网络(CDN)厂商。

Serverless无服务应用架构纵横谈2:边缘计算激战正酣

 

The Fastly Edge Cloud Platform 

 新锐CDN厂商 Fastly。开源了wasmtime

Serverless无服务应用架构纵横谈2:边缘计算激战正酣

 

Vercel 

Vercel是一个新锐托管平台,主要用于托管、构建和部署静态网站和无服务应用程序,旗下产品有 Next.js。

Serverless无服务应用架构纵横谈2:边缘计算激战正酣

  

Netlify Edge Functions 

Netlify是一个新锐托管平台,与Vercel非常相似。

Serverless无服务应用架构纵横谈2:边缘计算激战正酣

 

Akamai EdgeWorkers

Akamai是主流的网站安全管理与CDN厂商,Cloudflare的主要对手。

Serverless无服务应用架构纵横谈2:边缘计算激战正酣

 

Limelight Edgio Sites

Edgio是Limelight Networks在2022年收购Edgecast Networks之后成立的公司,也是主流的CDN厂商。

Serverless无服务应用架构纵横谈2:边缘计算激战正酣

 

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...