低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

JavaScript 的边缘之旅

2019 年 8 月 16 日

JavaScript的边缘之旅

前言

在 2008 年,Google 的 Chromium 项目发布了 V8,一个 JavaScript 引擎。在 2009 年,Ryan Dahl 宣布一种在浏览器之外运行 V8 浏览器环境的方法,Node.js。


在十年之后,V8,JavaScript 及其新伙伴 WebAssembly,已经扩展到一种叫“边缘”的领域。在今年的 JSConf EU 上,Ashley Williams 将介绍“边缘”是什么,为什么对其在网络上革新计算感到兴奋。她将探索 JavaScript V8 引擎是如何适合那些受限制于虚拟机、容器,甚至是简单操作系统的任务。为此她和所在的公司 Cloudflare 开发了一款叫做 Wrangler 的工具。


演讲内容

在开始正式演讲之前,Ashley Williams 回顾了自己与 JSConf EU 之间结下的不解之缘,讲述了她和大会发生的种种有趣的故事。而在 Ashley Williams 的演讲中,她首先介绍了这次演讲的三个关键要素,它们分别是性能(peformance)、可接入性(accessibility)和基础设施(Infrastructure)。她以互联网技术的发展,浏览器之间的竞争作为对比,总结了这些技术带来的好处。


她认为浏览器在这些年竞争和发展之下,其计算能力呈指数级增长。浏览器已成为一个计算上非常好的代理。而这些计算能力能否有效利用则取决于人们能够访问内容的能力,即可接入性。



而可接入性则依赖于基础设施是否完善,也就是数据中心的建设。随着浏览器的发展,桌面和移动应用程序下载的 JavaScript 字节数量,桌面设备增加了 353%,移动设备的情况更糟糕 - 增长了 577%。数据表明,以目前的基础设施建设,人们在浏览器中所访问的内容的可接入性和计算能力是大大不足的。在 PC 端和移动端,内容加载的时间很长。



她认为解决这些问题的方案是“边缘”(Edge)。在介绍解决方案之前,Ashley Williams 通过披萨的例子,介绍了当前几种加快应用访问速度的方法。在这个例子中,Javascript 程序是厨师,程序的执行是披萨的制作过程, 而程序产生的输出是披萨,而终端用户是超级英雄(hero),散落在世界各地的缓存节点则是篮子。


客户端渲染

客户端渲染其实就是将制作披萨的厨师从纽约送到超级英雄所在的澳大利亚,厨师在当地制作并生成比萨。这种做法的问题是如果澳大利亚的超级英雄没有像样的房间和烤箱。在这种情况下,提出了缓存的概念。


客户端缓存

通过缓存节点,将厨师送到一个篮子,然后派遣厨师。但是仍然需要将厨师送到超级英雄做饭的澳大利亚,让他们制作披萨。问题依旧存在,即使有缓存,厨师可能在更近的位置旅行,但这些仍然必须进入超级英雄的房子,并制作披萨。


服务器端渲染

在纽约有厨师,而在澳大利亚有超级英雄。厨师要去纽约做饭。不再搬进房子做披萨了。对于一些披萨来说,只需要一次相当长的旅行,把披萨从纽约送到澳大利亚。而旅行过程的时间长短,将导致比萨的新鲜程度。因此在服务器端加入缓存。


服务器端缓存

厨师仍然可以在纽约制作他们的披萨,他们可以将披萨发送到那个缓存,披萨可以在那里闲逛,然后我们的澳大利亚人可以愉快地吃掉他们想要的所有披萨。但这样传输的披萨可能有点“新鲜”了。如果超级英雄想要一些“新”东西怎么办?披萨将不得不回去,反复加工。


通过对上述四种现有技术的举例说明,有一个问题需要讨论,那就是客户端和服务器之间的权衡。在客户端会带了传输的延时,而服务器端则会带来内容的更新问题。


作为 Cloudflare 的成员,Ashley Williams 试图使用 Cloudflare 的 180 多个数据中心做些事情。她引出了一种融合的方案 - “边缘”,充分使用客户端和服务器。


她的做法是使不能制作披萨的缓存节点 - 篮子能够让厨师在篮子里做披萨。也就是让分散在世界各地的数据中心不仅仅是存储数据和内容。而是利用它们的计算能力。


为了满足这种即时即用的计算能力,Ashley Williams 对比了现有的虚拟机技术和容器技术。这些技术不能满足“边缘”计算的要求,它们消耗的资源太多了。




