首页 > 其他分享 >Dapr云原生应用开发系列7:工作流集成

Dapr云原生应用开发系列7:工作流集成

时间:2024-03-27 09:11:48浏览次数:33  
标签:原生 集成 Apps 工作 Dapr Logic Azure

题记:这篇介绍一个很有意思的东西,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

转自 https://www.cnblogs.com/redmoon/p/15926615.html

标签:原生,集成,Apps,工作,Dapr,Logic,Azure
From: https://www.cnblogs.com/siyunianhua/p/18098150

相关文章

  • Dapr云原生应用开发系列6:绑定构建块
    题记:这篇介绍绑定构建块,这是一个极度简化应用程序本身代码的特性。本文在GitHubCopilot的帮助下书写。原理由于Dapr由微软Azure团队孵化,所以绑定这一概念也是来源于微软的开源Serverless项目AzureFunctions。所以我们理解Dapr的绑定构建块,可以参考AzureFunctions绑定的概念。......
  • Dapr - 基本概念 【深入官网】
    Dapr使用sidecar架构,与应用程序一起作为单独的流程运行,包括服务调用、网络安全和分布式跟踪等功能1共同点:基于mTLS加密的服务到服务安全通信服务到服务的度量指标收集服务到服务分布式跟踪故障重试恢复能力2不同点:Dapr以开发人员为中心,提供了通过名称进行服务发......
  • Docker搭建持续集成平台Jenkins最简教程
    前言持续集成(ContinuousIntegration,CI)是软件开发中的一种实践,它旨在通过频繁地集成代码变更并自动运行测试,以确保代码的质量和稳定性。Jenkins是一个广泛使用的开源持续集成工具,它能够自动化构建、测试和部署软件项目。在本文中,我们将使用Docker搭建一个基于Jenkins的持续......
  • JL-34 超声波气象站 可集成多要素 集成度高、颜值高、免安装、免布线
    产品概述超声波气象站是我公司结合多年气象产品开发经验,根据现场实际情况开发的一款多功能自动气象站。该产品集温度、湿度、气压、风速、风向、雨量、大气压力、颗粒物和噪声等要素为一体,该系列产品集成度高、颜值高、免安装、免布线。功能特点◆观测参数齐全,可根据实际需......
  • .NET6 Minimal API 集成Autofac
    前提集成Autofac前需要先添加两个依赖包可以通过NuGet进行安装,使用以下命令:dotnetaddpackageAutofacdotnetaddpackageAutofac.Extensions.DependencyInjection集成Autofac在不使用MinimalAPI之前我们集成Autofac大概如下:在Program.cs文件中publicstaticclas......
  • Linux(2)系统基本操作-Mysql数据库原生安装_Mysql常用命令_安装和使用过程常用问题
    二、Linux系统基本操作1、查询centos版本[root@host-10-150-223-171~]#uname-aLinuxhost-10-150-223-1713.10.0-957.el7.x86_64#1SMPThuNov823:39:32UTC2018x86_64x86_64x86_64GNU/Linux[root@host-10-150-223-171~]#cat/etc/redhat-releaseCentO......
  • 云原生周刊:Kubernetes v1.30 一瞥 | 2024.3.25
    开源项目推荐RetinaRetina是一个与云无关的开源Kubernetes网络可观测平台,它提供了一个用于监控应用程序运行状况、网络运行状况和安全性的集中中心。它为集群网络管理员、集群安全管理员和DevOps工程师提供可操作的见解,帮助他们了解DevOps、SecOps和合规性用例。Retina......
  • Knative 助力 XTransfer 加速应用云原生 Serverless 化
    作者:元毅公司介绍XTransfer是一站式外贸企业跨境金融和风控服务公司,致力于帮助中小微企业大幅降低全球展业的门槛和成本,提升全球竞争力。公司连续7年专注B2B外贸金融服务,已成为中国B2B外贸金融第一平台,目前全球的贸易企业也都已开始使用XTransfer。业务场景XTransfer......
  • gitlab 集成runner
    要在CentOS上安装GitLabRunner,可以按照以下步骤进行操作:添加GitLabRunner软件仓库:首先,需要添加GitLabRunner的软件仓库。打开终端并执行以下命令:curl-Lhttps://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh|sudobash安......
  • 原生JavaScript写个表格版的日历
    如图:简单、易懂、写着玩儿的……代码如下:<!DOCTYPEhtml><htmllang="en"><head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width,initial-scale=1.0"> <title>Document&l......