Vercel 如何使用 Amazon EventBridge 调度器在2个月内发布 Cron 作业

2023-10-21 10:28

本文主要是介绍Vercel 如何使用 Amazon EventBridge 调度器在2个月内发布 Cron 作业,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

f83106e12cfe3aeb38b8a4cce09baf36.gif

Vercel 使用 Amazon EventBridge 调度器实施 Cron 作业,使他们的客户能够大规模创建、管理和运行计划任务。该功能很快就获得了广泛采用,发布后仅几个月,每周 cron 调用次数就超过 700 万次。本文将介绍他们是如何取得这一成就的,以及他们如何处理遇到的大规模扩展。

Vercel 构建了前端云,使工程师可以更轻松地部署和运行其前端应用程序。过去两年,Vercel 的部署量超过 1 亿次,Vercel 高度依赖无服务器技术,帮助用户以零配置的方式利用一流的亚马逊云科技基础设施。Vercel 提供了许多功能来帮助开发人员托管其前端应用程序。然而,直到今年年初,他们还没有构建出 Cron 作业。

Cron 作业是一项计划任务,可按预定时间间隔或固定时间自动运行特定命令或脚本。它使用户能够设置定期、重复的操作,例如备份、向客户发送通知电子邮件或在需要续订订阅时处理付款。Cron 作业广泛用于计算环境,以提高效率并自动化日常操作,这正是 Vercel 客户普遍要求的功能。

2022 年 12 月,Vercel 举办了一场旨在促进创新的内部黑客马拉松。正是在这场活动上,Vincent Voyer 和 Andreas Schneider 联手为 Vercel 平台构建了 cron 作业功能的原型。他们组建了一个五人团队,花了一周的时间来开发该功能。该团队对从构建显示 cron 作业的用户界面到创建该功能的后端实施的不同任务进行了研究。

Amazon EventBridge 调度器


当这个黑客马拉松团队开始考虑解决 cron 作业问题时,他们首先想到的是使用按计划运行的 Amazon EventBridge 规则。但是,他们很快意识到,此功能限制每个亚马逊云科技区域的每个账户使用 300 条规则,这不足以满足他们的预期用途。幸运的是,一名团队成员阅读了亚马逊云科技计算博客中的 Amazon EventBridge 调度器公告,他们认为这将是解决他们问题的完美工具。

通过使用 EventBridge 调度器,他们可以在 270 多项亚马逊云科技服务中一次性或周期性调度数百万个任务,而无需预置或管理底层基础设施。

26f7fd17e2b028e623facff096a041a5.png

为了在 Vercel 中创建新的 cron 作业,客户需要定义此任务的运行频率以及他们想要调用的 API。Vercel 在后端使用 EventBridge 调度器,并且在创建新的 cron 作业时会创建一个新的计划。

为了调用端点,团队使用 Amazon Lambda 函数来接收需要作为输入参数调用的路径。

9c6eb80c63f50d90e6f0239042afb801.png

当 cron 作业运行时,EventBridge 调度器会调用该函数,然后,该函数会调用已配置的客户网站端点。

到了周末,Vincent 和他的团队已经获得了 cron jobs 功能的有效原型版本,并且在黑客马拉松中获奖。

构建 Vercel Cron 作业


12 月,在使用该原型一周后,黑客马拉松结束了,Vincent 和他的团队也回归到他们的日常工作中。2023 年 1 月上旬,Vicent 和 Vercel 团队决定继续研发该项目并将其转变为真正的产品。

在黑客马拉松期间,团队构建了该功能的基本部分,但他们需要完善一些细节才能为生产做好准备。Vincent 和 Andreas 潜心开发该功能,不到两个月,即 2023 年 2 月 22 日,他们就向公众宣布推出 Vercel Cron 作业。该公告推文获得了超过 40 万次浏览,此次发布在社区内广受好评。

9adce92c3ad8b62f193748cf6496504e.png

此功能很快就获得了广泛采用。Cron 作业发布后仅几个月,Vercel 的每周 cron 调用次数就超过了 700 万次,他们预计采用率还将继续增长。

accf460cbddeef5a3fb20b40d5d12434.png

Vercel Cron 作业如何处理扩展


在这一采用速度下,扩展此功能对于 Vercel 来说至关重要。为了以同样的速度扩展 cron 调用量,他们必须制定一些业务和架构决策。

从业务角度来看,他们为免费套餐客户定义了限制。免费套餐客户最多可以在其账户中创建两个 cron 作业,而且只能创建每小时计划。这意味着免费客户不能每 30 分钟运行一次 cron 作业;相反,他们最多可以每小时运行一次。只有使用 Vercel 付费套餐的客户才能利用 EventBridge 调度器分钟粒度来安排任务。

此外,对于免费客户来说,无法保证分钟精度。为了实现这一目标,Vincent 利用 EventBridge 调度器的时间窗口配置。灵活时间窗口配置允许您在时间窗口内启动计划。这意味着计划任务分散在时间窗口内,以减少多个请求对下游服务的影响。例如,如果许多客户想要在午夜运行作业,这会非常有用。通过使用灵活时间窗口,可以将负载分散在设定的时间窗口中。

从架构的角度来看,Vercel 兼具托管 API 和拥有 cron 作业调用的函数的优势。

922c2fa268c8ab95ad75af78c9b751d5.png

这意味着,当 EventBridge 调度器启动 Lambda 函数时,该函数无需等待 API 的响应即可结束其运行。然后,Vercel 通过从其可观测性机制中检查 API 和 Vercel 函数是否正确运行来验证 cron 作业是否运行。这就使函数持续时间非常短,不到 400 毫秒。这使 Vercel 每秒可以运行大量函数,而不会影响其并发限制。

0439eb09d8b1e0400708134fb6f9d142.png

产生了什么影响?


Vercel 对 Cron 作业的实施就是无服务器技术功效的典型案例。在两个人全职工作的情况下,他们在两个月内就推出了社区需要并热情采用的功能。此功能显示了 Vercel 平台的完整性,这也是说服客户转向付费账户的重要功能。

如果您想开始使用 EventBridge 调度器,请参阅适用于 EventBridge 调度器的 Serverless Land 模式,您可以在其中找到各种可以为您提供帮助的示例。

  • 适用于 EventBridge 调度器的 Serverless Land 模式:

    https://serverlessland.com/patterns?services=eventbridge-scheduler

本篇作者

fab888b0eb9d0222f928ed6976677ebe.jpeg

Marcia Villalba

亚马逊云科技首席开发者布道师,她在软件行业,尤其是应用程序的构建和扩展方面有着20年的从业经验。她致力于设计能够充分发挥云计算能力的系统,并积极拥抱 DevOps 文化。

d87ab699a3ae5735c184330ffc43aaa4.gif

星标不迷路,开发更极速!

关注后记得星标「亚马逊云开发者」

0ca0eca13a5d4be7ae61829d4a43f874.gif

听说,点完下面4个按钮

就不会碰到bug了!

4eb6b1b9df93a6ef555fb7131de27564.gif

这篇关于Vercel 如何使用 Amazon EventBridge 调度器在2个月内发布 Cron 作业的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/253770

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3