Temporal框架学习

前言

公司前员工优化了内部的视频转码流程,引入了工作流,使用的是Temporal框架,其离职后没人了解该项目。本人出于学习的态度便学习Temporal框架,并希望后续能独立接手该项目,积累实战经验,所以深入学习了Temporal。
我们的视频工作流只要包括:去水印、视频下载、多码率转码等。

一、Temporal是什么?

官方说明:Temporal是一种分布式、可扩展、持久且高度可用的编排引擎,用于以可扩展和弹性的方式执行一步长时间运行的业务逻辑。Temporal Go SDK是使用Go语言创作工作流活动的框架。
从官方说明SDK里可以看到2个关键词 “工作流” 和 “活动”,这两个是主体。

二、组件有哪些?

官方给的组件示意图如下,由四部分组成Start、Temporal Server、Worker、Bank。

  • Start:工作流的创建者/发起者
  • Temporal Server:存储所有工作流的数据、状态的中间件,整个工作依赖于该server(后续简写为TS)
  • Worker:实际进行逻辑处理的执行者
  • Bank:官方给的示例,可以理解为DB
    具体的流程描述:启动Temporal Server。启动Worder监听TS,循环获取待执行的工作流。Start创建一个工作流,封装参数,调用sdk的api(rpc)发送到TS。Worker拉取到工作流开始逻辑处理。
    在这里插入图片描述
    woker是Activity和Workflow的包装,worker的唯一工作就是执行Activity和Workflow并将结果返回给TS。
    一个Wokeflow包含多个Activity,对Activity进行编排,多个Activity可以并行,也可以同步(阻塞到都某个Activity执行完毕)。其底层会阻塞到Future.Get()方法上。

三、TS启动

在本地下载并启动TS。

$ git clone https://github.com/temporalio/docker-compose.git
$ cd docker-compose
$ docker-compose up

使用temporal的命令行工具与本地TS交互。

$ alias tctl="docker exec temporal-admin-tools tctl"
$ tctl namespace list
$ tctl workflow list

启动后,网页里输入 http://localhost:8088,检查TS是否正常运行。
在这里插入图片描述

四、样例代码

1.目录结构

代码目录

2.代码

2.1 start

package main

import (
	"context"
	"go.temporal.io/sdk/client"
	"log"
	"temporal/workflow"
)

type Student struct {
   
	Id   int64
	Name string
}

func main() {
   
	c, err := client.NewClient(client.Options{
   })
	if err != nil {
   
		log.Fatalln("unable to create Temporal client", err)
	}
	
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dlian丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值