Cloudflare Workers是Cloudflare提供的无服务器化运行环境,允许开发者部署由JavaScript代码编写的应用程序,而无需考虑底层服务器设施。应用程序全部以NPM包的形式部署,由服务器端的V8引擎执行,意味着Cloudflare Workers可以部署小到一个JavaScript函数计算的项目,大到Vue、React等工程化项目。

在使用Cloudflare Workers之前,一起来了解一下无服务器计算(Serverless Computing)吧。

认识无服务器计算

在微软公有云平台Microsoft Azure上,是这样(点此链接查看详情)介绍的:

通过无服务器计算,开发者无需管理基础结构,从而可以更快构建应用程序。通过无服务器应用程序,将由云服务提供商自动预配、缩放和管理运行代码所需的基础结构。

要理解无服务器计算的定义,注意到服务器仍在运行代码很重要。服务器名称来源于这样一个事实:与基础结构预配和管理相关联的任务对开发者不可见。这种方式让开发者能够更多地专注于业务逻辑,向业务核心交付更多价值。无服务器计算可帮助团队提高生产力、更快将产品推向市场,并让组织可以更好地优化资源、保持专注于创新。

通过这段话不难理解无服务器计算,实际上不是没有服务器了,而是开发人员不需要去关注服务器了。服务器的配置由云服务商搞定,开发人员只需要编写代码实现功能,然后把代码发布到云端即可运行自己的程序。完完全全不需要担心环境搭建,或者负载过大等等问题,运行环境和负载均衡是云服务商考虑的问题,开发者不需要发愁。

以下内容来自于Microsoft Azure无服务器计算专题(链接同上):

  • 无需基础结构管理( 使用完全托管的服务,让开发者可以免于管理任务,专注核心业务逻辑。通过无服务器平台,只需部署代码,它随即就会以高可用性运行。 )
  • 动态可伸缩性( 通过无服务器计算,基础结构可在数秒内动态缩放,以匹配任意工作负荷的需求。 )
  • 加快上市( 无服务器应用程序可减少操作对于每一开发周期的依赖性,提升开发团队的敏捷性,使其能够在更短时间内交付更多功能。 )
  • 更高效地使用资源( 转向无服务器技术,可帮助组织降低 TCO,即“总体拥有成本,Total Cost of Ownership”并重新分配资源以加速创新。 )

目前各大云服务商都支持无服务器应用程序部署,计费方式是按量计费,只有当发布的代码被调用时才进行收费,不被调用不收费。而且收费也很低廉,远低于自己搭建服务器以及运行环境的开销。

Cloudflare Workers 无服务器计算服务

简介

Cloudflare Workers(点击链接进入官网)是世界顶尖网络性能和安全公司Cloudflare提供的无服务器计算服务。它允许开发者将自己的代码上传部署,分布在全球90个国家194个城市的数据中心之中(emmm,这里好像不包括中国大陆),由Cloudflare网络提供支持,客户端发送请求可在毫秒级别得到响应。

Cloudflare Workers使用V8引擎运行托管的程序,意味着可以用JavaScript代码编写程序。同时Workers还支持WebAssembly,允许使用Rust、C以及C++语言编写代码。

Cloudflare Workers还提供了强大的命令行工具Wrangler(点击链接进入GitHub查看使用详情),用来创建、配置、发布项目。

在Workers里,每个项目都以NPM包的形式部署在Cloudflare网络之上,小到一个JavaScript函数,大到React、Vue项目之类。

Cloudflare Workers可以免费使用,免费套餐包含每日10W次请求,每个请求可以使用10ms的CPU时间。具体的可以在Cloudflare后台进入“Workers”控制台查看。

最好的是,Cloudflare Workers还支持使用自有域名和自定义路由。开发者可以不使用Cloudflare提供的免费的workers.dev域名后缀,改为使用自己的域名(域名必须已经接入Cloudflare)托管应用程序。

简单的例子

无服务器计算最简单的情形是函数计算, 部署在云端的提供程序响应客户端发来的请求,然后开发者编写的函数被调用执行。

serverless函数计算的小例子
无服务器函数计算

上图中,是Cloudflare Workers的简单例子,它响应客户端的fetch请求(fetch,用以替代传统Ajax进行异步HTTP请求,点击查看详细文档),然后创建一个响应对象Response,将Welcome to Cloudflare workers字符串发送给客户端。

注意这里,除了开头的addEventListener方法之外,下面的function应尽量使用async修饰符,标识是异步函数,避免方法同步执行一直占用CPU时间。

上手 Workers 开发

首先,注册Cloudflare Workers,登录后台,找到下图链接进入。

着手使用Cloudflare Workers
着手使用 Cloudflare Workers

进入后,如果该账号是第一次使用Workers,就需要设置一个子域名用来部署应用程序,形式是xxx.workers.dev,xxx部分可以自定义,并且只能定义一次,确认后就不能修改。

设置好域名后,需要选择套餐,除了免费套餐外,还有一种是5美元一个月的套餐,每个月可以有1000W次的请求,每个请求可以占用50ms的CPU时间,当然还有更多好处就不列举了。个人部署应用程序的话,免费套餐就可以了,Cloudflare的免费套餐一直都是这么贴心(~ ̄▽ ̄)~。

前置都做完后,就可以上手敲代码了。Cloudflare提供了在线开发环境(“简单的例子”步骤中,插入的截图就是Workers的在线开发环境),包含代码提示、实时预览调试,跟小型的IDE差不多了。

Cloudflare Workers 在线开发环境
Cloudflare Workers 在线开发环境

左侧是代码编辑窗口,类似于Visual Studio,具有代码提示功能。右侧是实时预览,分为上下两部分,上面是最终的输出效果,下面是一个浏览器控制台,在左侧代码窗口中使用console.log之类的方法可以在右侧的控制台中输出内容,跟真正的Chrome浏览器控制台一样,程序运行的报错和警告都会显示出来。

我给这个程序起名“hello-world”,最终这个程序部署之后就通过https://hello-world.xuejingwei.workers.dev进行访问。前面是程序名称,后面是自定义的xxx.workers.dev形式的域名,两者共同组成最终的Workers调用链接。

对于稍大的项目,还是在本地使用Visual Studio Code这样的开发工具,用Wrangler创建项目,这样开发更好。关于Wrangler创建、配置、发布项目的流程,都在Wrangler的官方GitHub仓库中,只需几个命令就可以完成这些操作,把更多的时间和精力投入代码编写中。

发布好的项目,都可以在后台的Workers控制台中查看,或者重新编辑代码。

发表评论

电子邮件地址不会被公开。 必填项已用*标注