阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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:521728
用户头像

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

关注

评论 1 条评论

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

软件测试/测试开发丨自动化测试之读取配置文件

测试人

软件测试 自动化测试 测试开发

0Ω电阻在PCB板中的5大常见作用

华秋PCB

电路 元器件 PCB PCB设计 电阻

知名直播App被苹果商店下架,或涉及侵权问题

HIFIVE音加加

ios iphone 软件开发

烟雾弹?突然转变?如何看待微软发声:中国是主要的对手

加入高科技仿生人

人工智能 AI 数智化 ChatGPT

C语言sqlite3,实现判断一个数据库存不存在,不存在就创建

linux大本营

数据库 C语言 sqlite3

HummerRisk V1.0.1:k8s检测扩充、批量删除及修复bug

HummerCloud

开源 云原生 云安全 云原生安全

基于STM32设计避障寻迹小车

DS小龙哥

三周年连更

怎样判断户外LED显示屏质量是否达标

Dylan

媒体 广告 户外LED显示屏

中国垂直行业SaaS,这样走可能是新出路

ToB行业头条

刘浩:当谈到RTO < 8s时,OceanBase究竟在说什么?

OceanBase 数据库

数据库 oceanbase

Android C++系列:函数返回值注意事项

轻口味

c++ android 三周年连更

给广场舞大妈讲讲什么是大语言模型!

FN0

AIGC

AITO问界M5:最安全、智能的座驾

Geek_2d6073

vue 入门知识点有哪些?

海拥(haiyong.site)

三周年连更

iOS MachineLearning 系列(4)—— 静态图像分析之物体识别与分类

珲少

走进社区客户端测试 | 得物技术

得物技术

测试

面试还不懂JVM性能调优,看这篇文章就够了!

程序员小毕

程序员 面试 后端 JVM jvm调优

乌合之众再次上演,打工人将被AI一键淘汰?

引迈信息

人工智能 AI 低代码 AIGC ChatGPT

Mac无损音乐播放器:Audirvana for Mac中文

真大的脸盆

Mac Mac 软件 音乐播放 音乐播放器

如何写出CPU友好的代码,百倍提升性能?

阿里技术

cpu 代码优化

构建云边端一体的分布式云架构,软硬结合驱动边缘计算创新场景

百度开发者中心

云计算 存储 边缘云

智能感知编码优化与落地实践

百度开发者中心

人工智能 视频 百度智能云

世界读书日特辑 | 华为阅读深耕精品书,让读书变得赏心“悦目”

最新动态

ubuntu如何安装Json解析库Reader

linux大本营

ubuntu JSON库 reader

火山引擎DataLeap:在数据研发中,如何提升效率?

字节跳动数据平台

运维 数据研发 企业号 4 月 PK 榜 任务模板

2023年第十二届数据技术嘉年华(DTC)资料分享

墨天轮

数据库 oracle 云原生 智能运维 国产数据库

低调且强大——JNPF低代码平台

这我可不懂

低代码 JNPF

websocket底层原理

linux大本营

nginx HTTP websocket 通信协议 web服务器

如何在makefile中链接Json解析库Reader

linux大本营

json makefile reader

行业分析| 视频监控——AI自动巡检

anyRTC开发者

人工智能 音视频 视频监控 自动巡检

selenium源码通读·10 |webdriver/common/proxy.py-Proxy类分析

Python 测试 自动化测试 源码剖析 selenium

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