强大的Go语言持久化任务框架:Durable Task Framework
在寻求构建可靠且容错的业务逻辑时,Durable Task Framework为Go开发者提供了一个轻量级、可嵌入的引擎。这个引擎允许你以普通代码形式编写持久化的流程(编排),并自带gRPC接口支持多语言SDK。目前已有.NET和Java的SDK,而直接在Go中编写编排并在本地进程中运行也是完全可能的。
框架概述
Durable Task Framework源自微软的.NET版本,已被广泛用于构建云服务的可靠控制平面和基础设施管理。它借鉴了Go Workflows项目的设计,并针对sidecar架构进行了优化,目标是成为Dapr内置的工作流引擎基础。
该框架目前还处于开发初期阶段,不适合生产环境使用。API表面尚未稳定,但已包含了基本的SQLite存储提供者,并提供了创建独立gRPC sidecar的示例代码。
技术剖析
该框架提供了灵活的存储提供商扩展机制,例如,SQLite存储提供者将应用状态持久化到磁盘。此外,通过实现Backend
接口,可以轻松创建自定义的存储解决方案。
核心组件包括:
- SQLite Backend:将状态存储在SQLite数据库中。
- gRPC Executor:支持其他语言SDK与Go进程通信。
- TaskHubWorker:组合
Backend
和Executor
,负责处理工作项。
应用场景
Durable Task Framework适用于需要以下特性的场景:
- 分布式协调:在多节点环境中,协调复杂的工作流程。
- 容错处理:确保即使在故障情况下也能恢复执行。
- 长期运行的流程:处理需要长时间运行或等待外部事件的任务。
- 跨语言协作:利用多个SDK在不同编程环境中编写和调用编排。
特色亮点
- 灵活性:易于集成,支持多种语言编写编排。
- 轻量化:设计为可嵌入到Go应用程序中的sidecar架构。
- 持久化:通过存储提供者确保工作流状态的持久化。
- 多语言支持:现有.NET和Java SDK,未来还将添加更多。
- 异步输入:能够处理来自外部系统的事件,如等待用户批准或系统信号。
开始使用
要启动一个独立的gRPC sidecar,请参考main.go
文件中的示例。一旦配置好,可以用任何支持gRPC的SDK创建和交互编排。对于Go语言,可以直接在本地进程中编写和运行编排,享受到与Go语言紧密集成的好处。
立即加入Durable Task Framework的社区,探索如何利用其强大的功能来提升你的软件工程实践吧!
请注意: 文档提到的示例代码和项目链接位于原始readme中,具体细节请查阅项目源码仓库。由于该项目仍在发展,建议定期检查更新以获取最新信息和指南。