状态机fsm_技术干货 | 服务编排基础—状态机

本文介绍了服务编排中的核心组件——状态机(FSM),包括有限状态机和分层有限状态机的概念,强调了它们在游戏和AI领域的应用。状态机由状态、事件、转换和动作构成,通过事件驱动实现状态转换。当状态机复杂度增加时,采用HFSM进行归类和隔离,降低维护难度。在服务编排中,状态机负责更新工作流状态、调度任务和处理异常补偿机制,扮演中枢内核角色。
摘要由CSDN通过智能技术生成

服务编排里有个核心的服务,就是状态机(State Machine)服务,也称为决策(Decider)服务,用Netflix Conductor服务编排的架构作为参考,我们可以看看状态机所在的位置,下图用红框框着的就是状态机服务。

 

365f416410cb9d77626c6390c136c45b.png

4eaae5d026636c9917c7aa56efe29beb.gif 什么是状态机呢?

状态机一般分为有限状态机FSM(Finite State Machine)、分层有限状态机HFSM(Hierarchical Finite State Machine),包含状态(State)、事件(Event)、转换(Transition)、动作(Action)几个关键元素,它们之间相互关联和协同,在游戏或AI领域用得比较普遍。

玩过游戏的人肯定不陌生,特别是RPG,当你用鼠标或键盘上下左右指挥游戏角色行走或奔跑时就是一种状态,当遇到敌人时就进入了战斗模式,这又是另种状态,而从一种状态进入另一种状态是需要事件触发的,也就是事件驱动,当你中途退出后又重新进入游戏,这时需要补偿机制,也就是把之前游戏中的场景恢复回来。

FSM需要记住各种状态,通过事件的触发(有条件),完成状态之间的转换。

c6e29af4252344da58af368e60ceb3e9.png

当状态太多的时候,FSM会变得不容易维护,这时候就需要进行归类,抽离相同或相似的状态组成同类型的状态机,再用一个大的状态机来维护这些不同类型的状态机,这样就有了HFSM,同类型状态机只关心内部的状态转换,并不需要关心外部状态的跳转,这样就做到了无关状态的隔离,而外部的状态机只需要关注几个同类型状态机的跳转,如果状态还比较多,可以再次提取进行多层归类,这样一来大大降低了状态机的复杂度。

29b25386c294da37e9a154788f547148.png

4eaae5d026636c9917c7aa56efe29beb.gif 状态机在服务编排中能干什么用呢?

简单的说在服务编排中就是做更新和调度的事情,更新工作流状态,确定下一个状态,结合分布式队列服务调度合适的任务,当然也可以处理失败、错误、异常补偿机制。可见状态机服务在服务编排中的重要作用,其实就是一个中枢内核。

9bcdafe242a55b1dfec3421ba8621076.png

如果只是体验,觉得Netflix Conductor还太复杂,网上也有多种实现思路,用Camel结合activeMQ也是不错的简单组合,当然也要求你的动手能力够强,类似于品牌机和组装机的选择。

425d473e731f2276ea1a9ea68d70d71d.png 往期 精彩回顾    技术干货 | 服务编排前传—缘起技术干货 | IAM产品选型三步曲技术干货 | 大数据平台的多租户管理技术干货 | 浅谈DevOps实践技术干货 | 如何做Hadoop集群存储规划—HDFS篇 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值