论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
云原生
›
【03】Camunda7-引擎架构
【03】Camunda7-引擎架构
千千梦丶琪
金牌会员
|
2024-8-8 01:16:53
|
显示全部楼层
|
阅读模式
楼主
主题
993
|
帖子
993
|
积分
2979
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
Camunda7支持多种利用方式,便于用户根据不同的业务场景、利用需求构建本身的流程引擎或流程业务。
嵌入式流程引擎
流程引起被作为一个组件或库,添加/集成到一个自定义程序中,通过这种方式,流程引擎可随应用程序生命周期进行管理,同时,也可以在共享数据库之上运行多个嵌入式流程引擎。
分布式/容器管理的流程引擎
流程引擎在运行时容器(Servelt容器、ApplicationServer等)内启动。流程引擎作为容器提供服务,可以被部署在容器内部的所有程序共享。这个概念可以类比JMS消息队列,它由运行时提供,可以被所有应用程序利用。流程部署和应用程序之间存在一对一的映射:流程引擎跟踪应用程序部署的流程定义,并将执行委托给相关应用程序。
独立运行的流程引擎
独立运行的流程引擎,这种环境程引擎作为网络服务提供。在网络上运行的不同应用程序可以通过长途通信通道与流程引擎进行交互。使流程引擎可长途访问的最简单方法是利用内置的 REST API。不同的通信通道(如SOAP Web服务或JMS)是可能的,但需要由用户实现。
集群模式
为了提供纵向扩展或故障转移功能,可以将流程引擎分发到集群中的不同节点。然后,每个流程引擎实例都必须连接到共享数据库。单个流程引擎实例不会跨事务维护会话状态。每当流程引擎运行事务时,完整状态都会革新到共享数据库。如许就可以将在同一流程实例中工作的后续哀求路由到不同的集群节点。此模型非常简单易懂,在部署聚集安装时施加了有限的限制。就流程引擎而言,纵向扩展的设置和故障转移的设置之间没有区别(因为流程引擎在事务之间不保留会话状态)。
多租户模式
为了通过一个Camunda引擎服务为多个独立方提供服务,流程引擎支持多租户。支持以下多租户模型:
利用不同的数据库架构或数据库进行表级数据分离
利用租户标志进行行级数据分隔投产
这两种方式在数据隔离级别、维护工作量和可扩展性方面相互不同。两种方式的联合也是可能的。Camunda的API 提供对特定于每个租户的流程和相关数据的访问支持。
租户标识符+单引擎单数据源的多租户模式
多租户可以通过一个利用租户标识符(即租户 ID)的流程引擎来实现。所有租户的数据都存储在一个表(相同的数据库和Schema)中。隔离通过存储在列中的租户标识符实现。
租户标识符在Deployment上指定,并同步到通过Deployment创建的所有数据(比方,流程定义、流程实例、任务等)。为了访问特定租户的数据,流程引擎答应按租户标识符过滤查询或为下令指定租户标识符(比方,创建流程实例)。此外,流程引擎提供透明的访问限制,并联合答应省略租户标识符的 Identity Service。(请注意,并非所有API都支持清楚的租户隔离。比方,利用部署API,租户可以为另一个租户部署流程。因此,不应将此类API端点直接暴露给租户的用例。相反,自定义访问检查逻辑应构建在Camunda API之上。)此外,所有租户也可以共享相同的流程和决策定义,而无需为每个租户部署维护它们。在租户数量较多的环境下,共享定义可以简化部署的管理。
若要为单个租户部署流程定义,必须在Deployment上设置租户标识符。给定的标识符将同步到Deployment的所有定义,以便区分/标识它们属于某租户。
如果未设置租户标识符,则Deployment及其定义属于所有租户。在这种环境下,所有租户都可以访问Deployment和定义。(共享定义详细参见https://docs.camunda.org/manual/7.20/user-guide/process-engine/multi-tenancy/#shared-definitions-for-all-tenants)
流程引擎查询答应按一个或多个租户标识符进行筛选,查询特定租户的数据(比方,部署查询、流程定义查询)。如果未设置标识符,则效果包罗所有租户的数据。如果权限管理上不答应用户检察租户的数据,则租户的访问限制规则可能会影响查询效果。
多流程引擎多数据源模式
多租户可以通过为每个租户提供一套流程引擎/数据源来实现。每个流程引擎都设置为利用租户的不同数据源。租户的数据可以存储在不同的数据库中,可以存储在一个具有不同Schema的数据库中,也可以存储在一个具有不同表的Schema中。
流程引擎可以在同一台服务器上运行,以便所有流程引擎共享相同的计算资源,比方数据源(通过Schema或表隔离时)或用于异步作业执行的线程池。
流程引擎可以在设置文件中设置,也可以通过Java API进行设置。每个引擎都应具有与租户相关的名称,以便可以基于租户进行标识。比方,每个引擎都可以以其服务的租户定名。详细信息https://docs.camunda.org/manual/7.20/user-guide/process-engine/process-engine-bootstrapping/
数据库隔离。
如果不同的租户应该在完全不同的数据库上工作,则它们必须利用不同的JDBC设置或不同的数据源。
Schema或表隔离。
对于基于Schema或表的隔离,可以利用单个数据源,这意味着连接池等资源可以在多个引擎之间共享。为了实现这一点:
设置选项 databaseTablePrefix 可用于设置数据库访问。
请考虑打开设置 useSharedSqlSessionFactory。该设置控制每个流程引擎实例是否应解析和维护 mybatis 映射文件的当地副本,大概是否可以利用单个共享副本。由于映射需要大量堆 (>30MB),因此建议将其打开。如许,只需要分配一个副本。
useSharedSqlSessionFactory 设置的注意事项
useSharedSqlSessionFactory 设置会在构建后在静态字段中缓存 mybatis sql 会话工厂。利用此设置设置时,需要注意
仅当利用该设置的所有流程引擎共享相同的数据源和事务工厂时,才能利用它
字段中的引用一旦设置,就永久不会清除。这通常不是问题,但如果是问题,用户必须通过以下方式将其显式设置为 null 来手动清除该字段
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
千千梦丶琪
金牌会员
这个人很懒什么都没写!
楼主热帖
SQLserver的安装
【C++】ZZ1864- 解题精讲
一文搞清UNIX/Linux与Windows文件换行 ...
StoneDB社区答疑第一期
数据湖Hudi与对象存储Minio及Hive\Spar ...
C语言程序设计(一)计算机思维导论 ...
开发了一个Java库的Google Bard API, ...
【HarmonyOS】初识HarmonyOS
学透shell 带你写常用的100个 shell 脚 ...
Cesium 几何体贴模型 sampleHeight(二 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
BPM
MES
Mysql
Oracle
DevOps与敏捷开发
物联网
虚拟化与私有云
快速回复
返回顶部
返回列表