【BPM架构】Zeebe 的常见问题和答案

对Zeebee有问题吗?在这个页面上,我们收集了一个关于项目、产品以及如何参与的常见问题列表。

关于这个项目

Zeebe与Camunda BPM(以及其他传统工作流引擎)有何不同?

为了回答这个问题,我们首先分享一些关于我们为什么开始在Zeebe上工作的背景知识是有帮助的。多年来,我们已经看到用户使用Camunda BPM构建微服务编排解决方案。简单地说,微服务编排是一种对跨越多个不同微服务的业务流程流进行可见性和管理的方法(注意:如果您对Zeebe和微服务编排完全陌生,那么您可能会希望阅读我们的“Zeebe是什么?”那样)。

在许多方面,Camunda BPM非常适合微服务编排。然而,由于Camunda BPM依赖关系数据库来管理活动工作流实例的状态,因此在吞吐量方面(例如,通过测量每秒启动的工作流实例),Camunda BPM的可伸缩性存在固有的限制。

根据我们自己的基准测试,我们知道Camunda BPM通常能够扩展到每秒处理数百个新的工作流实例。但是,我们从用户那里听到的许多微服务编组用例需要每秒处理数万甚至数十万个新的工作流实例。

因此,我们构建Zeebe的决定源于这样一个问题:“我们如何帮助用户处理新出现的用例,这些用例需要比Camunda BPM当前所能提供的更大的规模?”

因此,这两个系统之间的一个核心区别是,Zeebe将工作流状态直接存储在运行Zeebe的机器上,并且不依赖关系数据库——从而消除了一个关键的伸缩瓶颈。Zeebe还提供了一种简单的伸缩机制(请参阅分区),这使得在集群上分发Zeebe变得很容易。这种架构允许Zeebe在商用硬件上实现显著的吞吐量,在我们的内部基准测试中,我们已经看到Zeebe可以实现每秒启动超过100万个工作流实例(in our internal benchmarks, we’ve seen that Zeebe can achieve more than 1 million workflow instances started per second.)。

在构建Zeebe的过程中,我们一直在问自己——不仅仅是可伸缩性——如何设计一个专门为编排分布式服务而构建的工作流引擎。因此,除了工作流状态如何存储之外,这两个系统还有其他不同之处。

例如,因为Zeebe将用于编排工作流,所有任务完成外部services-services可能写在许多不同的编程languages-Zeebe客户基于gRPC,和协议很容易生成客户端在任何gRPC-supported编程语言。另一方面,在Camunda BPM中,外部任务客户端被包裹在引擎的REST API中,每个新客户端都是相对手工创建的。

下表简要总结了Camunda BPM和Zeebe之间的一些关键区别。在这个表格的下面,我们还会链接到一些相关的博客文章和文档的部分,在那里你可以更多地了解Zeebe。我们也在Zeebe的网络研讨会上讨论了这个话题,你可以在这里在线观看。

Comparing Camunda BPM and Zeebe at a high level.

Zeebe与其他编配工具相比如何?

例如,我们还没有创建一个比较表来检查Zeebe和其他编排框架的选择。

但我们提供了下面的列表,以分类总结Zeebe的功能,这些功能通常出现在与希望了解更多信息的用户的对话中。

在选择工作流引擎时,一些用户认为这十个类别都很重要;其他人可能只认为三到四个是重要的。这取决于用例。

我们还写了一篇博客文章,在那里我们对这个列表做了更详细的阐述。

The BPMN service task.

Camunda是什么

Camunda是Camunda BPM背后的公司,Camunda BPM是一个开发者友好的BPMN工作流引擎,拥有一个大型开源社区和一个完全受支持的企业平台。Camunda在工作流自动化领域已经运营了十多年,我们已经帮助世界各地的数百家组织将工作流自动化项目引入到我们的产品中。

我们也是Zeebe背后的公司!我们正在构建Zeebe,因为我们相信有一长串新兴的技术和业务挑战可以通过下一代工作流引擎得到最好的解决——下一代工作流引擎是可扩展的,并被设计成与现代软件架构无缝集成。

我们定期举办聚会和其他活动,我们也参加世界各地的会议。如果您想亲自联系我们,请查看我们的活动页面。

Zeebe是一个开源项目吗?它使用什么许可证?

