当前位置: 首页 > 知识库问答 >
问题:

Camunda:高性能动态多租户应用程序的体系结构和决策

何灼光
2023-03-14

我负责为我的公司建立一个复杂的系统,经过一些研究,决定卡门达符合我的大部分要求。但是我的一些需求并不常见,在阅读了用户指南后,我意识到有很多方法可以做同样的事情,所以我希望这个问题可以澄清我的想法,也可以作为其他人寻找构建类似东西的基础问题。

首先,我计划在Camunda BPM之上构建一个特定的应用程序。它将使用工作流和BPM,但不一定使用BPM/Camunda提供的所有东西。这意味着我不打算使用大部分与Camunda捆绑的web应用程序(任务、Modeler...),至少不是针对最终用户的。为了让事情变得更加复杂,它必须支持多个租户...动态地。

因此,我将尝试指定我的所有需求,然后希望有比我更有经验的人能够解释哪一个是最好的架构/解决方案来实现这一工作。

开始了:

  • 构建在Camunda BPM之上的单个应用程序
  • 高性能
  • 工作负载(几个月后新增10k个流程实例/天)。
  • 用户(从1K开始,预计为~50K)。
  • 多个租户(以10开始,预计为~1k)
  • 动态管理的租户(创建、部署流程定义)
  • 它将部署在群集上
  • PostgreSQL
  • Wildfly 8.1最好
    null
    null

我不排除在我的应用程序中只使用一个租户、一个流程引擎并逻辑地处理与租户相关的一切,但我明白这可能非常(非常!)笨重。

欢迎所有的答案,希望我们能找到一个解决这个问题的好方法。

共有1个答案

党源
2023-03-14

1.我应该让camunda管理我的用户/组,还是在我的应用程序上更好地管理?在这种情况下,我是否可以对Camunda说“用户X完成了任务Y”,即使Camunda并不知道用户X的存在?

是的,你可以选择你的应用程序来管理用户,并告诉Camunda任务是由Camunda不知道的用户完成的。同样,你可以让Camunda把任务分配给它根本不知道的用户。这是通过实现他们的org.camunda.bpm.engine.impl.identity.ReadOnlyIdentityProvider接口来实现的,并让配置了解您的实现。

PS:如果你不需要Camunda附带的所有应用程序,我甚至会建议你在你的应用程序中嵌入Camunda引擎。这可以很容易地完成,而且他们有很好的java API文档。而且很容易实现。

以我的经验,这是可能的。您需要跟踪这里的各种参数,如内存、被服务的请求数、可用的打开连接数等,然后相应地添加更多或删除节点。使用AWS,这将容易得多,因为他们已经有了一些用于动态伸缩进/出节点的工具。但也就是说,我只使用Camunda作为嵌入式引擎应用程序。

 类似资料:
  • 我遇到了企业应用程序架构中的一个严重问题。我当前的应用程序是一个使用和的web应用程序。现在我需要在当前应用程序中支持多租户。 我的要求是,当用户登录到系统时,应该从相应的数据库中为用户提供数据。简而言之,我需要多个数据库支持,这可能会导致不同的连接字符串。那么我如何动态连接到数据库呢? 我的另一个问题是,租户(应用程序的特定客户端)可以动态注册自己,成功注册后,我需要创建一个包含数据库创建和初始

  • 我正在使用spring boot开发一个多租户应用程序。 系统的业务逻辑将根据每个租户进行更改。 例如,应用程序上的特定租户租赁空间可能希望改变使用一些复杂的自定义逻辑计算值的方式。我想为应用程序注册默认行为/依赖项,并允许特定租户覆盖它。 这可以使用Spring Boot完成吗?

  • 我必须在j2ee中开发一个多租户SaaS应用程序,从Iaas和PaaS开始实现三种云模型,我选择了openstack和openshift origin。SaaS应用程序的第一个标准是多租户,我知道有三种方法来实现它——单独的数据库——共享数据库,单独的模式——共享数据库,共享模式。我在这里迷失了方向,因为许多框架,比如ATHENA,ORM,比如hibernate,还有TOPLINK。我需要帮助了解

  • 我已经安装了keycloak-angular包,我使用它的方式如下:https://www.npmjs.com/package/keycloak-angular 问题是,在我的应用程序中,我希望有多租户。这意味着在应用程序加载期间不知道领域名。 在说明中,它说“KeycloakService应该在应用程序加载期间使用APP_INITIALIZER标记初始化”,问题是该领域是由用户给定的,在应用程序

  • 我有一个django应用程序有客户端和多个用户链接到这些客户端,我想将系统迁移到分层多租户架构。 分层部分 客户端可以递归地包含其他客户端。例如,客户端A包括客户端B和客户端C。如果用户客户端A登录系统,用户将看到客户端B和客户端C的数据。如果客户端B的用户登录系统,用户将只看到客户端B的数据。 多租户部分 我想将所有客户机的数据存储在单独的模式中。但有些数据与客户机无关,所以我想将这些数据存储在

  • 问题内容: 我正在构建一个应用程序,它将需要提供多种语言和区域设置。 我的问题不是纯粹的技术问题,而是关于架构以及人们在生产中实际用来解决此问题的模式。我在那里找不到任何“食谱”,所以我转向了我最喜欢的问答网站:) 这是我的要求(它们实际上是“标准”): 用户可以选择语言(平凡) 更改语言后,界面应自动翻译成新选择的语言 我现在不太担心格式化数字,日期等的问题,我想要一个简单的解决方案来只翻译字符