欢迎光临散文网 会员登陆 & 注册

EventMesh发布由腾讯贡献的CNCF Serverless Workflow Engine实现

2022-12-12 14:38 作者:微众开源WeBankOS  | 我要投稿

EventMesh 动态事件驱动的应用程序运行时,能够用动态插件式基础服务对系统进行解耦,支持不同技术栈的混合多云、复杂分布的拓扑结构等广泛用例。以事件驱动为核心,增强事件处理能力,优化编排协调过程,并提供联邦治理机制。为企业实现数字化转型提供了应用进程间通信的全套解决方案,帮助企业降低系统复杂度,节约开发维护成本。

EventMesh v1.7.0是进入Apache孵化后更新的第6个版本,本次版本为大家带来了 14 个新增特性,其中重磅的EventMesh Workflow Engine特性来自于腾讯的朱同学(GitHub id Walter)贡献,同时强化了 28 个模块,完善和修复了 22 个可能的安全问题,在文档和代码风格方面做了 9 处改进……具体有哪些,请大家下滑了解一下,关于分布式运行时用起来有多爽 ?效果怎么样?案例有哪些?欢迎来社区讨论!

图片

EventMesh架构图

EventMesh v1.7.0版本新增的主要特性:

  • 支持工作流引擎与服务编排

    EventMesh Workflow Engine在本次版本与大家见面,其设计的整体架构如下图所示:

图片

EventMesh Workflow架构图

    工作流引擎核心部分分为了两个模块:EventMesh Workflow与EventMesh Catalog,同时插件部分包含了:Task、Queue、Scheduler、Protocol、Store、Naming。核心部分提供了系统运行所需的最小功能集,而插件是独立的组件,包含自定义的各种业务代码,用来向核心系统增强或扩展额外的业务能力。基于这种自上而下的3层存算分离插件化架构,可以扩展出不同类型的事件存储(MQ/SQL/NO-SQL等)和不同的通信协议(grpc/http/cloudevents等)。

图片

EventMesh Workflow交互图

    从上图中我们可以看到,应用服务通过AsyncAPI来描述定义服务,并通过SDK向EventMesh Catalog服务注册,Catalog服务实现服务的解析与发现;基于配置化理念,EventMesh Workflow DSL遵从CNCF Serverless Workflow Spec,解析后的DSL包含了State\Action\Function\Event\Retry模块,同时工作流的事件收发统一采用了CloudEvents标准事件协议,EventMesh实例实现交互。如下图所示,为下单-支付-运送 Workflow DSL示例:

图片

Workflow DSL 示例图

EventMesh Workflow运行时特性:• 持久化1. 工作流任务是持久化存储,

2.任务调度完成时间不做约束,可以是几秒,几分,甚至几小时。

• 可靠性1. 任务执行是可靠的,在失败后是完全可自愈的。

2. 任务状态机保障工作流执行的状态在面对故障和中断时保持不变,并从最新状态恢复执行。

• 可扩展性

Task,Workflow-Engine,Scheduler组件可以集群模式部署,快速水平扩展,提升系统整体吞吐。• 可观测性1. Workflow执行过程溯源,包括过程耗时,执行链路

2. 关键指标,日志上报,基于OpenTelemetry标准

  • 多元化事件存储与注册中心的支持

    除了上面的工作流引擎特性以外,本次版本还扩展了不同的事件存储插件(RabbitMQ\Pulsar\Knative\Redis\Pravega等),用户可以根据自己的业务场景来选择不同的存储插件。并支持集成zookeeper作为注册中心,同时扩展了pinpoint作为EventMesh trace的插件。

  • 多语言客户端的扩充

    本次版本客户端部分新增了Rust SDK,同时在现有JavaSDK基础上支持对接EventMesh Workflow与Catalog服务的功能,并配备了相应的demo示例,方便用户体验workflow功能。

GitHub repo:https://github.com/apache/incubator-eventmeshGitee repo:https://gitee.com/WeBank/EventMeshWebsite:https://eventmesh.incubator.apache.org/

Slack(indate 2023-01-06):https://join.slack.com/t/apacheeventmesh/shared_invite/zt-1kzy4mlx2-0_20N_T3pwiZ1zR_Y8Vmgg

特性


  • 功能#155 支持 rabbitmq 连接器

  • 特性 #1261 支持 Pinpoint 跟踪插件特性

  • 功能 #1248 添加 EventMesh Workflow模块

  • 功能 #1247 添加EventMesh Catalog模块

  • 特性 #1244  Java SDK 添加了 nacos 命名空间选择器

  • 功能 #1092 Java SDK添加了EventMesh Workflow客户端

  • 功能 #1091 Java SDK 添加了 EventMesh Catalog客户端

  • 功能 #1090 支持使用 AsyncAPI 管理 EventMesh 事件

  • 功能 #1040 支持 Pulsar 连接器插件和 Pulsar 作为事件存储

  • 功能 #973 支持zookeeper注册中心

  • 特性 #815 支持 Rust SDK

  • 功能 #790 支持 Knative 作为 Eventing Infra

  • 功能 #389 支持 Redis事件存储

  • 功能 #270 支持Pravega事件存储