从2019年7月开始,随着Zeebe 0.20.0的发布,Zeebe的一些组件获得了Zeebe社区许可证v1.0(在这里可以获得完整的许可证)的许可。

总之,Zeebe社区许可证v1.0:

  • 允许MIT的许可,除了。
  • 它不允许提供使用Zeebe的商业工作流服务

Zeebe客户端和api继续在Apache许可证2.0版本下获得许可。

因为Zeebe社区许可证并不完全符合OSI对“开源”的定义,所以我们不再把Zeebe称为开源软件,而是称之为“可用的资源”。

您可以在Zeebe许可概述页面上找到有关Zeebe社区许可以及不同组件如何获得许可的更多信息。

Zeebe工作流引擎是(并且将继续)免费可用的。在未来,Camunda计划提供一个付费的企业平台,Zeebe作为引擎,另外还有专为技术操作人员和业务分析师设计的专有产品,但引擎本身仍然是免费的。

我在哪里可以看到路线图?

我们在Zeebe站点上维护了一个路线图,在那里你可以看到我们在当前季度所做的工作以及我们在最近几个季度所取得的成绩。路线图可以在这里找到。

这个路线图文档并不是对我们在任何特定的季度中将要完成的工作的约束性承诺——它只是一种提供一些关于我们的工程团队在现在和不久的将来所关注的事情的见解的方法。

Zeebe什么时候可以生产?

随着Zeebe 0.20.0的发布,我们删除了“开发人员预览”标签,并发布了第一个可用于生产的Zeebe发行版。

Zeebe已经为生产做好了准备,但并不适用于所有的生产用例。如果您需要高吞吐量或低端到端延迟,您应该尽早进行性能测试,以查看特定工作流的执行情况。

您可以在这个发布声明的博客文章中了解更多关于“生产准备就绪”的信息。

常见的产品问题

BPMN是什么?

BPMN是用于定义和执行业务流程的广泛使用的建模标准。BPMN首次发布于2004年(随后在2011年发布了现代BPMN 2.0规范——Zeebe使用的就是这个规范),自2013年以来,BPMN一直是ISO标准。

BPMN用于定义图形模型和所谓的执行语义。换句话说,可视化模型存储为XML文件,可以直接在保持运行工作流实例的持久状态的引擎上执行。

为了举例说明,下面的模型是用这个XML表示的。

A basic BPMN workflow

需要指出的是,BPMN不涉及代码生成和转换!XML本身就是源代码。而BPMN只关心流程—您可以将普通代码用于解决方案的所有其他方面。

这是微服务编排的关键点,外部工作人员在其中执行您的工作流中的任务。当与正确的工作流引擎相结合时,BPMN可以很容易地将工作流中的任务与微服务连接起来,而且不会违反松耦合和服务独立性的原则。

扩展上面的示例订单工作流,我们可以构建3个不同的微服务来处理支付、库存和发货。工作流引擎负责创建服务可以在流程中的正确位置声明和处理的工作。

An order workflow connected to external worker services.

最后,还有BPMN的成熟度。BPMN很流行,也很完善,并且在大大小小的公司的许多工作流自动化项目中都证明了它的价值。由于这个原因,市场上已经有很多有经验的BPMN人才,以及教程和书籍,让新手很容易学习这个标准。

这个答案是从一篇博客文章中摘录的,在这篇文章中,我们讨论了BPMN在新兴用例(如微服务编排)中的角色。想了解更多,请查看原始的帖子和后续的帖子。

Zeebe目前支持哪些BPMN符号?

Zeebe文档的“BPMN工作流”部分(The “BPMN Workflows” section of the Zeebe documentation)是跟踪Zeebe当前支持的BPMN符号的最佳位置。你可以在路线图中看到我们正在研究的符号。

我可以在Apache Kafka或其他消息传递平台上使用Zeebe吗?

是的!Zeebe工作流可以消费并响应发布的消息,例如,发布到Apache Kafka主题的消息。

在2018年旧金山卡夫卡峰会上,我们的联合创始人贝恩德做了一个关于与卡夫卡一起使用Zeebe的演示。如果你有兴趣了解更多,你可以在这里找到演讲的录音和幻灯片。

Zeebe使用了一些与Apache Kafka相同的概念。Zeebe是建立在卡夫卡之上吗?

