您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[极客帮]:弹性可伸缩海量工作流引擎建设实践 - 发现报告

弹性可伸缩海量工作流引擎建设实践

信息技术2024-10-08叶彬极客帮s***
AI智能总结
查看更多
弹性可伸缩海量工作流引擎建设实践

腾讯架构师/叶彬 目录 •背景•工作流引擎技术选型•高可用架构落地实践•落地场景与取得效果•下一步计划与思考 一、背景 什么是工作流 即工作流程的计算模型,为完成一个业务目标,所需要经历的一系列步骤,通常用流程图来表示(业界通常用BPMN流程图来描述一个工作流) 示例:服务器硬件故障自动诊断流程,日志下载→规则库加载→策略匹配 非工作流模式下系统实现 非工作流模式下,原始需求:日志下载→规则库加载→规则匹配 为什么需要工作流 使用工作流模式的任务协作-分离任务实现和任务协作关系 使用工作流模式,各任务只实现自身原子逻辑,协同关系使用流程图表示 为什么需要工作流 当新的逻辑需要复用已有任务节点时,只需调整流程图,无需修改已有代码 什么是工作流引擎 将任务实现与任务协作关系分离之后,就诞生了专门维护任务协作关系的程序-工作流引擎 所有涉及业务流转按流程完成的场景都可通过工作流引擎作为支撑 工作流引擎与微服务编排 微服务架构的核心是把复杂的业务系统拆分成高内聚的微服务,每个服务负责相对独立的逻辑。要实现业务价值,不是看单个服务的能力,而是要协调所有服务保证端到端业务流的成功 微服务编排是指将多个微服务组合成一个完整的业务流程或服务的过程,该模式下会有一个中控引擎: 工作流引擎很适合作为中控引擎,来编排调度微服务 腾讯服务器运营历程 二、工作流引擎技术选型 服务器运营领域场景需求 提到“流程引擎”,联想到的都是缓慢、低吞吐的使用场景,比如人工审批任务等,但服务器运营领域的大部分是程序化自动任务,吞吐高,任务流转快,传统流程引擎无法适应 工作流引擎调研 主流工作流引擎产品对比发现,zeebe支持高吞吐、低延时和横向扩容,能较好地适应微服务架构场景。它不依赖外部组件、设计之初就考虑了超大规模的微服务编排问题 zeebe工作流引擎顶层设计 zeebe架构主要包含4大组件:client, gateway, brokers以及exporters zeebe工作流核心特性 三、高可用架构落地实践 01基于单集群的工作流服务体系建设 组建高性能流程引擎集群 如何将开源组件落地到生产环境?--关键:量化理解组件能力 低延时查询接口、所见即所得的数据模型 问题:zeebe采用全新的事件模型(CQRS),不提供查询API 扩展基本能力、封装工作流服务 结合业务使用场景,扩展新特性(基于实例的父子关系、基于jobworker的拦截器等),建设工作流服务体系 高可用 ◼对等网络集群,无单点瓶颈◼数据副本机制,分区失败自主选主恢复 易用 ◼pub-sub模型,天然适合微服务编排◼流量控制台,全方位可视化跟踪流程 工作流服务体系快速接入 02从单集群演进到多集群,架构弹性可伸缩 多集群架构演进背景 版本升级面临问题 1、大版本未向下兼容:zeebe引擎1.x版本未向下兼容0.x版本,非简单原地升级版本 问题 1、数据存储如何兼容数据格式变化2、与zeebe引擎的交互协议如何兼容新旧 2、原生zeebeclient限制:不同业务微服务通过sdk仅能连接一个工作流引擎集群 问题 1、不同微服务不可能同一时间点升级完毕2、无法保证每个微服务在升级新版本的时候,老版本中的实例全部已结束了 解决思路 核心原则:升级过程中,需保证“老集群中存量运行中的实例”能正常走完余下流程,同时不影响新创建实例 推导 多集群实现难点 多集群架构重点问题攻克1-业务解耦zeebe集群 在业务与zeebe集群之间引入proxy,代理client与zeebe的job交互行为 job拉取→行为简单且高频→保持grpc不变 job操作→行为复杂,相对低频→改用http 多集群架构重点问题攻克2-流量精准路由 建设poll service,遍历后端所有集群应对activateJob请求 ID冲突 实例id、任务id是唯一标识一个任务或者实例的key,由zeebe引擎自增生成,多集群情况下,存在ID冲突 ID冲突问题解决 修改zeebe原生ID编码规则,新增clusterID解析逻辑 在api服务中,解析请求体中的实例/任务id获取集群id,对该请求精确转发至对应的集群 流量路由前后对比 多集群弹性可伸缩架构落地 03秒级自动容灾,提升整体高可用 全链路异地容灾 如果工作流服务体系没有完善的全链路容灾机制,海量服务器运营在故障时很可能会进入灾难性的死循环 双热集群秒级自愈,工作流服务实现业务零感知高可用 双热集群部署模式,集群故障时,秒级自动切换,业务零感知 四、落地场景与取得效果 峰值10W+QPS,支撑服务器数亿级自动化作业 腾讯内部集群规模最大的工作流服务,应用于海量服务器数亿级自动化作业场景 毫秒级任务调度,满足业务SLA 多层级流程实例嵌套,流程灵活可复用 服务器运营流程存在多层嵌套金字塔关系,对于这类多层嵌套的复杂流程,流程引擎建设基于实例维度的父子关系,提供了无层级上限限制的多层嵌套流程调度能力 全链路可视化控制台,提升开发运维效率 在服务器运营流程中,因硬件、机房环境等问题会导致流程无法自动完成,需要人工介入处理,为支持流程中的人工干预,提供服务器全链路可视化控制台,提供流程运营操作,方便运维人员随时处理,大大提升了运维效率 首创多集群架构,弹性可伸缩 弹性扩缩容完美支持,目前服务已容器化,一键部署,秒级生效,快速响应容灾、扩容等场景 五、下一步计划与思考 多集群管理,提升集群利用率 运行中实例跨子集群断点续跑能力建设,支持长尾流程集群迁移 工作流与LLM 期待与大家一起探讨交流