Dapr 的一个轻量级、安全、可移植且高性能的 runtime

本文介绍了如何使用WebAssembly runtime WasmEdge与Dapr框架结合,构建高性能、安全且可移植的微服务。通过WasmEdge,Dapr sidecar能够运行多种语言编写的WebAssembly函数,实现如图像处理和Tensorflow推理等功能,同时提供更低的资源消耗和更好的安全隔离。
摘要由CSDN通过智能技术生成

本文作者:Michael Yuan,WasmEdge Maintainer

本文源发自 infoQ.com,链接:https://www.infoq.com/articles/webassembly-dapr-wasmedge/

本文要点:

  • Dapr 是功能强大的构建微服务的框架。
  • WebAssembly VM,如 WasmEdge,为微服务应用程序提供高性能且安全的 runtime。
  • 基于WebAssembly的微服务可以用多种编程语言编写,包括Rust、C/C++、Swift 和JavaScript。
  • WebAssembly 程序嵌入到Dapr sidecar 应用程序中,因此对 Dapr主机环境来说是可移植且跨平台的。
  • WasmEdge SDK 为 Tensorflow 推理构建微服务提供了一种简单方法。

自 2019 年发布以来,Dapr(Distributed Application runtime )已迅速成为非常流行的构建微服务的开源框架。它提供了分布式应用程序中常用的构建块和已打包的服务,例如服务调用、状态管理、消息队列、资源绑定和触发器、mTLS 安全连接和服务监控。分布式应用程序开发者可以在 runtime 利用和使用这些基于 Web 的 API,这些 API 是由构建块公开的。这些应用程序通常称为微服务并作为 sidecar 运行。 Dapr 是多 runtime 微服务架构的一个例子,正如 InfoQ 作者 Bilgin Ibryam 所描述的那样。

Dapr 的 sidecar 模式非常像服务网格(Service Mesh)。然而,不同于传统服务网格意在无需任何代码更改即可管理应用程序,Dapr 应用程序需要集成并积极利用外部 Dapr 构建块服务。

Dapr Sidecar 中的微服务应用程序可以是用 Go 和 Rust 等语言编译的本地客户端 (NaCl) 应用程序,也可以是用 Python 或 JavaScript 编写的托管语言应用程序。换句话说,sidecar 应用程序可以有自己的语言 runtime。 Sidecar 模型允许 Dapr 为其应用程序支持“在任何地方任何语言、任何框架、任何地方”。

WebAssembly 和 WasmEdge

Dapr 可以直接在操作系统上运行 sidecar 应用程序,也可以通过 Docker 等应用程序容器运行。容器提供了可移植性、易于部署和安全性等优点,但它也伴随着庞大的开销。

在本文中,我们提出了一种运行 Dapr sidecar 应用程序的新方法。我们使用一个用 Rust 或 Go 编写的简单 NaCl 来监听对微服务的 API 请求。它将请求数据传递给 WebAssembly runtime 处理。微服务的业务逻辑是由应用程序开发者创建和部署的 WebAssembly 函数。

在本文发布时,你已经可以使用 WasmEdge WASI Socket 来处理网络请求了。具体请见 https://github.com/second-state/dapr-wasm

在这里插入图片描述
图 1. 有 WebAssembly 函数的 Dapr 微服务。

WebAssembly runtime 非常适合执行业务逻辑函数。

  • WebAssembly 程序可以像编译后的机器原生二进制文件一样快速运行,并且比容器消耗更少的资源。

  • WebAssembly 支持高性能语言,如 C/C++、Rust、Swift 和 Kotlin。它还可以支持高级语言,如 JavaScript 和 DSL(Domain Specific Languages)。

  • WebAssembly 程序是可移植的,可以轻松部署在不同的操作系统和硬件平台上。

  • WebAssembly 提供了一个在 runtime 层级隔离应用程序的安全沙箱。开发者可以通过声明安全策略来限制程序对操作系统或其他资源的访问。

下表总结了 sidecar 应用程序不同方法的优缺点。
[Image: image.png]

WasmEdge 是由 CNCF(云原生计算基金会)/Linux 基金会托管的领先云原生 WebAssembly runtime。它是当今市场上最快的 WebAssembly runtime 之一。 WasmEdge 支持所有标准的 WebAssembly 扩展以及 Tensorflow 推理、KV 存储和图像处理、Socket 等专有扩展。其编译器工具链不仅支持 C/C++、Rust、Swift、Kotlin 和 AssemblyScript 等 WebAssembly 语言,还支持 常规 JavaScript

WasmEdge 应用程序可以嵌入到 C 程序、 Go 程序、Rust 程序、JavaScript 程序或操作系统的 CLI 中。Runtime 可以通过 Docker 工具(例如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值