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-eventmesh Gitee repo:https://gitee.com/WeBank/EventMesh Website:https://eventmesh.incubator.apache.org/ WeChat ID:EventMesh 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 命名空间选择器
- 功能 #1092Java 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/
还没有评论,来说两句吧...