
编排框架conductor
文章平均质量分 84
以conductor使用落地为核心做的一系列研究,包括部署内容、源码分析等内容
YZDHY
这个作者很懒,什么都没留下…
展开
-
conductor数据可靠性分析——redis异常时的服务功能可用性梳理
如果redis异常,conductor是什么表现?对应的redis key为: conductor_zlcft.test.WORKFLOW_DEF_NAMES conductor_zlcft.test.WORKFLOW_DEF.coreSatelliteOpen。其对应的配置类为:com.netflix.conductor.contribs.listener.archive.ArchivingWorkflowListenerConfiguration。原创 2023-05-25 20:49:55 · 482 阅读 · 0 评论 -
orkes-conductor源码分析
个人认为,这是对conductor能力的增强,能在编排场景解决一些对执行耗时有一定要求的场景,但不不应作为主要场景使用,server端调用、递归执行,都会增加server端的负载。该版本在conductor进行了二次开发,目前验证发现其http task的执行非常高效,从这个角度发出分析下其实现原理(原生的http task的实现可参考。orkes-conductor 的http-task的执行相比于原生conductor高效的原因是。)是接收一个http请求开始的,会同步调用到。该方法是任务调度的核心,原创 2023-05-25 20:10:55 · 329 阅读 · 0 评论 -
conductor server端源码解析(5)-注册、启动一个流程
该方法会判断workflow的input和output数据大小是否需要外部存储(5M~10M),将数据存入都外部存储中 com.netflix.conductor.core.utils.ExternalPayloadStorageUtils#uploadHelper。所有的系统任务管理在 com.netflix.conductor.core.execution.tasks.SystemTaskRegistry。3.调度任务,执行系统任务,将异步执行的系统任务和用户自定义任务push到队列中。原创 2023-05-25 19:54:31 · 401 阅读 · 0 评论 -
conductor server端源码解析(4)-任务的调度
conductor调度的核心是decider service,其根据当前流程运行的状态,解析出将要执行的任务列表,将任务入队交给worker执行。原创 2023-05-23 21:32:31 · 289 阅读 · 0 评论 -
conductor server端源码解析(3)-systemTask
具体的执行过程见 com.netflix.conductor.core.execution.tasks.SystemTaskWorker#pollAndExecute。其中具体的任务执行为:com.netflix.conductor.core.execution.tasks.WorkflowSystemTask#start。所有的系统任务实现注册于 com.netflix.conductor.core.execution.tasks.SystemTaskRegistry。原创 2023-05-23 21:28:55 · 333 阅读 · 0 评论 -
conductor server端源码解析(2)-更新任务信息(mysql实现)
查询流程信息: com.netflix.conductor.dao.ExecutionDAO#getWorkflow(java.lang.String, boolean)若状态为“TIMED_OUT”,则删除queue中的信息: com.netflix.conductor.dao.QueueDAO#remove。若状态为“SCHEDULED”,则推迟队列中的消息:com.netflix.conductor.dao.QueueDAO#postpone。若流程为“终止”状态,则删除队列中的信息,方法直接返回。原创 2023-05-23 21:19:14 · 216 阅读 · 1 评论 -
conductor server端源码解析(1)-查询待执行任务(mysql实现)
调用接口 com.netflix.conductor.rest.controllers.TaskResource#poll。若队列中暂无对应的任务,或者查到的数据少于待请求的数据,则循环等待:(此处timeout默认100ms)4.将task表中的任务状态更新为 “IN_PROGRESS”以及其它参数回写到库中(更新任务数据)1.若task对象不存在或者状态为“终止”态,则删除队列中该任务信息,处理完成,否则进入下一步。该方法做两件事情:1.从库中查询对应的任务信息 2.更新任务状态。原创 2023-05-23 21:13:09 · 313 阅读 · 1 评论 -
conductor client端源码解析(批量拉取)
代码: com.netflix.conductor.client.automator.TaskRunnerConfigurer#TaskRunnerConfigurer。** 在任务积压时,一次pull的任务数量越多,理论上在pull上的平均耗时就越少,消费能力越强,但是,若设置太大,会影响低负载时的耗时;我们走的实现为:com.netflix.dyno.queues.redis.RedisDynoQueue#pop。pull任务时的耗时,批次越大,每次拉取任务的平均耗时就越低,此在梳理下其相关逻辑。原创 2023-05-23 21:05:24 · 275 阅读 · 0 评论 -
conductor client端源码解析
自定义worker时会继承 com.netflix.conductor.client.worker.Worker该接口中定义了默认值 1000 ,即,若不指定拉取每秒拉取一次任务。原创 2023-05-23 20:36:37 · 265 阅读 · 1 评论 -
conductor部署
conductor部署的一些关键点原创 2023-05-22 21:20:39 · 600 阅读 · 1 评论 -
condutor架构
conductor框架的架构原创 2023-05-22 20:59:02 · 474 阅读 · 1 评论