领域驱动设计&中台/用状态机封装领域逻辑## 用状态机封装领域逻辑 潘加宇 DDCHINA CONTENTS 01 状态机的作用 02 状态机要点和建模思路 03 状态机的实现 ## 危险! 小孩耍大枪 ## 危险! ➢ Research? Re-Search? ➢ 连Re-Search都没有,随意发明新词 ➢ Subdomain? 主题图。 SECOND EDITION OBJECT-ORIENTED ANALYSIS 5/p6_1.jpg) 学校里经常教的 ## 作用 |图形|视角|映射到实现| |---|---|---| |类图|全局、静态|类的签名| |序列图|局部(用例)、动态|类之间的协作| |状态机图|类、动态|所有的逻辑| ## 三 个不同的图 ## 0 答对问题有奖金 金额从2.56元到20.48元 请扫我微信以便当场转账 加微信时烦告知尊姓大名 ## 作用 ➢都以为自己在做正常的事情, 3ba5b5e2972a003b18b72e3aef1d5/p12_2.jpg) 行为由组合决定 复杂就在这里! 状态——表现相同行为的属性值和链接的组合 ## 状态 形容词 s1 状态机图 活动图 —E1 / action1(); 动词 动词 对各个视图进行详细的讨论。它们分别从静态建模机制、动态建模机制、模型管理机制以及扩展机制对 UML 进行探讨。 UML 标准元素讨论了一 WALK THROUGH).....5 UML 视图.....5 静态视图.....6 用例视图.....7 交互视图.....8 顺序图.....8 协作图.....9 状态机视图.....10 活动视图.....11 物理视图.....12 模型管理视图.....15 扩展结构.....16 视图间的联系.....17 静态视图(STATIC VIEW) ....32 用例视图(USE CASE VIEW).....33 概述.....33 活动者.....33 用例.....34 状态机视图(STATE MACHINE VIEW).....37 概述.....37 状态机.....37 事件.....37 状态.....39 迁移.....39 复合状态.....42 活动视图(ACTIVITY0 码力 | 123 页 | 2.61 MB | 2 年前3
Idris 语言文档 Version 1.3.1然而在现实中,软件依赖于状态,很多组件则依赖于状态机。它们可以描述像 TCP 这样的网络传输协议,实现事件驱动的系统以及正则表达式的匹配。此外,像网络 Socket 和文件这类的很多基础资源,都由状态机隐式地管理;特定操作只有在资源处于特定状态时才可行,而这些操作也可以改变底层资源的状态。例如,只有向已建立连接的网络 Socket 发送消息才有意义,关闭 Socket 会将其状态从“打开”切换为“关闭”。状态机同样可以编码重要的安全性质。比如,在一个 70)),引入了STrans数据类型来描述带有状态的函数,以及ST用来描述顶层的状态转移。接下来的章节(用类型表示状态机(e $ \hat{a} $ t 78))描述了如何用类型表示状态机,以及如何定义接口以描述带有状态的系统。之后(复合状态机(e $ \hat{a} $ t 85))描述了如何复合带有多个状态机的系统。它解释了如何实现同时使用多个状态机的系统,以及如何基于低级系统来实现高级的带有状态的系统。最后(示例:网络Socket编程(e 然而在实践中,使用像 IO 这样特定的上下文通常是种糟糕的做法。首先,它需要我们在代码中到处泼洒 lift,这会影响可读性。再者,也是更重要的一点,它会降低函数的安全性,我们会在下一节(用类型表示状态机(éat 78))中看到这一点。 所以我们改用定义接口的方式来限制计算上下文。例如,Control.ST 中定义了 ConsoleIO 接口,它为控制台的基本交互提供了必要的方法: interface0 码力 | 224 页 | 2.06 MB | 2 年前3
声明式自愈系统——高可用分布式系统的设计之道-王昕Action 控制器执行动作协调到Desired State 创建1个新的Pod ## 控制器的设计理念 控制逻辑应该只依赖于当前状态 假设任何错误的可能,并做容错处理 尽量避免复杂状态机,逻辑不要依赖无法监控的内部状态 每个模块都可以在必要时优雅地降级服务 每个模块都可以在出错后自动恢复 假设任何命令都可能被任何调用对象拒绝,甚至返回错误结果 ## 声明式自愈系统的现有框架——Kubernetes //·Policy· type·Policy metav1.Typ //·Spec·describes·the·po Spec·PolicySpec 幂等操作和状态机 要在领域内 自己实现 ## 自愈能力 ## 如何设计好状态机和自愈协议? ## Writing Correct Software Is Hard! Math and Thinking Can Help Us! ## 使用 TLA+ describing state machines. Leslie Lamport ## TLA+试图用状态机而不是计算过程描述系统 更加关注系统的非正常输入 更加关注系统的稳定性可用性等特性而不是系统输出 分布式系统环境下没有单一的输入输出 ## TLA+是一种适合定义状态机的语言 定义一个状态机需要: 1. 定义所有可能的初始状态 2. 定义在特定状态下可能有哪些状态转换 CONSTANTS0 码力 | 44 页 | 2.47 MB | 2 年前3
Raft在Curve存储中的工程实践速度取决于写的较快的大多数 ## RAFT协议简介 ## raft选举leader Leader:负责从客户端接受日志,把日志复制到其他服务器,当保证安全性的时候告诉其他服务器应用日志条目到他们的状态机中。 • Candidate: 发起选举。获取大多数选票的候选人将成为领导者。 - Follower: 响应来自其他服务器的请求,如果接受不到消息,就变成候选人并发起一次选举。 ## raft任期 RAFT协议简介 raft复制状态机 - 提供命令在多个节点之间有序复制和执行,当多个节点初始状态一致的时候,保证节点之间状态一致。 ## raft日志复制 1. leader收到客户端的请求。 2. leader把请求指令记录下来,写入日志,然后并行发给其他的服务器,让他们复制这条日志。 3. 当这条日志条目被安全的复制,leader会应用这条日志条目到它的状态机中。 4. 然后把执行的结果返回给客户端。 raft协议提出之后,涌现出了非常多的实现,比如etcd,braft,tikv等。 - braft是raft的一个实现,实现了raft的一致性协议和复制状态机,而且提供了一种通用的基础库。基于braft,可以基于自己的业务逻辑构建自己的分布式系统。 • braft本身不提供server功能,需要业务自己实现状态机。 ## braft 接口 ## Node(一个raft实例) int init(const NodeOptions&0 码力 | 29 页 | 2.20 MB | 1 年前3
PyConChina2022-深圳-Python赋能智慧物流-康昊AGV/AMR本体定位/控制技术  - 状态机 - 通讯模块 - 运动控制 - 任务执行 - 外设对接 AGV/AMR集群调度系统  ## 增强系统鲁棒性 — “高内聚,低耦合” — 准确的抛出异常,快速处理 - 引入状态机,在稳定状态中判断 — 判断数据的时效性 ## · 产品价值 40小时 运行时间 4124小时总运行时间 65.5公里当日里程 












