领域驱动设计&中台/用状态机封装领域逻辑用状态机封装领域逻辑 潘加宇 CONTENTS 01 状态机的作用 02 状态机要点和建模思路 03 状态机的实现 危险! 小孩耍大枪 危险! 新瓶装旧酒 Research?Re-Search? 连Re-Search都没有,随意发明新词 Subdomain?主题图。 测试 答对问题有奖金 金额从2.56元到20.48元 请扫我微信以便当场转账 加微信时烦告知尊姓大名 学校里经常教的 编译原理 电子设计自动化 通信协议 …… 作用 三个不同的图 图形 视角 映射到实现 类图 全局、静态 类的签名 序列图 局部(用例)、动态 类之间的协作 状态机图 类、动态 所有的逻辑 测试 答对问题有奖金 金额从2.56元到20.48元 请扫我微信以便当场转账 加微信时烦告知尊姓大名 作用 逻辑内移 都以为自己在做正常的事情, 系统却出问题了 减少get/set 接口变简单 要素 状态 行为由组合决定 复杂就在这里! 状态--表现相同行为的属性值和链接的组合 状态 状态机图 vs. 活动图 顶点和边的含义相反 不同的思考范型 “状态的类”要说得通! 状态 网络上随便搜来 的“状态机图” 状态 子状态 互斥 状态 分层复用行为 提炼公共迁移 状态 缺省和历史 不是“流程开始”的意思 进入状态时,缺省的子状态0 码力 | 30 页 | 1.75 MB | 1 年前3
声明式自愈系统——高可用分布式系统的设计之道-王昕Realized State之间的差 距,维持最终一致性 Ø 定期处理集群中的事件 Ø 系统必须是幂等的 控制器的设计理念 控制逻辑应该只依赖于当前状态 假设任何错误的可能,并做容错处理 尽量避免复杂状态机,逻辑不要依赖无法监控的内部状 态 每个模块都可以在必要时优雅地降级服务 每个模块都可以在出错后自动恢复 假设任何命令都可能被任何调用对象拒绝,甚至返回错 误结果 声明式自愈系统的现有框架——Kubernetes 声明式自愈系统设计理念的回顾 统一接口 和对象模 型 自愈 能力 幂等操 作和状 态机 DS 和 RS Desired State 可重用部分 已完全实现 要在领域内 自己实现 如何设计好状态机和自愈协议? Writing Correct Software Is Hard! Math and Thinking Can Help Us! Ø TLA+ 是用来给(软件或硬件)系统建模的语言 Leslie Lamport TLA+试图用状态机而不是计算过程描述系统 更加关注系统的非正常输入 更加关注系统的稳定性可用性等特性而不是系统输出 分布式系统环境下没有单一的输入输出 TLA+是一种适合定义状态机的语言 定义一个状态机需要: 1. 定义所有可能的初始状态 2. 定义在特定状态下可能有哪些状态转换 一个程序可以用状态机描述 定义一个状态机需要: 1. 定义变量 2. 定义所有可能的初始状态0 码力 | 44 页 | 2.47 MB | 1 年前3
高可用分布式流数据存储设计-李玥consensus algorithm” Raft⼀一致性算法 2014 线性 任⼀一时刻⾄至多只有⼀一个请求在执⾏行行 幂等 使⽤用相同参数重复执⾏行行,能获得相同结果 复制状态机 Replication 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 lastApplied lastApplied commitIndex 顺序⼀一致 已提交位置之前的⽇日志具有不不变性。 对于提交的⽇日志,相同位置上Follower的⽇日志和Leader上是⼀一样的。 强⼀一致 如果两个节点上的⽇日志完全相同,并且这些⽇日志都已经被状态机执 ⾏行行,那么这两个节点的状态是相同的。 集群节点数越多性能越好吗? NO 引⼊入Observers 并⾏行行复制-CAS Atomic Hardware Primitives: faa0 码力 | 36 页 | 6.02 MB | 1 年前3
付钱拉金融云系统架构演进和最佳实践三方已受理 部分成功 (批量交易) 订单失败 (网关交易) 接入网关 交易检查 服务路由 批量任务 通道适配 响应处理 交易检查成功 定时器触发批付打包 UI触发批付打包 有限状态机 FINITE STATE MACHINE BEST PRACTICE BEST PRACTICE - HOW TO FIND THE PROBLEM EARLIER THAN THE USER0 码力 | 35 页 | 6.05 MB | 1 年前3
共 4 条
- 1













