写点什么

Cloudflare Workers 支持 WebAssembly 和键值存储

  • 2018-10-15
  • 本文字数:1445 字

    阅读完需:约 5 分钟

Cloudflare 最近宣布给他们的“无服务器”服务 Workers 新增两个附加功能:将 WebAssembly 作为 JavaScript 的替代方案,提供了对WebAssembly 的支持,以及称为 Workers KV 的键值存储。WebAssembly 可以使 Workers 可以通过 C、C++、Rust 和 Go 等多种编译语言编写。Workers KV 提供了最终一致状态存储机制,托管在 Cloudflare 全球超过 150 个数据中心的网络中。

WebAssembly (又称 WASM)是由 W3C 开发的,它针对 JavaScript 提供了更快(解析和执行)更简捷的替代方案,在 2017 年底进入到主流的几款浏览器中。它实现了抽象的结构化堆栈机,具有一个中间的字节码表示。它可以保证代码可以用多种编译语言编写(或重用自多种编译语言),只需简单地将其编译为.wasm 文件即可。但现在对于.wasm 的工具链支持还不成熟,Cloudflare 的演示中“如何搭建”这一部分中包含有“Build lld from source”的详细介绍。Cloudflare 还尽心地指出,WebAssembly 有时候“并不总是适用的”,他们解释了什么时候适合使用 WebAssembly:

对于类似重定向到不同的 URL 或者是检查授权令牌这样的轻量级任务,使用纯 JavaScript 会比使用 WASM 更快更方便。WASM 程序会在自己独立的内存空间中运作,这代表着有必要将数据从那个空间进进出出地复制,以进行操作。和外部对象交互为主,不需要做类似“数据处理”的代码最好不要用 WASM。

另一方面,当需要执行资源消耗大的、独立的操作,比如说调整图像大小,处理音频流等操作时,WASM 会有很大帮助。这些操作需要许多数学运算和恰当的内存管理。尽管也可以在纯 JavaScript 中运行这样的操作,像 V8 这样的引擎也花了很多功夫来优化这种代码,但是最终并不能打败拥有静态类型和显示分配的编译语言。

在 Cloudflare 发表的《通过 Workers KV 搭建》博文中,介绍了一系列我们可以用这项技术实现的功能例子。这些包括实现使用访问令牌的 API Gateway、页面中的动态数据(如翻译)、功能标志的配置以及有状态的云功能。他们还详细介绍了限制和价格:

每个命名空间最多 10 亿个密钥

最多 2 kB 的键

最多 64 kB 的值

最终一致,10 秒内实现全局一致

每秒每键 100k+ 的读

每秒每键最多 1 次写

Workers 每月 5 美元起,包括 1 GB 的 KV 存储以及最多 1 万千次 KV 读取。如果你 Worker 请求的使用少于 1 千万次,那不支付 1 分钱就可以使用 KV。

如果最基础要求不能满足,Workers KV 每个月超过套餐的存储按照 0.5 美元 /1 GB 收费,超过套餐的 KV 读取按照每次 0.5 美元收费。

Cloudflare 将 Worker 和 Amazon 的 Lambda 进行比较,不过可能更加公平的是和 Lambda@Edge 进行比较,它在 AWS CloudFront Content Delivery Network ( CDN ) 中运行函数。这两种情况下,服务都会提供第三端(在全局 CDN 边缘)进行处理,就不需要在浏览器(或 API 客户端)或源点进行处理。这样边缘托管的目的是通过接近客户端的入网点提供低延迟服务,同时让客户端不需要承担计算开销(以及安全问题)。通过启用有状态的服务,Cloudflare 开启了 originless(无源)服务的可能性,仅存在于没有集中源点的边缘。

在宣布 Workers 对于 WebAssembly 的支持之前,Cloudflare 的 CEO Matthew Prince写推文道:“从长远角度来看,这可能是整个月我们做出的最大行业变更声明了”。其他功能即服务(FaaS) 平台以及可以提供多语言的支持的基础下,WebAssembly 可能是让开发人员喜爱的一种简单方式,只要工具链问题在广泛采纳之后得到解决即可。

查看英文原文 Cloudflare WebAssembly and Key Value Store for Workers

感谢冬雨对本文的审校。

2018-10-15 17:522089
用户头像

发布了 218 篇内容, 共 70.2 次阅读, 收获喜欢 76 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

CloudMounter for mac(云盘本地加载工具)v4.6版

Mac相关知识分享

MacBook Mac软件 mac下载

EverWeb for Mac(网页设计软件)v4.2.0中文版

Mac相关知识分享

网页设计 Mac软件 mac下载

精彩回顾!安全智能体的前沿技术研究与实践

云起无垠

独特DJ混音创作软件DJ Mix Pads 2 - Remix Version

Rose

mac office 365 商业专业版破解

Rose

在鸿蒙系统中处理ETS层与C++层之间的数组传递

彭康佳

c android 鸿蒙 native

sublime text代码编辑器 中文设置教程

Rose

大模型应用之路:从提示词到通用人工智能(AGI)

京东科技开发者

Parallels Desktop 18 for mac(兼容Intel和M系列虚拟机)v18.3.2永久激活版

Rose

Autodesk AutoCAD 2025中文版详细图文安装教程

Rose

Permute 3全能媒体格式转换器 mac Permute 3中文版下载

Rose

油猴Safari浏览器辅助插件Tampermonkey 中文版下载

Rose

链游开发:探索游戏与区块链的交汇点

区块链开发团队DappNetWork

万字长文:在 Go 中如何优雅的使用 wire 依赖注入工具提高开发效率?下篇

江湖十年

golang 后端 Go web Go 面试题 面经 后端 大厂

优秀的电子书生成工具Vellum for Mac v3.7.4激活版

Rose

实用的Web服务器管理软件goPanel for Mac v2.9.6版

Mac相关知识分享

MacBook web服务器 Mac软件 mac下载

Invisor for Mac 媒体文件信息查看软件

Rose

实现智能化生产车间的MES管理系统

万界星空科技

智能制造 mes 万界星空科技 数字化车间 车间管理

潞晨训推一体机,画出大模型到企业的一条龙路线图

脑极体

AI

ERC20开发:构建标准化的代币经济

dappweb

ERC20 区块链开发

中国LED显示屏产业的挑战与机遇

Dylan

产业 LED显示屏 全彩LED显示屏 led显示屏厂家 市场

万字长文:在 Go 中如何优雅的使用 wire 依赖注入工具提高开发效率?上篇

江湖十年

golang 后端 Go web 依赖注入 Go 面试题 面经 后端 大厂

打字大师3-盲打实践Master of Typing 3 - Practice for Mac

Rose

元宇宙和链游的疯狂故事对经济有什么影响?

区块链开发团队DappNetWork

ERC721开发:打造独一无二的数字资产

dappweb

区块链 defi 元宇宙 ERC721 区块链开发

TDengine 3.3.0.0 引入图形化管理工具、复合主键等 13 项关键更新

TDengine

数据库 tdengine 时序数据库

Cloudflare Workers支持WebAssembly和键值存储_语言 & 开发_Chris Swan_InfoQ精选文章