声明式自愈系统——高可用分布式系统的设计之道-王昕有一个统一的状 态持久化接口, 所有有状态模块 通过统一的接口 对应统一的对象 模型 配置模块对象只 需要包括 Desired State 每个领域的控 制器模块的逻 辑保证自己领 域独立自愈的 能力 改变状态的操作 必须是幂等的声 明式操作,没有 新声明时各模块 按照之前的声明 继续工作 控制器模块对象 包括Desired State 和 Realized State 尽量避免复杂状态机,逻辑不要依赖无法监控的内部状 态 每个模块都可以在必要时优雅地降级服务 每个模块都可以在出错后自动恢复 假设任何命令都可能被任何调用对象拒绝,甚至返回错 误结果 声明式自愈系统的现有框架——Kubernetes 声明式自愈系统设计理念的回顾 统一接口 和对象模 型 自愈 能力 幂等操 作和状 态机 DS 和 RS Desired State 可重用部分 已完全实现 要在领域内 所有API应该是声明式的 Ø 高层API以操作意图为基础设计 Ø 低层 API 根据高层 API 的控制需要设计 Ø API 对象是彼此互补而且可组合的 Ø 尽量避免简单封装,不要有隐藏的内部 API Ø API 操作复杂度与对象数量成正比 Ø API 对象状态不依赖于连接状态 Ø 针对全局状态设计自愈容错机制 最佳实践分享 有关系统设计和运营 Ø 分开设计理想状态和实际状态 Desired0 码力 | 44 页 | 2.47 MB | 1 年前3
领域驱动设计&中台/化繁为简--DDD驱动复杂业务软件架构的演进业务挑战及架构目标 架构演进 总结展望 架构演进 1 2 3 领域拆分 架构分层 构建领域模型 业务分析 2 1 3 4 分析业务流程 提炼业务规则 分析业务用例 识别业务对象 子域拆分 • 业务流程 • 专业知识 建模子域 计算子域 登录与 授权子域 报表子域 指标子域 做法子域 限界上下文拆分 • 业务用例 • 功能\语义相关性 • 技术应用 • 理解业务需求 截面钢筋模型 按照行业钢筋平法规则,基于构件剖面描述钢筋布筋的模型 基于业务用例识别业务对象 • 截面多边形 • 箍筋 • 纵筋 • 弯钩 • 端头 基于业务对象的钢筋模型 • 不同构件归纳抽象 • 分析业务对象及其关系 • 识别聚合、实体、值对象 柱截面钢筋模型 压顶截面钢筋模型 人防截面钢筋模型 截面钢筋 截面多边形 点筋 截面钢筋 规格 端头 端头 弯钩 规格 线筋 位置 位置 标高 标注 …... 重新定义边界后的截面钢筋模型 • 检视模型中聚合、实体、值对象的关系 • 检视模型边界 柱截面钢筋模型 压顶截面钢筋模型 人防截面钢筋模型 截面钢筋 截面多边形 点筋 截面钢筋 规格 端头 弯钩 规格 线筋 位置 位置 标高 标注 …... 提炼规则后的钢筋模型 • 显式业务规则:保护层厚度=截面边线到钢筋的距离0 码力 | 33 页 | 1.25 MB | 1 年前3
领域驱动设计&中台/如何让DDD落地锁定商品库存服务收到命令后,会把根据命令中的商品ID从商品库存仓库中获取商 品库存,然后根据让商品库存锁定订单数量量,之后调⽤用商品库存仓库进⾏行行保存,最后 让事件发布器器发布商品库存已锁定事件 ……. 领域故事中的主要对象 领域对象 类型 命名 订单API控制器器 Adapter OrderController 创建订单命令 Command CreateOrderCommand 创建订单应⽤用 ApplicationService DomainService LockStockService 商品库存仓库 Repository StockRepository 商品库存已锁定事件 Event StockLocked 领域模型 如何区分实体和值对象 ��� �� VS Ø ������ Ø ����� Ø ��Id����� Ø ����/��� Ø �� Ø ��Order/Car Ø ������ Ø ����� Ø 应⽤用服务(很薄,没有业务逻辑) 领域聚合A 领域聚合B 领域聚合C 领域服务 领域服务 领域服务 X 领域服务之间最好不不要相互直接调⽤用 使⽤用什什么架构 六边形架构为什什么是六条边 领域故事中的对象怎么对应到架构上 命名 OrderController CreateOrderCommand CreateOrderApplication QueryStockService Stock0 码力 | 32 页 | 3.25 MB | 1 年前3
领域驱动设计&中台/架构分层模型适配诉求: 稳定调⽤用外部系统 技术点: 使⽤用和适配外部系统模型,隔离和快速诊断错误 ⼯工作内容: • 学习和使⽤用外部系统,如数据库,邮件系统 • 适配外部系统模型,如SQL映射到模型对象 技术⼈人员关注的层 基础设施 腐化案例例: 业务逻辑和外部调⽤用逻辑混合 如⼀一个⽅方法⾥里里即处理理业务逻辑⼜又调⽤用SQL 模型内容: • PO • 第三⽅方Protobuffer 基础设施 名词翻译映射 资源模型: ⽤用户想要⼀一把查询获取所有信息,⼀一个操作做完业务 业务模型: 分解的业务概念 存储模型: 性能最优化 HTTP字符⽂文本 Json 视图对象 ⼀一个⽤用户请求⼀一个视图对象 多个固定的业务概念表达业务规则 SQL: ⽆无冗余字段设计, 主外键关联 NoSQL: 冗余字段设计,⽆无Schema宽列列 DDD分层架构治理理 前端应⽤用 API服务0 码力 | 39 页 | 2.54 MB | 1 年前3
大规模分布式系统架构下调测能力构建之道34 … … key 头部指针 尾部指针 key Tom Mike … … key score1 data1 score2 data2 … … 其它分布式服务的调测支持 对象存储 1.分布式环境下,为不同开发团队/人员配置独立的文件路径(Direction、Bucket)可以有效进行资源隔离。 2.单机环境下,可以参考MQ,采用本地File I/O实现的存储机制来mock 逻辑上支持“租户”隔离模式的分布式服务一般对多团队并行开发/调测的支持较好,分布式环境下,一般不会成为工程效率提升 的瓶颈。针对这类服务,不用急于构建其Mock服务,可以根据其特性,寻找成本较低的实现途径。 分布式文件/对象存储 Tom/assets/product/… John/assets/product/… Mike/assets/product/… DB/RDS schema1 schema2 schema3 IDE 测试用例管理 执行管理 Mock数据管理 预置数据管理 E2E script WebDriver Mock 数据 单元测试用例 预置 数据 日志 测试 结果 测试套件 对象/文件 DFS/OSS 生产路径配置 测试路径配置 网络 模拟 故障 模拟 调测方法论 个人开发环境 Mock+直连调测+线上服务 集成测试环境 Mock+线上服务 图例 项目初始0 码力 | 19 页 | 2.74 MB | 1 年前3
高性能高可用机票实时搜索系统• 空间换时间 • 缩短对象驻留留内存时间,减少gc次数,优化单机吞吐 • 数据交换采⽤用protobuf + gzip处理理 • jit、预热 回顾 • ⽔水平分层,纵向分渠道,良好的扩展性 • 实时计算 + 阶梯式缓存,成本与报价新鲜度的权衡 • 闭环系统 • 索引库数据同步 • 本地缓存的设计,更更新策略略 • 缩减对象内存 • ⼀一致性哈希负载均衡0 码力 | 26 页 | 1.94 MB | 1 年前3
领域驱动设计&中台/用状态机封装领域逻辑状态 网络上随便搜来 的“状态机图” 状态 子状态 互斥 状态 分层复用行为 提炼公共迁移 状态 缺省和历史 不是“流程开始”的意思 进入状态时,缺省的子状态 对象掉入集合时,缺省掉入哪 个子集合 历史:记住离开时的子状态 状态 并发状态 不同分区的状态并存 从不同维度 分割属性值组合 高富帅 矮穷丑 高穷丑 矮富帅 测试0 码力 | 30 页 | 1.75 MB | 1 年前3
全球架构师峰会深圳2015/研发体系构建_龚银_中型创业公司的技术管理之痛永远不要忽视沟通的作用和力量 沟通的力量 观念和思维的碰撞,不同文化不同背景快速聚集带来的必然摩擦 不就是这里改一下么,不就是流程调整一下么? 沟通、沟通、沟通、无他 不同的对象,沟通方式不一样,灵活处理,使用不同的技巧 沟通只是第一步,形成固定机制,落实并执行才最重要 Motivation 正确的激励导向,使团队快乐 需要的素质和「心得」 需要的素质0 码力 | 36 页 | 2.49 MB | 1 年前3
领域驱动设计&中台/演进式架构的平台化落地D U D U D U D U D U D U D U D U D U D U D 系统 31 •服务定义 •服务间及与外部 系统依赖关系 •DDD对象模型 服务地图 32 API管理理 •API定义 •服务与API关系 •多版本API管理理(API演进) 33 ⽣生成服务代码 •多框架⽀支持 •多架构⻛风格⽀支持(分层、DDD、0 码力 | 42 页 | 2.95 MB | 1 年前3
降级预案在同程艺龙的工程实践-王俊翔多种策略略⽅方案:失效备援、服务熔断、资源隔 离、延迟处理理 • 策略略灵活调整,实时监控策略略运⾏行行状态 应⽤用 / 服务 降级代码管理理 • 线上代码开发、测试、发布 • 降级代码统⼀一管理理 • 脚本代码动态编译,对象管理理 业务保障平台应 SDK 线下开发 策略略配置 测试 发布 WEB IDE 线上开发 降级⽅方法使⽤用 Git 降级代码 线下代码管理理 脚本 降级服务如何⾃自动探测恢复0 码力 | 26 页 | 18.67 MB | 1 年前3
共 10 条
- 1