所以她认为使用无服务技术,才是实现“边缘”计算的有效技术。她和她的同事们使用了 V8 引擎中的 isolate 方法来实现无服务的技术。从而大大减低了对系统的要求。


与此同时,他们对比了各大云计算服务提供商的无服务技术,得出了一个不错的结论,Cloudflare 的 Workers 服务在各大 Serverless 服务技术中具有一定的优势。对于 Cloudflare 来说,可扩展性,流量或请求是非常简单的一件事情,永远不会变得庞大。Ashley Williams 它可以占用超过 30TB 的流量,并且还在继续增长。为了使这个模型起作用,每个应用都需要在某个“边缘”节点,这些“边缘节点”的效率要比服务器端产品高 100 倍。



最后,Ashley Williams 介绍了她和团队正在做的工具,叫做 Warngler。这个工具是一个 CLI 命令工具,可以在 Cloudflare worker 中使用,通过无服务器的形式生成应用。Cloudflare worker 也是是第一款免费的边缘无服务平台。


作者介绍

Ashley Williams,系统工程师,就职于 Cloudflare。从事 Rust Programming Language 和 WebAssembly 开源项目。编写并维护了 Rust 和 Node.js 后端服务。在 Rust 核心团队中领导 Rust 社区团队,在那里其专注于 RustBridge 教育计划。


原文链接:


https://2019.jsconf.eu/ashley-williams/javascripts-journey-to-the-edge.html


2019 年 8 月 16 日 18:592084

评论

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

编程实战:如何管理代码里的常量

华为云开发者社区

常量 代码 web开发 final常量类 复用常量

40个问题让你快速掌握Java多线程的精髓

华为云开发者社区

Java 多线程 synchronized Thread Semaphore

ndk开发环境,个人开发者做一款App需要知道的事情,绝对干货

欢喜学安卓

android 程序员 面试 移动开发

边缘计算加持下的智慧社区

浪潮云

边缘计算

手把手教你写一个经典躲避游戏

HZFEStudio

前端 游戏 前端教程 canvas

如何控制项目的访问权限来保证项目安全?SpringBoot集成Spring Security安全框架使用指南

攻城狮Chova

security 安全性 shiro 4月日更

图算法系列之深度优先搜索(一)

Silently9527

Java 深度优先搜索 图算法

ipfs挖矿是怎么赚钱的?ipfs挖矿收益有哪些方面?

v:IPFS456

数字货币 Filecoin #区块链# IPFS怎么挖矿 IPFS挖矿可靠吗

架构实战营详细架构设计文档模板

华仔

架构设计 文档模板

合约交易所跟单,合约跟单社区开发

13823153121

闲来无事,写脚本,install_wordpress

陈迪

量化策略系统搭建,马丁策略交易

13823153121

游戏测试-战斗内核的自动化测试

行者AI

人工智能

情指行一体化平台建设解决方案,智慧公安警务系统开发

WX13823153201

马丁量化策略交易系统开发,做市机器人,市值管理

WX13823153201

mmkv跨进程,面试字节跳动Android研发岗,灵魂拷问

欢喜学安卓

android 程序员 面试 移动开发

新思科技发布《疫情中的安全隐患:移动应用程序安全现状》报告

InfoQ_434670063458

App 新思科技 移动应用程序安全

RocketMQ NameServer工作原理与源码解析

HByte

RocketMQ

Coinbase上市意味着什么?

猫Buboo

马斯克的狗狗币实验

猫Buboo

用C++ 和OpenCV 实现视频目标检测(YOLOv4模型)

博文视点Broadview

区块链食品溯源--为食品溯源认证

13530558032

NumPy之:标量scalars

程序那些事

Python 数据分析 Numpy 程序那些事 scalar

PassJava 初始化项目和添加微服务

悟空聊架构

浅谈BSS3.0产品“守成”之策下 • 运维提升篇

鲸品堂

软件 运维 提升

亲爱的开发者,您收到一个启动智能世界的魔方

白洞计划

如何推进一个“以行动为导向的”事件驱动架构?

VoltDB

数据库 数据分析 实时数据分析 事件驱动架构

读《小岛经济学有感》

箭上有毒

读书笔记 4月日更

扩展 GRTN:云原生趋势下的 RTC 架构演进

阿里云视频云

阿里云 云原生 RTC SRS流媒体服务器

Pytorch数据加载

Sakura

四月日更

广告主营销策略的改变,为什么总离不开户外媒体?

󠀛Ferry

四月日更

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

JavaScript的边缘之旅-InfoQ