本文已使用 Google Cloud Translation API 自动翻译。
某些文档最好以原文阅读。
IT 开发团队通常负责构建和维护支持公司核心产品或服务的后端应用程序。这些应用程序通常需要与各种其他系统进行交互——有时在同一公司内,有时与外部合作伙伴或客户进行交互。
任务编排是一个术语,指的是按预定义顺序自动执行一组任务的过程。这在后端应用程序场景中很有用,在该场景中有许多不同的任务需要按特定顺序执行,并且这些任务需要与其他系统协调。
有许多不同的方法可以在后端应用程序中实现任务编排。在本文中,我们将了解一些最流行的方法,并就何时以及如何使用它们提供一些实用建议。
在后端应用程序中实现任务编排的一种方法是使用数据库触发器。数据库触发器是当数据库中发生特定事件时自动执行的一段代码。
例如,假设您有一个后端应用程序,需要在下新订单时向客户发送电子邮件。您可以使用数据库触发器来自动执行在新订单插入数据库时发送电子邮件的代码。
数据库触发器可以是实现任务编排的便捷方式,但它们也可能是一把双刃剑。一方面,它们可以自动执行任务,并使这些任务与其他系统的协调变得容易。另一方面,它们会使您的代码更难理解和维护。
如果您决定使用数据库触发器来进行任务编排,那么明智地使用它们很重要,并且只有在它们提供明显优于其他方法的优势时才使用它们。
在后端应用程序中实现任务编排的另一种流行方法是使用消息队列。消息队列是一种系统,它存储消息并以先进先出 (FIFO) 的顺序将消息传递给消费者。
消息队列通常与 worker 结合使用。工作者是在后台运行并使用来自消息队列的消息的进程。在上一节的电子邮件示例中,工作人员将负责将电子邮件发送给客户。
消息队列是实现任务编排的灵活方式,因为它们可用于协调不同系统之间的任务。例如,您可以使用消息队列来协调后端应用程序和前端应用程序之间的任务执行。
cron 作业是在特定时间或间隔自动执行的任务。 Cron 作业通常用于执行系统维护任务,例如运行备份脚本或向管理员发送报告。
Cron 作业也可用于在后端应用程序中实施任务编排。例如,您可以使用 cron 作业在客户的订单发货前 24 小时向客户发送提醒电子邮件。
Cron 作业是实现任务编排的一种简单有效的方法,但它们可能有点不灵活。例如,很难与其他系统协调 cron 作业的执行。
Lambda 函数是一种响应事件而执行的函数。 Lambda 函数通常用于处理来自 Amazon S3 或 Amazon DynamoDB 等来源的事件。
Lambda 函数还可用于在后端应用程序中实施任务编排。例如,您可以使用 Lambda 函数处理来自消息队列的事件流,并将相应的电子邮件发送给客户。
Lambda 函数是实现任务编排的灵活方式,但调试和故障排除可能有点困难。
有许多不同的方法可以在后端应用程序中实现任务编排。适合您的应用程序的最佳方法取决于许多因素,包括任务的复杂性、涉及的系统数量以及您的开发团队的技能。
如果您不确定哪种方法最适合您的应用程序,我们建议您从数据库触发器或 cron 作业等简单方法开始。有了可行的解决方案后,您始终可以重构代码以使用更复杂的方法,如消息队列或 Lambda 函数。