What's New In Zeebe: Scaling Zeebe, New Client APIs, Faster Requests, Timestamps, NodeJS Client, and Default Topic is Back!
Welcome to the first-ever edition of “What’s New In Zeebe”, where we share our progress on the journey of building Zeebe, the world’s first high-throughput, resilient, and horizontally-scalable workflow engine.
We might not publish a “What’s New In Zeebe” post every non-release week, but when there are exciting developments to share in between releases, we want to be sure we’re getting the word out.
If you have questions for the Zeebe team, or you’d like to get involved with the project, take a look at the Zeebe Community page. There, you’ll find our user support forum, public Slack channel, the Zeebe Github project, and our issue tracker. We gladly welcome new users and contributors to the Zeebe community.
Scaling Zeebe
Felix has been running tests on AWS, particularly to test the new clustering layer released in 0.9.0. Apparently, Zeebe scales :)

This is a great milestone for Zeebe because prior to introducing the replication factor, each broker would replicate each partition, so adding more brokers would not allow you to scale throughput–it would only make the system more resilient by having more copies of the data.
New Client APIs
Thorben and Philipp pushed the first increment of a new Java API that’s a lot easier to use and makes it clearer to users how to formulate fluent API requests like this:
final ZeebeFuture<WorkflowInstanceEvent> workflowInstanceEvt = zeebe.workflowClient()
.newCreateInstanceCommand()
.bpmnProcessId("foo")
.latestVersion()
.send();
Note how it always returns a future that you can decide to block on or not.
There is a lot more to the new API, and I am sure that the team will provide us with a more detailed update after the next alpha release.
Sam also adjusted the Golang client to the new protocol, and we can expect full support for it in the next release.
Faster Requests
We have also been working on making the transport layer faster and scale better when communicating with multiple brokers from one client or broker. The results are great:

You can find more details in this Github issue.
To achieve this, we rewrote the buffer management in the transport layer, and now it is also possible to send requests asynchronously in a loop without having to wait for the response.
Felix is particularly happy that he can write his performance tests like this:
for (int i = 0; i < 1_000_000; i++)
{
zeebe.workflowClient()
.newCreateInstanceCommand()
.bpmnProcessId("foo")
.latestVersion()
.send(); // async sending of the request
}
Timestamps
Thanks to Nicolas, each record in Zeebe now has a timestamp. Timestamps have millisecond precision and reflect when the record (event or command) was appended to the partition / log.
This work prepares us for upcoming support for Zeebe in Camunda Optimize and another webapp we are going to build but that is still “on the QT and very hush hush”…
NodeJS Client
Sebastian, Sam, and Felix have made great progress on exposing the Golang client over FFI so that it can be used as a shared library in an upcoming NodeJS client.
As far as I hear, there was a major breakthrough and both Request-Response but also Subscription Style interactions work.
Work is being conducted here: https://github.com/zeebe-io/zbc-js
Default Topic Is Back!
It is now possible to define one or multiple topics along with partition count and replication factor in the configuration file:
[[topics]]
name = "development"
partitions = 3
replicationFactor = 1
[[topics]]
name = "production"
partitions = 16
replicationFactor = 3
Also, the broker will ship with a default topic configured out of the box, so no more creating a topic in each demo or unit test that you write. I know a certain guy who will be very happy about that!
What's New In Zeebe: Scaling Zeebe, New Client APIs, Faster Requests, Timestamps, NodeJS Client, and Default Topic is Back!的更多相关文章
- zeebe 集成elasticsearch exporter
zeebe 目前还在一直的开发中,同时一些变动还是挺大的,比如simple monitor 的以前是不需要配置HazelcastExporter的 估计是为了进行集群功能处理,新添加的,以前写的配置基 ...
- zeebe docker-compose 运行(包含monitor)
环境准备 docker-compose 文件 version: "3" services: db: image: oscarfonts/h2 container_name: zee ...
- 使用zeebe DebugHttpExporter 查看zeebe 工作流信息
zeebe 提供了一个DebugHttpExporter 可以方便的查看部署以及wokrflow 运行信息 以下是一个简单的运行试用,同时集成了prometheus,添加了一个简单的grafana d ...
- zeebe prometheus 监控配置
zeebe 默认已经集成了prometheus,以下是一个简单的配置,关于grafana 的集成需要调整下 dashboard,目前网上的已经太老了 docker-compose 文件 versi ...
- zeebe 0.20.0 集群部署试用
zeebe 0.20.0 是生产可用的第一个版本,同时也有好多变动,以下是一个简单集群的运行以及一个简单 的运行说明 环境准备 docker-compose 文件 version: "3 ...
- zeebe 集成elasticsearch exporter && 添加operate
zeebe 的operate是一个功能比较强大的管理工具,比simple-monitor 有好多方面上的改进 安全,支持用户账户的登陆 界面更友好,界面比较符合开团队工作流引擎的界面 系统监控更加强大 ...
- Zeebe服务学习1-简单部署与实现demo
1.Zeebe是什么? Camunda公司研发的工作流引擎Zeebe,目标是对微服务的编排.具体详细介绍可以参考官网:https://zeebe.io/what-is-zeebe/ 2.背景 随着微服 ...
- DotNet 资源大全中文版(Awesome最新版)
Awesome系列的.Net资源整理.awesome-dotnet是由quozd发起和维护.内容包括:编译器.压缩.应用框架.应用模板.加密.数据库.反编译.IDE.日志.风格指南等. 算法与数据结构 ...
- A Complete List of .NET Open Source Developer Projects
http://scottge.net/2015/07/08/a-complete-list-of-net-open-source-developer-projects/?utm_source=tuic ...
随机推荐
- 直接插入排序(Straight Insertion Sort)
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- python 最小二乘拟合,反卷积,卡方检验
import numpy as np # from enthought.mayavi import mlab ''' ogrid[-1:5:6j,-1:5:6j] [array([[-1. ], [ ...
- python中的循环以及,continue和break的使用
循环 目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行 ...
- 90%会搞错的JavaScript闭包问题
由工作中演变而来的面试题 这是一个我工作当中的遇到的一个问题,似乎很有趣,就当做了一道题去面试,发现几乎没人能全部答对并说出原因,遂拿出来聊一聊吧. 先看题目代码: function fun(n,o) ...
- FutureTask
因为实现了runnable接口,所以重写了run方法 Future接口如果用在多线程中,实现类一般是有一个volatile的属性,用来标志状态,比如state,如果事情做完了,那么会设置state为成 ...
- 深入了解HyperServer
本文,我们将尝试深入了解uniGUI HyperServer. 可以将HyperServer所有功能分成三类: HyperServer和稳定性 HyperServer和可扩展性 HyperServer ...
- mysql创建用户并授予权限
MySQL创建数据库与创建用户以及授权 1.create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创 ...
- scrapy中自动补全url
url = "https:" + url 或者url = response.urljoin(url) #这里代表的是自动补全url
- 【Python】多线程-1
#练习:创建一个线程 from threading import Thread import time def run(a = None, b = None) : print a, b time.sl ...
- python基础4文件操作
在磁盘上读取文件的 功能都是由操作系统来实现的,不允许普通的程序直接操作磁盘,所以读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据( ...