惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

AI
AI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google DeepMind News
Google DeepMind News
T
Tenable Blog
博客园_首页
S
Securelist
Spread Privacy
Spread Privacy
Google Online Security Blog
Google Online Security Blog
Forbes - Security
Forbes - Security
Engineering at Meta
Engineering at Meta
U
Unit 42
L
LINUX DO - 热门话题
量子位
T
Threat Research - Cisco Blogs
博客园 - 【当耐特】
C
Cyber Attacks, Cyber Crime and Cyber Security
K
Kaspersky official blog
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
Google DeepMind News
Google DeepMind News
GbyAI
GbyAI
Martin Fowler
Martin Fowler
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Security Latest
Security Latest
Scott Helme
Scott Helme
V
Vulnerabilities – Threatpost
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
InfoQ
Know Your Adversary
Know Your Adversary
Cisco Talos Blog
Cisco Talos Blog
The Register - Security
The Register - Security
T
The Blog of Author Tim Ferriss
aimingoo的专栏
aimingoo的专栏
V2EX - 技术
V2EX - 技术
T
Tailwind CSS Blog
月光博客
月光博客
Recent Announcements
Recent Announcements
G
Google Developers Blog
F
Full Disclosure
W
WeLiveSecurity
宝玉的分享
宝玉的分享
腾讯CDC
G
GRAHAM CLULEY
Vercel News
Vercel News
Simon Willison's Weblog
Simon Willison's Weblog
美团技术团队
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Help Net Security
Help Net Security

博客园 - 朱永光

Dapr云原生应用开发系列6:绑定构建块 Dapr微服务应用开发系列5:发布订阅构建块 Dapr微服务应用开发系列4:状态管理构件块 Dapr微服务应用开发系列3:服务调用构件块 Dapr微服务应用开发系列2:Hello World与SDK初接触 Dapr微服务应用开发系列1:环境配置 Dapr微服务应用开发系列0:概述 利用Azure Functions和k8s构建Serverless计算平台 我如何通过K8S开发认证(CKAD)考试 对Windows桌面应用程序进行UI自动化测试 Service Fabric是什么? 如何把遗留的Java应用托管在Service Fabric中 如何在本地数据中心安装Service Fabric for Windows集群 当TFS/VSTS遇上Power BI .NET英文技术文章导读(2017-03-23) .NET英文技术文章导读(2017-02-09) Power BI入门教程 数据分析师的福音——VS 2017带来一体化的数据分析开发环境 如何把Power BI嵌入到Web应用中
Dapr云原生应用开发系列7:工作流集成
朱永光 · 2022-02-23 · via 博客园 - 朱永光

题记:这篇介绍一个很有意思的东西,Dapr和Logic Apps这样的工作流引擎集成。

Dapr工作流

在1年多前,Dapr的孵化团队搞了一个很有意思的东西:把Dapr和Logic Apps集成起来,实现Dapr内置的工作流引擎。

官方文档:

https://docs.dapr.io/developing-applications/integrations/azure/workflows/

官方博客:

https://cloudblogs.microsoft.com/opensource/2020/05/26/announcing-cloud-native-workflows-dapr-logic-apps/

Logic Apps是Azure上的一个PaaS/SaaS服务,可以认为是一个云端的BPM。官方文档的介绍如下:

Azure 逻辑应用是一个基于云的平台,用于创建和运行集成应用、数据、服务和系统的自动化工作流。借助此平台,可以快速为企业和企业到企业 (B2B) 方案开发高度可缩放的集成解决方案。作为 Azure Integration Services 的成员,Azure 逻辑应用简化了跨云、本地和混合环境连接旧式、新式和一流系统的方式。

由于Logic Apps(通过NuGet)提供了独立的运行时和SDK,所以Dapr可以把其集成进来,获得如下好处:

  • 在任意环境运行Logic Apps工作流:本地机器、私有数据中心、Kubernetes集群或者公有云。

  • 通过Dapr获得内置的跟踪、度量和mTLS能力

  • 为你的工作流提供gRPC和HTTP端点

  • 利用Dapr的绑定或发布订阅事件来触发工作流执行

  • 通过调用Dapr的状态存储、发布消息等功能来编排复杂的工作流场景

当然微软目前主要是通过跨云产品Azure Arc来把Azure上的很多应用服务引入到其他环境,见:

https://azure.microsoft.com/en-us/blog/build-cloudnative-applications-that-run-anywhere/

实现原理

集成的基本原理其实很简单,把Logic Apps运行时包装到一个实现Dapr规范接口的gRPC Server,并以Dapr应用的方式来运行:

然后把Logic Apps的工作流定义json文件加载进去,通过Dapr的服务调用、绑定或者发布订阅来“触发”这些工作流。通过代码可知,“触发”最终还是通过http trigger的方式来启动工作流实例。

正因为这种巧妙的架构,加上Dapr强大的能力,我才可以很简单的就为其实现了发布订阅触发工作流的能力(一开始的版本仅支持服务调用和绑定触发)。

支持发布订阅的版本的代码见:

https://github.com/heavenwing/dapr-workflows/tree/SupportPubSub

你可以Clone代码到本地,然后根据README的说明来尝试。也可以把这个工作流引擎集成到你的Dapr应用程序当中,实现灵活的业务流程处理。

更多思考

理论上,我们可以使用这样的架构,把任何工作流引擎集成到Dapr当中,只要这个引擎的运行时可以被一个外壳应用程序包装。

另外,大家可能会问,那么我如何得到工作流订阅json文件呢?如果你对Logic Apps的工作流规范很熟悉,尽可以纯手写json;但其实最简单的方式是到Azure Portal里面新建一个Logic Apps,直接利用它的设计器来获得工作流定义json文件,我的代码中的workflow3.json就是这样得到的。

Logic Apps工作流语言参考文档在:

https://docs.microsoft.com/zh-cn/azure/logic-apps/logic-apps-workflow-definition-language