关键要点
- Dapr 是一个用于构建微服务的通用框架 。
- WebAssembly VM,例如 WasmEdge,为微服务应用程序提供高性能和安全的运行时 。
- 基于 WebAssembly 的微服务可以用多种编程语言编写,包括 Rust、C/C++、Swift 和 JAVAScript 。
- WebAssembly 程序嵌入到 Dapr sidecar 应用程序中,因此可以移植并且与 Dapr 主机环境无关 。
- WasmEdge SDK 提供了一种为 Tensorflow 推理构建微服务的简单方法 。
Dapr 的 sidecar 模式非常类似于服务网格 。然而,与旨在在不更改任何代码的情况下管理应用程序的传统服务网格不同,Dapr 应用程序需要集成并积极利用外部 Dapr 构建块服务 。Dapr sidecars 中的微服务应用程序可以是从 Go 和 Rust 等语言编译的本机客户端 (NaCl) 应用程序,也可以是用 Python 或 JavaScript 编写的托管语言应用程序 。换句话说,sidecar 应用程序可以有自己的语言运行时 。Sidecar 模型允许 Dapr 为其应用程序支持“任何语言、任何框架、任何地方” 。
WebAssembly 和 WasmEdgeDapr 可以直接在操作系统上运行 Sidecar 应用程序,也可以通过 Docker 等应用程序容器运行 。容器提供了可移植性、易于部署和安全性等优点,但也带来了巨大的开销 。
在本文中,我们介绍了一种运行 Dapr Sidecar 应用程序的新方法 。我们使用一个用 Rust 或 Go 编写的简单 NaCl 来监听微服务的 API 请求 。它将请求数据传递给 WebAssembly 运行时进行处理 。微服务的业务逻辑是由应用程序开发人员创建和部署的 WebAssembly 功能 。
![架构实战——Dapr 的轻量级、安全、便携和高性能运行时](http://img.jiangsulong.com/220608/1Q9425442-0.jpg)
文章插图
图 1. 具有 WebAssembly 功能的 Dapr 微服务 。
WebAssembly 运行时非常适合执行业务逻辑功能 。
- WebAssembly 程序可以像编译的机器原生二进制文件一样快速运行,并且比容器消耗更少的资源 。
- WebAssembly 支持高性能语言,如 C/C++、Rust、Swift 和 Kotlin 。它还可以支持高级语言,如 JavaScript 和 DSL(领域特定语言) 。
- WebAssembly 程序是可移植的,可以很容易地部署在不同的操作系统和硬件平台上 。
- WebAssembly 提供了一个在运行时隔离应用程序的安全沙箱 。开发人员可以通过声明安全策略来限制程序对操作系统或其他资源的访问 。
![架构实战——Dapr 的轻量级、安全、便携和高性能运行时](http://img.jiangsulong.com/220608/1Q9422112-1.jpg)
文章插图
WasmEdge是由 CNCF (云原生计算基金会)/linux 基金会托管 的领先的云原生 WebAssembly 运行时。它是当今市场上最快的 WebAssembly 运行时 。WasmEdge 支持所有标准 WebAssembly 扩展以及 Tensorflow 推理、KV 存储和图像处理等专有扩展 。其编译器工具链不仅支持 C/C++、Rust、Swift、Kotlin 和 AssemblyScript 等 WebAssembly 语言,还支持 常规 JavaScript .
WasmEdge 应用程序可以嵌入到 C 程序、 Go 程序、 Rust 程序、 JavaScript 程序或操作系统的 CLI中 。运行时可以由 Docker 工具(例如 CRI-O)、编排工具(例如 K8s)、无服务器平台(例如 Vercel、 Netlify、 AWS Lambda、 腾讯 SCF)和数据流框架(例如 YoMo 和 Zenoh)来管理 。
在本文中,我将演示如何使用 WasmEdge 作为 Dapr 的 sidecar 应用程序运行时 。
快速开始首先,您需要安装 Go、 Rust、 Dapr、 WasmEdge和 rustwasmc 编译器工具 。
接下来,从 Github 复制或克隆演示应用程序 。您可以将此 repo 用作您自己的应用程序模板 。
$ git clone https://github.com/second-state/dapr-wasm
该演示有 3 个 Dapr sidecar 应用程序 。- web-port项目 为静态 html 页面提供公共 Web 服务 。这是应用程序的 UI 。
- image-api-rs 项目提供了一个 WasmEdge 微服务来使用 灰度 函数将 输入图像转换为灰度图像 。它演示了用于 Dapr 和 WasmEdge 的 Rust SDK 的使用 。
推荐阅读
- IT职场技术分享的必备技能——VNC远程桌面
- 明朝这些事?明朝那些事儿和话说明朝
- Intel|Intel Arc A730M高端显卡实战:Beta驱动致DX12游戏无法启动
- 智能手机|瓴盛科技4G手机芯片JR510发布:三星11nm工艺、八核架构
- Intel|Intel Arc A730M高端显卡实战游戏:只相当于RTX 3050
- 粉色|饰品手串—粉水晶
- 实战演示 H5 性能分析
- 前端入门——css字体和文本
- CPU处理器|龙芯下代CPU优化架构:12nm工艺下单核性能猛增68%
- 说唱界常用术语之——Battle battle是什么意思