分布式任务调度框架(Temporal)介绍

Temporal是一款基于Golang的分布式任务调度框架,具备任务管理、集群管理、编程能力和Web界面管理功能。文章介绍了Temporal的基本能力,通过一个延时发送短信和邮件的示例展示了其工作流程,包括Workflow的编写、Workers的启动和TemplateServer的部署。Temporal旨在提供工作流编排和C/S架构支持,适合需要确保任务执行成功的场景。
摘要由CSDN通过智能技术生成

分布式任务调度框架基本能力:

  1. 任务管理能力(增删改查、执行、定时执行、延时执行、健康监控)
  2. 集群管理能力(扩展简单、效率高)
  3. 编程能力(运行代码)
  4. Web界面管理

目前市面上有很多可用于处理分布式任务的开源框架,比如Elastic-JobXXL-JobQuartz等等,它们或多或少都能满足以上列出的各项基本能力,然而,它们都是以Java系语言编写的,这不禁让人产生疑问,难道Go就没有自己的开源任务调度框架吗?

经过在网络上一番翻箱倒柜,找到了类似gocrongocraft/workrobfig/cron等一系列工具。然而它们或者年久失修;或者不足以称之为框架(顶多是个三方库);或者没有界面;等等问题不一而足。但是终于,还是发现了这款堪称满足对分布式调度框架所有幻想的开源项目: Temporal 。目前Star数还不是很多,但是不妨碍它成为一款golang编写的最佳分布式任务调度框架的潜质。不多废话,赶紧来介绍给大家看看。

在Temporal的眼中,对自己的定位是 microservice orchestration platform,提供工作流编排、C\S架构、状态查询等一系列功能。在我看来,它基本覆盖了以上列出的四点能力,我们以一个架构图开始它的介绍:

截屏2021-09-18 13.41.19.png

我们从左往右看,依次出现的几个角色是ActivityWorkflowWorkersTemporal ServerCLIWebSDK。我们列一张表对它们进行简单介绍:

角色 说明
Activity 一段可运行代码(function),可以包含任何逻辑。由于Temporal提供了各种语言的SDK(go、java、python、php等等)所以Activity是不限制语言的。
Workflow Activity的集合,多个Activity可以构成一个Workflow,也是调度的最小单位。
Workers 不同语言写的Workflow可以注册到对应语言的Worker中,Worker是代码的真正执行者
Temporal 管理注册到自己的Workers,向Workers下发任务,监听任务状态等等
CLI or SDK 任务的发起者、监控任务进度等
Web 负责任务的监控、查询等。

这个架构是不是有点类似生产者-消费者模型,CLI or SDK是生产者,负责启动某个Workflow;Temporal类似 kafka\RocktMQ ,负责把请求调度某个Worker;Workers是消费者,负责执行请求。但深入思考一下,我还是觉得跟消息队列有很大差别:

    1. 更关注任务的执行
        消息队列的核心是消息,生产者不关心这个消息被谁消费,消息队列关注的是消息是否送达。
        而 Temporal ,关注的是任务,关注任务执行进度和结果,是否需要重启等等。
    2. 需要提前设计好Workflow
        消息队列不需要关注消费者怎么消费消息的。而 Temporal ,你必须先把Workflow的逻辑
        写好。

所以这两个系统还是不太一样的,选择 Temporal,是因为我们想执行某个预定任务,并保证它执行成功。比如,交易系统每晚定时对账;注册系统过段时间自动向用户发送短信等。虽然用MQ也能实现,但可能要做很多错误处理等工作。

Temporal 示例

Talk is cheap, show me the code.

接下来用一个简单的示例展示下 Temporal的使用流程,场景是延时1小时向用户发送短信和邮件。

1. 先编写Activity的代码:
type MessageRequest struct {
   
   PhoneNum string
   Content  string
   Tags     []string
}

func SendMessage(ctx context.Context, mr MessageRequest
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值