当我们……

  • a)认为Zeebe是对卡夫卡的褒奖——我们在2018年的旧金山卡夫卡峰会上谈到过Zeebe和卡夫卡,并将在2019年的伦敦卡夫卡峰会上再次这样说
  • b)确实使用了一些与kafka分区相同的概念来实现水平可伸缩性,使用复制因子来实现容错
  • Zeebe不是建立在卡夫卡之上。

为什么不呢?有几个原因,这里是两个最相关的原因。

  • 保持Zeebe轻量级和易于采用:除了水平可伸缩性之外,我们以现在的方式(paritions +复制vs.关系数据库)构建Zeebe的原因之一是限制使用Zeebe所需的组件数量。要求Kafka(以及ZooKeeper)运行Zeebe对潜在用户来说是一个很大的要求,尤其是那些还没有使用Kafka的用户,我们不想引入这个障碍。
  • 平衡Zeebe的灵活性和可控制性,以及效率和可维护性:在Kafka之上构建一个引擎需要我们对一个庞大而复杂的产品投入更多的信心,因为我们并没有太多的控制权。也就是说,从头开始构建每个Zeebe组件是没有意义的,我们在可能的地方引入了其他很棒的开源框架和工具。Zeebe非常依赖RocksDB和gRPC,我们也在致力于集成Atomix以覆盖一些核心功能。至少到目前为止,我们已经找到了一种平衡,使我们能够构建我们想要构建的Zeebe,并且我们相信在使用现有库和框架节省时间和精力的同时,能够长期解决用户的问题。

要了解更多关于Kafka和Zeebe的信息,你也可以阅读这篇博客文章,其中我们描述了我们为Zeebe构建的Kafka连接器的原型。

我能和Docker一起运行Zeebe吗?

是的!文档中的Zeebe安装指南有一节是关于用Docker运行Zeebe的。

Zeebe是否为审计或业务分析存储我的历史工作流数据?

Zeebe本身不存储历史工作流数据。但是,Zeebe提供了一个简单的出口商系统(请参阅Zeebe文档),它使得在您选择的存储系统中持久化历史工作流数据变得容易,这样您就有了一个审计日志并可以分析数据。

Zeebe还包括一个准备就绪的弹性搜索出口商。

Zeebe是用什么语言写的?

Zeebe是用Java编写的。

我必须是Java开发人员才能使用Zeebe吗?

不!尽管Zeebe本身是用Java编写的,但即使您不是Java开发人员,也可以使用Zeebe。可以使用Zeebe的命令行接口执行许多Zeebe操作。您可以在《快速起步指南》中熟悉Zeebe CLI。

此外,Zeebe的构建方式使得使用任何grpc支持的编程语言创建客户机成为可能。通过这种方式,我们认为Zeebe是“与语言无关的”,这意味着使用各种编程语言构建应用程序的开发人员将能够使用Zeebe。

Zeebe将来会添加哪些不同的编程语言客户端?

Zeebe目前包括Java和Go中支持的客户机。

除了Java和Go之外,我们还没有决定在项目中“正式”支持哪些编程语言客户端,我们希望听到用户的反馈,了解用户希望看到哪些语言。

因为Zeebe客户端可以相对容易地为任何支持gRPC的编程语言生成,所以我们欢迎社区为目前不支持的语言构建客户端。

如果您构建了一个社区扩展,请告诉我们,我们可以将其添加到项目社区页面的列表中。

开始并联系

当我遇到问题时,我可以在哪里问有关Zeebe的问题、提供反馈或获得帮助?

Zeebe网站上的社区页面提供了许多与我们取得联系的方式。

对于问题或反馈,我们推荐用户论坛或公共Slack组。Zeebe小组密切监视这两个频道,并将对即将提出的问题作出回应。

我如何开始与Zeebe?

要接触Zeebe,可以从快速入门开始,它将带您了解基本的Zeebe概念,而不需要编写一行代码。

接下来,您可能想尝试Java客户机的入门指南或Go客户机的入门指南。

 

原文:https://zeebe.io/faq/#how-is-zeebe-different-from-camunda-bpm

本文:http://jiagoushi.pro/node/1210

讨论:请加入知识星球【首席架构师圈】或者小号【jiagoushi_pro】或者QQ群【11107777】