方舟DDD实践(下)

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 请扫码签到
2. 个人简介-李鑫 2014年加入去哪儿网机票目的地事业群,担任软件开发工程师,现负责国内酒店订单 交易技术团队,涉及订单交易、支付结算、订单履约、预售等相关系统架构优化和业 务迭代研发,对高并发、分布式服务高可用,有建设优化经验 课程内容- DDD思想如何应用指导订单交易 以方舟实战案例为起点,介绍DDD核心概念,如何战略战术设计和DDD报价模型、 DDD交易领域模型、方舟系统架构,事件驱动设计以及一致性解决方案等相关知识 总结分享 战略设计、战术设计、实施落地 三个核心阶段+DDD 代码实践 目的地业务研发/交易与供应链 回归面向对象的本质、重拾抽象思维的的价值、 专注业务复杂度分离、突破技术复杂性 实现领域驱动设计
3. 1、希望对一些典型案例、问题 或重要的点,提供更细节的实 战经验分享 2、希望能具体就某一个案例具 体说一下划分过程以及遇到的 困难或者问题之类的 3、希望能有更多的代码实现方 面的内容
4. CONTENTS 目录 分布式存储、 调度中心、流程编排 代码实践 DDD 方舟订单 方舟架构
5. 一致性方案 内 聚合 聚合内一致性处理方案 文档结构、聚合根、ACID 聚合间一致性处理方案 事件驱动、最终一致性 外
6. 聚合内强一致性 标准、原则        一致性原则 保持不变条件(基本) 一个事务只修改一个聚合 小聚合,避免大聚合 公开行为接口 聚合根到聚合根:通过ID关联; 聚合根到其内部的实体和值对象, 直接对象引用;
7.
8. 方舟聚合 内一致性 (脱敏代码示例) 文档结构
9. 订单用户接口层代码实践 ( 脱 敏 示 例 ) 功能简介  用户选购商品  生单支付、预定成功  代理商完成下单、成功或拒绝  或用户发起逆向取消退款流程 协议层
10. 订单应用层代码实践 (脱敏代码示例) 原则、标准  安全验证  轻量级  协调领域对象的操作  持久化处理  通过资源库获取聚合实例 应用层
11. 订单聚合根工厂实践 (脱敏代码示例) 要点  保护内部状态对于领域结构很重要, 使用getter&setter方会公开聚合的内 部会导致聚合处于不一致状态。  大型复杂业务系统,实体和聚合创建 过程很复杂,很难去通过简单构造器 方式来创建对象;  工厂模式决解了这个问题,当建立了 聚合根时,其他对象可以自动创建保 证聚合不变条件、封装复杂性 工厂-创建聚合根
12. 订单仓储层代码实践 (脱敏代码示例) 要点  持久化  聚合根保存  聚合根查询 仓储层
13. 支付领域服务代码实践 (脱敏代码示例) 原则、标准  领域中的服务表示一个无状态 的操作,它用于实现特定于某个 领域的任务。  当某个动作不适合放在聚合对 象上时,使用领域服务  以多个领域对象为输入,返回 一个值对象  妥协、非必要
14. 领域服务、应用服务、实体行为 原则
15. 聚合外最终一致性 原则、标准  一个事务只能更新一个聚合  保证最终一致性、领域事件  事件模型、重试、幂等  先保证聚合一致性、再发送事件 用户逆向流程
16. 方舟聚合外一致性 (脱敏代码示例) 监听 审核域 订单域 处理保存 处理保存 发送事件 发送事件 监听 支付域 处理保存
17. 04 DDD 方舟架 构 1、架构模式、四层架构、CQRS、六边形 2、通用分布式存储、事件驱动、流程编排
18. 严格分层架构,某层只能与直接位于其下方的层发生耦合 松散分层架构,则允许任意上方层与任意下方层发生耦合 依赖倒置原则DIP CommandQueryResponsibilitySegregation 核心思想是将命令和查询操作分离、数据源相互独立 领域模型、服务于查询功能的数据模型 考虑 事务、一致性问题 【分层架构】 【六边形】 内部:application层 domain层 外部:应用的驱动逻辑、基础设施、其 他应用 内部通过端口和外部系统通信,端口代 表了一定协议,暴露API 【CQRS】
19. 四层 松散架构
20. 通用分布式KV存储 最佳实践  方舟聚合内解决方案 文档存储、乐观锁版控、利用ACID、规避大事务、 处理聚合内强一致性  亮点 全文检索、事件驱动、可降低资源层开发成本、持久化 策略方案、物理隔离
21. 方舟架构-插件化 不稳定区间 插件动态 复用性 领域模型 稳定区间
22. 方舟架构-流程编 排 • 业务线实现自己的【能力】如扣减库存、生单动作、支 付分账、发送系统 • 支持EL表达式解析和求值 • 【角色(用户、商家、运营)】使用【能力】列表,履 约单的xml/json支持执行策略,如 order.status=submit,进入履约流程
23.
24. 请扫码填写问卷

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-16 19:03
浙ICP备14020137号-1 $Map of visitor$