zeebe规约

Zeebe规约

Zeebe客户端通过无状态网关连接到代理。为了在客户端和网关之间进行通信,使用了gRPC。使用协议缓冲区v3(proto3)定义了通信协议,您可以在Zeebe存储库中找到它 。

什么是gRPC

gRPC最初由Google开发,现在是一个开源项目,并且是Cloud Native Computing Foundation的一部分。如果您不熟悉gRPC,则可以在项目网站上的“什么是gRPC”页面上进行介绍。

为什么选择gRPC

gRPC具有许多不错的功能,使其非常适合Zeebe。

支持双向流传输以打开持久连接并在客户端和服务器之间发送或接收消息流

默认情况下使用通用的http2协议,使用协议缓冲区作为接口定义和数据序列化机制-具体来说,Zeebe使用proto3,该协议支持以十种不同的编程语言轻松生成客户端

受支持的客户

目前,Zeebe正式支持两个gRPC客户端:一个在Java中,一个在Golang中。

如果Zeebe没有以您的目标语言提供官方支持的客户端,则可以阅读官方的“快速入门”页面以了解如何创建一个非常基础的客户端。

您可以在Awesome Zeebe存储库中找到现有客户端的列表。此外,还发布了一篇博客文章,其中包含有关如何用Python从头编写新客户端的简短教程。

处理背压

当代理接收到用户请求时,它将首先被写入事件流(有关详细信息,请参阅内部处理部分),然后由流处理器进行处理。如果处理速度很慢,或者流中有许多用户请求,则处理器开始处理命令的时间可能太长。如果代理继续接受来自用户的新请求,则待办事项日志会增加,并且处理延迟可能会超过可接受的时间。为了避免此类问题,Zeebe采用了背压机制。当代理收到的请求数量超出其可以接受的延迟处理范围的请求时,它将拒绝某些请求。

代理可以处理的最大请求速率取决于计算机的处理能力,网络延迟,系统的当前负载等。因此,在Zeebe中没有为其接收的最大请求速率配置固定限制。相反,Zeebe使用自适应算法来动态确定运行中请求(代理已接受但尚未处理的请求)数量的限制。接受请求时,机上请求计数增加,而将响应发送回客户端时,该请求减少。当机上请求计数达到限制时,代理将拒绝请求。

当代理由于背压而拒绝请求时,客户端可以使用适当的重试策略重试它们。如果拒绝率很高,则表明经纪人一直处于高负荷状态。在这种情况下,建议降低请求率。

 

相关教程