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

\\

感谢冬雨对本文的审校。

Cloudflare Workers支持WebAssembly和键值存储相关推荐

  1. 五大存储模型关系模型、键值存储、文档存储、列式存储、图形数据

    五大存储模型关系模型.键值存储.文档存储.列式存储.图形数据 时间:2014-06-12 16:15来源:知行网www.zhixing123.cn 编辑:麦田守望者 昨天跟一同事讨论Sybase是不是 ...

  2. Dynamo:亚马逊的高可用键值存储

    目录 1. 简介 2. 背景 3. 相关工作 4. 系统结构 5. 实现 6. 经验和教训 7. 结论 Dynamo:亚马逊的高可用键值存储 摘要:大规模的可靠性是我们在 Amazon.com 面临的 ...

  3. 981. 基于时间的键值存储

    创建一个基于时间的键值存储类 TimeMap,它支持下面两个操作: set(string key, string value, int timestamp) 存储键 key.值 value,以及给定的 ...

  4. leetcode981. 基于时间的键值存储(treemap)

    创建一个基于时间的键值存储类 TimeMap,它支持下面两个操作: set(string key, string value, int timestamp) 存储键 key.值 value,以及给定的 ...

  5. LeetCode 981. 基于时间的键值存储(哈希+二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 创建一个基于时间的键值存储类 TimeMap,它支持下面两个操作: set(string key, string value, int timestamp ...

  6. cockroachdb mysql_CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储...

    CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...

  7. LeetCode 981. 基于时间的键值存储 / 274. H 指数 / 275. H 指数 II

    981. 基于时间的键值存储 2021.7.10 每日一题 题目描述 创建一个基于时间的键值存储类 TimeMap,它支持下面两个操作:1. set(string key, string value, ...

  8. 五大存储模型关系模型 键值存储 文档存储 列式存储 图形数据库

    也可以认为是五大数据库存储模型. 数据库市场需要细分,行式数据库不再满足所有的需求,而有很多需求需要通过本内存数据库和列式数据库解决,列式数据库在数据分析.海量存储.BI这三个领域有自己独到. 1. ...

  9. 分布式键值存储ETCD

    分布式键值存储 前言 实现分布式系统的目标以及挑战 分布式ETCD存储 etcd介绍 基于etcd的使用场景 1.键值对存储 2.服务注册与发现 3.消息发布与订阅 4.分布式锁 etcd相关术语(关 ...

最新文章

  1. 的远程烧写_农用气象环境远程监测管理系统
  2. 怎么样给单选按钮前面插入小图标
  3. 网易云信三周年:我们只做第一
  4. IOT物联网观察之物联网是器,大数据是魂,人工智能是手段!
  5. python观察日志(part15)--命名元祖namedtuple
  6. ubuntu上Nginx的配置
  7. MyBatis学习总结(17)——Mybatis分页插件PageHelper
  8. leetcode242. 有效的字母异位词(两种方法map或数组)
  9. 修改Linux内核的启动Logo和禁用启动光标
  10. 手机modem开发(5)---LTE基本架构
  11. 华为Mate 40 Pro全新概念图曝光:这设计有点夸张了
  12. 介绍一下Python中webbrowser的用法?
  13. asp html转word文档,asp生成word文档
  14. 计算机组装与维护报告论文,计算机组装与维护实习报告范文
  15. android大屏适配_2019年度投影机盘点:无线智能,塑造大屏全应用场景
  16. 超详细的VSCode下载和安装教程以及解决VSCode下载速度特别慢的问题
  17. Python实现 excel转Word 工具开发
  18. 360,一场阴谋的制造者
  19. poi操作word模板替换数据并且导出word
  20. poi操作word实现分页

热门文章

  1. Reddit年度盘点:2019年最佳机器学习项目
  2. 牛津大学计算机系主任:上海是智慧城市的最佳“试验田”|WAIC专访
  3. 关于人工智能中强化学习的扫盲
  4. python-回调函数和递归函数
  5. 对话AI大师Bengio:AI不应变成军备竞赛
  6. 迁移学习的挑战和六大突破点
  7. 心得丨8个深度学习方面的最佳实践
  8. 到2020年,智能手机将拥有十项AI功能,有些可能会出乎你意料
  9. 01_字符串处理-----04_在文本中应用ZIpf定律
  10. 李德毅院士:希望智能驾驶成为我国继高铁之后又一张新名片