增强


  • 增强 #2167 依赖默认编码

  • 增强 #2169 方法检查集合的大小是否为零,而不是使用 isEmpty()[WebhookTopicConfig]

  • 增强 #2147 添加工作流运行脚本

  • 增强 #2069 支持 Go SDK Http EventMesh 消息协议

  • 增强 #2062 由于被调用方法[SubScribeTask]的返回值,可能取消引用空指针

  • 增强 #2056 使用 try-with-resources 管理资源[RejectClientByIpPortHandler]

  • 增强 #2017 支持 Go SDK http 协议 RR 命令

  • 增强 #2016 由于被调用方法[http SubController]的返回值,可能取消引用空指针

  • 增强 #2008 支持 GO SDK Http 协议取消订阅

  • 增强 #2004 添加工作流创建命令

  • 增强 #2002 解决项目编译错误

  • 增强 #1999 完善 rabbitmq 连接器单元测试

  • 增强 #1993 依赖默认编码[WebhookFileListener]

  • 增强 #1983 提取 GO SDK 协议常量

  • 增强 #1934 升级工作流 go.mod

  • 增强#1933 优化工作流-dal 逻辑

  • 增强 #1932 优化工作流任务逻辑

  • 增强#1931 优化工作流-jq 逻辑

  • 增强 #1929 优化工作流目录逻辑

  • 增强 #1928 升级工作流原型

  • 增强 #1927 添加工作流示例演示

  • 增强 #1822 支持 Go SDK producer 消息随机序列

  • 增强 #1743 支持 Go SDK HTTP 客户端负载平衡

  • 增强 #1682 Java SDK 添加 http 连接池

  • 增强 #1670 添加工作流 mysql 架构文件

  • 增强 #1648 修改工作流调度程序配置

  • 增强 #1636 提高 connector-pulsar 中发布事件的性能

  • 增强 #1628 SSLContextFactory 一些配置应该在EventMeshHTTPConfiguration 中配置



漏洞防范和修复


  • 错误 #2163 此方法不必要地使用字符串文字作为字符集编码[SendSyncMessageProcessor]

  • 错误 #2148 Webhook 测试发生在 NPE 上

  • 错误 #1818 修复 SSLContextFactory 中的 IOException

  • 错误 #1656 CloudEvent 的扩展字段不存在。

  • 错误 #1654 当 broadcastEventListener 消费消息时发生 NullPointerException

  • 错误 #1627 ConsumerGroup 订阅了多个主题,只有第一个主题可以调用 url

  • 错误 #1367 无法找到 webhook 协议适配器

  • 错误 #1350 修复 WebHookProcessorTest 测试错误

  • 错误 #1347 取消订阅时 Pravega 连接器编写器不会关闭

  • 错误 #1279 gradle.properties 在 eventmesh-connector-pulsar 下不正确

  • 错误 #1238 无法启动脉冲星连接器

  • 错误 #1208 使用 zipkin hippen NullPointerException

  • 错误 #1021 当 eventMeshServerTraceEnable 为 false 时 Span 为 null

  • 错误 #1022 Tcp 协议解析器的两个 NPE 问题

  • 错误 #1035 Tcp UpStreamMsgContext 重试无限循环

  • 错误 #1036 由 tcp closeSession 的逻辑顺序引起的错误

  • 错误 #1038 validate target url 方法的结果在 http 协议中是相反的

  • 错误 #1052 只有同一消费者组的第一个实例才能接收到 http 协议中的消息

  • 错误 #1056 修复 StringIndexOutOfBoundsException

  • 错误 #1059 Http 请求的 NullPointException

  • 错误 #1064 ClientManageControllerTest 的 NullPointException

  • 错误 #1074 修复 PrometheusConfigurationTest 运行测试失败


文档和代码风格改进


  • 文档 #2074 更新 Pravega 连接器文档

  • 文档 #2066 优化 http-demo zh 文档

  • 文档 #1520 更新 eventmesh 关键字。

  • 文档 #1500 修复自述文件。

  • 文档 #1496 03-demo.md 中的错误词

  • 文档 #1368 Knative 连接器:将文档移动到设计目录

  • 文档 #1271 文档翻译[webhook.md]

  • 文档 #1246 Pravega 连接器文档

  • 文档 #1213 支持 Knative 作为 Eventing Infra:文档(发布/订阅)


Learn more:https://eventmesh.incubator.apache.org/


EventMesh发布由腾讯贡献的CNCF Serverless Workflow Engine实现的评论 (共 条)

分享到微博请遵守国家法律