硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

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

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

关注

评论 1 条评论

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

ARTS-week5

王钰淇

ARTS 打卡计划

写给孩子的两本书我读得津津有味

孙苏勇

读书 陪伴 随笔杂谈

游戏夜读 | 关卡设计新手必看

game1night

面试官:十亿级数据ES搜索怎么优化?我直接傻了

犬来八荒

Java 面试 大厂

【自学成才系列一】multipass安装篇

小朱

multipass

基于 Flagger 和 Nginx-Ingress 实现金丝雀发布

郭旭东

Kubernetes CI/CD

Java面试常用知识(附赠最新面试题)

架构大数据双料架构师

去面试Spring Cloud 被问的35个问题

小谈

面试 springboot SpringCloud buffer JVM原理

Linux 操作系统!开篇!!!

苹果看辽宁体育

Linux

锦囊篇|一文摸懂SharedPreferences和MMKV(一)

ClericYi

到底什么是HashMap?

小闫

Java spring 后端 JVM hashmap

「NIO系列」——之Reactor模型

小谈

Spring Boot reactor 后端 nio SpringCloud

信创舆情一线--英特尔暂停向浪潮供货

统小信uos

服务器 舆情 芯片

模式与重构-作业

秤须苑

七月份最新“美团+字节+腾讯”面试题,测试一下你能走到哪一面?

犬来八荒

Java 面试 线程’

谈谈容器和K8s

Gabriel

架构师训练营第五周总结

Melo

极客大学架构师训练营

架构0期Week4作业2

Nan Jiang

最详细的 Spring Cloud OAuth2 单点登录使用教程送给大家

小闫

面试 后端 JVM SpringCloud

如何快速将 Linux 系统制作成 ISO 镜像文件?

JackTian

Linux 运维 操作系统 镜像文件 ISO

被“假”老干妈耍惨了?憨憨腾讯花1624万卖萌,引全网吃瓜!

程序员生活志

腾讯 互联网 大厂

Google官方MVP+Dagger2架构详解

小吴选手

架构 架构师 架构是训练营

再有人问你分布式事务,把这篇扔给他

码哥小胖

分布式 Java 分布式

拥抱开源开放,易观技术开发者的星海征途

易观大数据

海豚调度 调度引擎

腾讯的辣酱不香了 支付宝的区块链真能解决“萝卜章”问题?

CECBC

双链通 萝卜章 区块链方案

如果是你,年薪80万和阿里P7月薪36K,会怎么选?

犬来八荒

Java 腾讯 面试 阿里

终于有大佬把TCP/IP协议讲清楚了!面试再也不怂面试官提问了

小闫

jdk JVM Netty buffer TCP/IP

当国产iVX遇上新晋产品PowerPlatform,能否披荆斩棘、稳住阵脚?

代码制造者

程序员 编辑器 低代码 快速开发 开发工具

架构0期Week4作业1

Nan Jiang

产业数字化无法“一蹴而就”,而是“长跑冠军”。

CECBC

极客大学架构师训练营 系统架构 分布式缓存 一致性哈希 Hash 第9课 听课总结

John(易筋)

极客时间 极客大学 极客大学架构师训练营 分布式缓存 一致性哈希

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