 唯品会调度系统的前世今生缺乏分布式处理 无法合理利用机器资源 难以问题追踪 选型对比 Crontab Quartz Linux系统级的定时任务执行器 缺乏分布式运算和集中管理功能 无法做到高可用 TBSchedule Elatic-Job Java事实任务标准 关注点在定时任务而非数据, 缺少分布式并行调度的功能 阿里早期开源的分布式任务调度系 统,代码略陈旧 作业类型较单一,只能是获取/处理 数据一种模式 功能单一,只支持Java,不支持 Shell(PHP)和消息驱动的作业调度 对任务超时、任务执行情况、监控逻辑 支持粒度功能较单一或缺乏 没有容器化选型? 调度产品的定位 简易开发、简单维护 高可用、分片并发处理、资源调度动态平衡 支持Java、Shell以及本地模式(VIP还支持消息模式) 统一配置、统一监控、统一管理 VIP弹性调度系统 -- Saturn 开源地址: Github.com/vipshop/Saturn 内部系统集成 ZK 执行结点 Job A Job B 作业调度器 控制台UI 消息系统 控制、调度结果下发 作业控制 结点监听 作业调度 执行日志 监控日志 日志查询 消息订阅 告警信息 执行结果 统一认证 架构体系 部署模型(跨机房) IDC-A IDC-B 接入域-A 执行结点 作业实现 ZK saturn-zk-* saturn.vip.com 控制台集群0 码力 | 58 页 | 5.40 MB | 1 年前3 唯品会调度系统的前世今生缺乏分布式处理 无法合理利用机器资源 难以问题追踪 选型对比 Crontab Quartz Linux系统级的定时任务执行器 缺乏分布式运算和集中管理功能 无法做到高可用 TBSchedule Elatic-Job Java事实任务标准 关注点在定时任务而非数据, 缺少分布式并行调度的功能 阿里早期开源的分布式任务调度系 统,代码略陈旧 作业类型较单一,只能是获取/处理 数据一种模式 功能单一,只支持Java,不支持 Shell(PHP)和消息驱动的作业调度 对任务超时、任务执行情况、监控逻辑 支持粒度功能较单一或缺乏 没有容器化选型? 调度产品的定位 简易开发、简单维护 高可用、分片并发处理、资源调度动态平衡 支持Java、Shell以及本地模式(VIP还支持消息模式) 统一配置、统一监控、统一管理 VIP弹性调度系统 -- Saturn 开源地址: Github.com/vipshop/Saturn 内部系统集成 ZK 执行结点 Job A Job B 作业调度器 控制台UI 消息系统 控制、调度结果下发 作业控制 结点监听 作业调度 执行日志 监控日志 日志查询 消息订阅 告警信息 执行结果 统一认证 架构体系 部署模型(跨机房) IDC-A IDC-B 接入域-A 执行结点 作业实现 ZK saturn-zk-* saturn.vip.com 控制台集群0 码力 | 58 页 | 5.40 MB | 1 年前3
 微服务和Service Mesh 在多个行业落地实践均衡 参数 分流 拓扑 依赖 配置 中心 服务 监控 服务 告警 认证 鉴权 统计 概览 知识 库 APM (应用运行期监控) 运行时 拓扑 性能 监控 服务 筛选 调用 链 调用 栈 JVM 监控 数据库 监控 性能 告警 自定义 数据 服务 告警 监控 大屏 账户 审计 CICD (开发流程管理) 代 码 拓扑 依赖 配置 中心 服务 监控 服务 告警 认证 鉴权 统计 概览 知识 库 服务 告警 监控 大屏 账户 审计 注册,发现,调用都提供鉴权 认证鉴权 接口文档统一维护 文档与运行时一致 减少调用沟通成本 知识库 根据平台、租户、项目三个层次区分权限作用域 操作记录,审计日志,事件查询 账户审计 微服务框架负责服务之间的调用——企业级特性 (服务治理) 服务 目录 注册 发现 限流 熔断 降级 容错 路由 负载 均衡 参数 分流 拓扑 依赖 配置 中心 服务 监控 服务 告警 认证 鉴权 统计 概览 知识 库 服务 告警 监控 大屏 账户 审计 粒度更细:可指定服务版本,类,方法级别 配置灵活:可配置检测粒度为每M毫秒N个请求P%的错误率 指标多样:RT值,错误率,线程池参数0 码力 | 39 页 | 3.06 MB | 1 年前3 微服务和Service Mesh 在多个行业落地实践均衡 参数 分流 拓扑 依赖 配置 中心 服务 监控 服务 告警 认证 鉴权 统计 概览 知识 库 APM (应用运行期监控) 运行时 拓扑 性能 监控 服务 筛选 调用 链 调用 栈 JVM 监控 数据库 监控 性能 告警 自定义 数据 服务 告警 监控 大屏 账户 审计 CICD (开发流程管理) 代 码 拓扑 依赖 配置 中心 服务 监控 服务 告警 认证 鉴权 统计 概览 知识 库 服务 告警 监控 大屏 账户 审计 注册,发现,调用都提供鉴权 认证鉴权 接口文档统一维护 文档与运行时一致 减少调用沟通成本 知识库 根据平台、租户、项目三个层次区分权限作用域 操作记录,审计日志,事件查询 账户审计 微服务框架负责服务之间的调用——企业级特性 (服务治理) 服务 目录 注册 发现 限流 熔断 降级 容错 路由 负载 均衡 参数 分流 拓扑 依赖 配置 中心 服务 监控 服务 告警 认证 鉴权 统计 概览 知识 库 服务 告警 监控 大屏 账户 审计 粒度更细:可指定服务版本,类,方法级别 配置灵活:可配置检测粒度为每M毫秒N个请求P%的错误率 指标多样:RT值,错误率,线程池参数0 码力 | 39 页 | 3.06 MB | 1 年前3
 降级预案在同程艺龙的工程实践-王俊翔统⼀一资源⽹网关 搜索引擎 API⽹网关 ⼤大量量请求超时 缺乏熔断设计 交易易故障 第三⽅方⽀支付 ⽀支付中⼼心 ⽀支付回写 消息队列列 ⽀支付通知 交易易中台 ⽀支付时限任务 出票处理理 队列列故障 已⽀支付订单被取消 ⽀支付超时 订单取消 缺乏降级设计 稳定性之路路到底有多远 如何设计⾯面向容错的系统,如何提升系统的可⽤用性 强弱依赖 • 弱依赖 - 熔断限流,有损服务 Application Application Application SDK 熔断 降级 流控 隔离 实时策略略推送 数据采集 应⽤用管理理 策略略管理理 流控管理理 预案管理理 指标管理理 监控告警 数据⼤大盘 脚本开发 ETCD管理理 故障演练 业务保障管理理后台 应⽤用JVM进程 故障动态注⼊入 Attach 故障注⼊入 指标聚合查询 熔断降级计算(Flink) ⽇日志中⼼心 内存数据 磁盘数据 … ⽹网络数据 采集 Agen t ⽇日志中⼼心 KAFKA 数据处理理 通过本地⽇日志⽂文件,实时采集降级服务质量量数据 ⽇日志 ⽂文件 系统数据采集 容器器数据 CPU数据 内存数据 磁盘数据 … ⽹网络数据 采集 Agen t ⽇日志中⼼心 KAFKA 数据处理理 应⽤用数据采集 应⽤用数据 ⽅方法数据 执⾏行行结果 执⾏行行耗时 异常数据 …0 码力 | 26 页 | 18.67 MB | 1 年前3 降级预案在同程艺龙的工程实践-王俊翔统⼀一资源⽹网关 搜索引擎 API⽹网关 ⼤大量量请求超时 缺乏熔断设计 交易易故障 第三⽅方⽀支付 ⽀支付中⼼心 ⽀支付回写 消息队列列 ⽀支付通知 交易易中台 ⽀支付时限任务 出票处理理 队列列故障 已⽀支付订单被取消 ⽀支付超时 订单取消 缺乏降级设计 稳定性之路路到底有多远 如何设计⾯面向容错的系统,如何提升系统的可⽤用性 强弱依赖 • 弱依赖 - 熔断限流,有损服务 Application Application Application SDK 熔断 降级 流控 隔离 实时策略略推送 数据采集 应⽤用管理理 策略略管理理 流控管理理 预案管理理 指标管理理 监控告警 数据⼤大盘 脚本开发 ETCD管理理 故障演练 业务保障管理理后台 应⽤用JVM进程 故障动态注⼊入 Attach 故障注⼊入 指标聚合查询 熔断降级计算(Flink) ⽇日志中⼼心 内存数据 磁盘数据 … ⽹网络数据 采集 Agen t ⽇日志中⼼心 KAFKA 数据处理理 通过本地⽇日志⽂文件,实时采集降级服务质量量数据 ⽇日志 ⽂文件 系统数据采集 容器器数据 CPU数据 内存数据 磁盘数据 … ⽹网络数据 采集 Agen t ⽇日志中⼼心 KAFKA 数据处理理 应⽤用数据采集 应⽤用数据 ⽅方法数据 执⾏行行结果 执⾏行行耗时 异常数据 …0 码力 | 26 页 | 18.67 MB | 1 年前3
 海量用户推送后台系统架构实践-曾振波• IDC数据同步 • 异步RPC • ICE - 负载均衡,AMI,AMD,多线程 极光推送后台系统架构 02 并行化 • 横向扩展处理能力 • 数据分片存储 • 多节点+分片+多副本架构 • 数据读写动态路由 • 请求并行处理 • 模块级别并行 • 代码级别并行 极光推送后台系统架构 03 MQ Segment OnlineMsg OnlineMsg OnlineMsg OnlineMsg Data0-0 Data0-1 Data1-0 Data1-1 Data2-0 Data2-1 Mng0 Mng2 Mng3 缓存化 • 热点数据全部缓存 • 加快数据访问,减少请求处理时间 • 多级缓存 • 本地缓存 • Redis, Couchbase, LevelDB(PIKA), 定制化 极光推送后台系统架构 04 程序及系统优化 • 内存 • 静态分配 • 对外业务隔离,异地多机房部署,健康检查,业务快速部署及调度 • 通信安全 • SSL,私有加密协议 • 服务安全 • 安全校验,异常行为识别,过载保护,白名单/黑名单,服务降级 • 监控及告警 • 多维度监控,告警系统 极光推送后台系统架构 08 K8S部署业务 • 原有系统的运维工作繁杂,资源利用率低 • 弹性扩容 • 配置统一管理 • 内外集群隔离 • Pod包含多个容器 - 辅助容器,业务容器0 码力 | 23 页 | 1.26 MB | 1 年前3 海量用户推送后台系统架构实践-曾振波• IDC数据同步 • 异步RPC • ICE - 负载均衡,AMI,AMD,多线程 极光推送后台系统架构 02 并行化 • 横向扩展处理能力 • 数据分片存储 • 多节点+分片+多副本架构 • 数据读写动态路由 • 请求并行处理 • 模块级别并行 • 代码级别并行 极光推送后台系统架构 03 MQ Segment OnlineMsg OnlineMsg OnlineMsg OnlineMsg Data0-0 Data0-1 Data1-0 Data1-1 Data2-0 Data2-1 Mng0 Mng2 Mng3 缓存化 • 热点数据全部缓存 • 加快数据访问,减少请求处理时间 • 多级缓存 • 本地缓存 • Redis, Couchbase, LevelDB(PIKA), 定制化 极光推送后台系统架构 04 程序及系统优化 • 内存 • 静态分配 • 对外业务隔离,异地多机房部署,健康检查,业务快速部署及调度 • 通信安全 • SSL,私有加密协议 • 服务安全 • 安全校验,异常行为识别,过载保护,白名单/黑名单,服务降级 • 监控及告警 • 多维度监控,告警系统 极光推送后台系统架构 08 K8S部署业务 • 原有系统的运维工作繁杂,资源利用率低 • 弹性扩容 • 配置统一管理 • 内外集群隔离 • Pod包含多个容器 - 辅助容器,业务容器0 码力 | 23 页 | 1.26 MB | 1 年前3
 领域驱动设计&中台/可视化的遗留系统微服务改造代码图 组件图 已可视化 ⽤用户画像和旅程系统功能⽤用户可视化 ⽤用户画像 ⽤用户旅程 已可视化 突出⽤用户信息,诉求和价值体现 还原业务场景 可视化的划分遗留留系统 领域驱动设计、事件⻛风暴暴⼯工作坊、服务画布 好的设计 低耦合 如果做到了了服务之间的松耦 合,那么修改⼀一个服务就不不 需要修改另⼀一个服务。⼀一个 松耦合的服务应该尽可能少 地知道与之协作的那些服务 的信息。 的⾏行行为,最好只在⼀一 处修改。 领域驱动设计 ‣领域驱动设计是⼀一种处理理⾼高度复杂域的设 计思想,试图分离技术实现的复杂性, 围 绕业务概念构建领域模型来控制业务的复 杂性,以解决软件难以理理解,难以演化等 问题。团队应⽤用它可以成功地开发复杂业 务软件系统,使系统在增⼤大时仍然保持敏敏 捷。 事件⻛风暴暴⼯工作坊 - Event Storming是⼀一种领域建模的实践,是⼀一种快速 ‣开放空间:有⾜足够的空间可以将事件流 可视化,让⼈人们可以交互讨论 ‣彩⾊色即时贴:⾄至少三种颜⾊色 活动准备 寻找领域事件 事件⻛风暴暴 命令⻛风暴暴 寻找聚合 划分限界上下⽂文 什什么是事件? 为什什么⽤用事件? 如何进⾏行行事件⻛风暴暴? 事件:领域专家关⼼心的,在业务上真实 发⽣生的事 例例1: 客户订单已提交 例例2: 对账已完成,每⽉月末夜间触发 1. 确定要进⾏行行事件⻛风暴暴的业务场景,场景需要单0 码力 | 54 页 | 3.85 MB | 1 年前3 领域驱动设计&中台/可视化的遗留系统微服务改造代码图 组件图 已可视化 ⽤用户画像和旅程系统功能⽤用户可视化 ⽤用户画像 ⽤用户旅程 已可视化 突出⽤用户信息,诉求和价值体现 还原业务场景 可视化的划分遗留留系统 领域驱动设计、事件⻛风暴暴⼯工作坊、服务画布 好的设计 低耦合 如果做到了了服务之间的松耦 合,那么修改⼀一个服务就不不 需要修改另⼀一个服务。⼀一个 松耦合的服务应该尽可能少 地知道与之协作的那些服务 的信息。 的⾏行行为,最好只在⼀一 处修改。 领域驱动设计 ‣领域驱动设计是⼀一种处理理⾼高度复杂域的设 计思想,试图分离技术实现的复杂性, 围 绕业务概念构建领域模型来控制业务的复 杂性,以解决软件难以理理解,难以演化等 问题。团队应⽤用它可以成功地开发复杂业 务软件系统,使系统在增⼤大时仍然保持敏敏 捷。 事件⻛风暴暴⼯工作坊 - Event Storming是⼀一种领域建模的实践,是⼀一种快速 ‣开放空间:有⾜足够的空间可以将事件流 可视化,让⼈人们可以交互讨论 ‣彩⾊色即时贴:⾄至少三种颜⾊色 活动准备 寻找领域事件 事件⻛风暴暴 命令⻛风暴暴 寻找聚合 划分限界上下⽂文 什什么是事件? 为什什么⽤用事件? 如何进⾏行行事件⻛风暴暴? 事件:领域专家关⼼心的,在业务上真实 发⽣生的事 例例1: 客户订单已提交 例例2: 对账已完成,每⽉月末夜间触发 1. 确定要进⾏行行事件⻛风暴暴的业务场景,场景需要单0 码力 | 54 页 | 3.85 MB | 1 年前3
 领域驱动设计&中台/物联网平台的反应式设计“color”: “RED”, “state”: “ON” } }, “version”: 12 } 设备影⼦子处理理逻辑 Devices MongoDB Replica Redis Cluster EMQ Node NodeX IoT Applications FindShadow SetDesired 每次局部业务更更新都需要 重新部署整个集群 • 局部业务性能瓶颈,弹性 扩容所有业务 • 加锁处理理资源竞争,增加 性能消耗 微服务 事件驱动 我们做了了什什么 EVENT STORMING EVENT STORMING 核⼼心 通⽤用 ⽀支撑 DeltaSyncService 事件驱动 Devices MongoDB Replica EMQ Node NodeX0 码力 | 18 页 | 1.81 MB | 1 年前3 领域驱动设计&中台/物联网平台的反应式设计“color”: “RED”, “state”: “ON” } }, “version”: 12 } 设备影⼦子处理理逻辑 Devices MongoDB Replica Redis Cluster EMQ Node NodeX IoT Applications FindShadow SetDesired 每次局部业务更更新都需要 重新部署整个集群 • 局部业务性能瓶颈,弹性 扩容所有业务 • 加锁处理理资源竞争,增加 性能消耗 微服务 事件驱动 我们做了了什什么 EVENT STORMING EVENT STORMING 核⼼心 通⽤用 ⽀支撑 DeltaSyncService 事件驱动 Devices MongoDB Replica EMQ Node NodeX0 码力 | 18 页 | 1.81 MB | 1 年前3
 声明式自愈系统——高可用分布式系统的设计之道-王昕Ø 高可用系统的最佳实践总结 无状态分布式系统的高可用问题 处理消息的服务节点可以随机选择 不必处理数据复制和同步的问题 系统容量和高可用能力可以同步提升 服务节点可以随意迁移,不必固定 IP 和存储 有状态分布式系统的高可用问题 一致性 可用性 分区容错性 Paxos Raft 2PC Gossip Ø 处理请求需要特定节点 Ø 必须要考虑数据备份和同步 的问题 Ø 容量扩展和高可用需要不同 Controller观察特定领域的 系统状态 Ø 协调Desired State跟 Realized State之间的差 距,维持最终一致性 Ø 定期处理集群中的事件 Ø 系统必须是幂等的 控制器的设计理念 控制逻辑应该只依赖于当前状态 假设任何错误的可能,并做容错处理 尽量避免复杂状态机,逻辑不要依赖无法监控的内部状 态 每个模块都可以在必要时优雅地降级服务 每个模块都可以在出错后自动恢复 假0 码力 | 44 页 | 2.47 MB | 1 年前3 声明式自愈系统——高可用分布式系统的设计之道-王昕Ø 高可用系统的最佳实践总结 无状态分布式系统的高可用问题 处理消息的服务节点可以随机选择 不必处理数据复制和同步的问题 系统容量和高可用能力可以同步提升 服务节点可以随意迁移,不必固定 IP 和存储 有状态分布式系统的高可用问题 一致性 可用性 分区容错性 Paxos Raft 2PC Gossip Ø 处理请求需要特定节点 Ø 必须要考虑数据备份和同步 的问题 Ø 容量扩展和高可用需要不同 Controller观察特定领域的 系统状态 Ø 协调Desired State跟 Realized State之间的差 距,维持最终一致性 Ø 定期处理集群中的事件 Ø 系统必须是幂等的 控制器的设计理念 控制逻辑应该只依赖于当前状态 假设任何错误的可能,并做容错处理 尽量避免复杂状态机,逻辑不要依赖无法监控的内部状 态 每个模块都可以在必要时优雅地降级服务 每个模块都可以在出错后自动恢复 假0 码力 | 44 页 | 2.47 MB | 1 年前3
 领域驱动设计&中台/架构分层模型适配灵活易易使⽤用的API 技术点: 性能,事务,分布式,安全等⾮非功能性需求 API服务 ⼯工作内容: • 接收外部请求并响应: 如HTTP请求, 消息处理理 • 事务管理理 • 认证 • 缓存 • ⽇日志 • 异常处理理 • 配置 • Session 技术⼈人员关注的层 腐化案例例: ⼤大量量业务逻辑堆积 模型: • View Object • Resource 腐化案例例: 亏空 ⼤大量量技术术语业务⼈人员完全看不不懂 模型: • 应⽤用服务 — 跨Bond Context DTO • 领域服务 — 跨聚合 • 聚合 实体 仓库 事件 DDD分层参考架构 访问外界系统(调⽤用外界系统)的技术相关实现。 前端应⽤用 API服务 业务领域 基础设施 ⼲干系⼈人: 外界系统 诉求: 稳定调⽤用外部系统 技术点: 使 学习和使⽤用外部系统,如数据库,邮件系统 • 适配外部系统模型,如SQL映射到模型对象 技术⼈人员关注的层 基础设施 腐化案例例: 业务逻辑和外部调⽤用逻辑混合 如⼀一个⽅方法⾥里里即处理理业务逻辑⼜又调⽤用SQL 模型内容: • PO • 第三⽅方Protobuffer • 第三⽅方SDK DDD分层参考架构 — Java技术视⻆角 前端应⽤用 API服务 业务领域0 码力 | 39 页 | 2.54 MB | 1 年前3 领域驱动设计&中台/架构分层模型适配灵活易易使⽤用的API 技术点: 性能,事务,分布式,安全等⾮非功能性需求 API服务 ⼯工作内容: • 接收外部请求并响应: 如HTTP请求, 消息处理理 • 事务管理理 • 认证 • 缓存 • ⽇日志 • 异常处理理 • 配置 • Session 技术⼈人员关注的层 腐化案例例: ⼤大量量业务逻辑堆积 模型: • View Object • Resource 腐化案例例: 亏空 ⼤大量量技术术语业务⼈人员完全看不不懂 模型: • 应⽤用服务 — 跨Bond Context DTO • 领域服务 — 跨聚合 • 聚合 实体 仓库 事件 DDD分层参考架构 访问外界系统(调⽤用外界系统)的技术相关实现。 前端应⽤用 API服务 业务领域 基础设施 ⼲干系⼈人: 外界系统 诉求: 稳定调⽤用外部系统 技术点: 使 学习和使⽤用外部系统,如数据库,邮件系统 • 适配外部系统模型,如SQL映射到模型对象 技术⼈人员关注的层 基础设施 腐化案例例: 业务逻辑和外部调⽤用逻辑混合 如⼀一个⽅方法⾥里里即处理理业务逻辑⼜又调⽤用SQL 模型内容: • PO • 第三⽅方Protobuffer • 第三⽅方SDK DDD分层参考架构 — Java技术视⻆角 前端应⽤用 API服务 业务领域0 码力 | 39 页 | 2.54 MB | 1 年前3
 QCon北京2018-《美团配送系统架构演进实践》-阴永俊快速起量,系统质量、研发效率问题凸显 运营侧应用 • 提供搜索、权限、审批解决方案,保证扩展性 规模化阶段:可用性建设 研发高压线、月度Case复盘、CaseStudy 故障演练 规避能力 解决能力 线上故障处理SOP 上线规范、扩容流程、重构流程、CR流程 周巡检/日巡检制度 诊断能力 预防能力 流程建设 系统建设 故障管理平台 应急管理平台 四层监控体系、业务大盘、APP大盘 Cat监控平台、MTrace、端到端日志分析 坐标流、导航路径、空间索引 能力 打磨各类位置与导航策略场景 导航 算法特征 效果验证 产品技术创新驱动业务发展 精细化阶段:仿真平台 目标:构建线下模拟沙盘 思路:基于线上真实数据对配送全流程构建模拟场景,并对事件、数据模拟 仿真报告可视化 产品技术创新驱动业务发展 精细化阶段:特征平台 版本管理:缩短实验周期,灵活配置实验规则 实时特征:特征准实时加工、离线特征实时转化 离线特征:特征快速开发、验证、上线能力0 码力 | 31 页 | 15.26 MB | 1 年前3 QCon北京2018-《美团配送系统架构演进实践》-阴永俊快速起量,系统质量、研发效率问题凸显 运营侧应用 • 提供搜索、权限、审批解决方案,保证扩展性 规模化阶段:可用性建设 研发高压线、月度Case复盘、CaseStudy 故障演练 规避能力 解决能力 线上故障处理SOP 上线规范、扩容流程、重构流程、CR流程 周巡检/日巡检制度 诊断能力 预防能力 流程建设 系统建设 故障管理平台 应急管理平台 四层监控体系、业务大盘、APP大盘 Cat监控平台、MTrace、端到端日志分析 坐标流、导航路径、空间索引 能力 打磨各类位置与导航策略场景 导航 算法特征 效果验证 产品技术创新驱动业务发展 精细化阶段:仿真平台 目标:构建线下模拟沙盘 思路:基于线上真实数据对配送全流程构建模拟场景,并对事件、数据模拟 仿真报告可视化 产品技术创新驱动业务发展 精细化阶段:特征平台 版本管理:缩短实验周期,灵活配置实验规则 实时特征:特征准实时加工、离线特征实时转化 离线特征:特征快速开发、验证、上线能力0 码力 | 31 页 | 15.26 MB | 1 年前3
 领域驱动设计&中台/如何让DDD落地管理理员会收到出库请求,进⾏行行配货并发货。同时,买家可以查看物流状态以 及确认收货。 事件⻛风暴暴的结果 事件⻛风暴暴得到的命令和事件就没⽤用了了吗? 订单 已创建 库存 已锁定 提交 订单 ⽤用户 SubmitOrderCommand OrderCreated StockLocked 订单聚合创建订单服务 接收 仓库聚合的事件订阅者 仓库聚合锁定库存服务 发送 LockStockCommand 单API适配器器 3.创建订单服务收到命令后,会把创建订单命令转换成订单,然后调⽤用订单仓库进⾏行行 保存,保存成功后会让事件发布器器发布订单已创建事件 4.事件发布器器会根据事件类型把订单已创建事件转发给商品库存订阅者, 5.商品库存订阅者收到事件以后会根据事件中的商品ID和订单数量量创建锁定商品库存 命令,然后给锁定商品库存服务进⾏行行库存锁定 6.锁定商品库存服务收到命令后,会把根 锁定商品库存服务收到命令后,会把根据命令中的商品ID从商品库存仓库中获取商 品库存,然后根据让商品库存锁定订单数量量,之后调⽤用商品库存仓库进⾏行行保存,最后 让事件发布器器发布商品库存已锁定事件 ……. 领域故事中的主要对象 领域对象 类型 命名 订单API控制器器 Adapter OrderController 创建订单命令 Command CreateOrderCommand 创建订单应⽤用 ApplicationService0 码力 | 32 页 | 3.25 MB | 1 年前3 领域驱动设计&中台/如何让DDD落地管理理员会收到出库请求,进⾏行行配货并发货。同时,买家可以查看物流状态以 及确认收货。 事件⻛风暴暴的结果 事件⻛风暴暴得到的命令和事件就没⽤用了了吗? 订单 已创建 库存 已锁定 提交 订单 ⽤用户 SubmitOrderCommand OrderCreated StockLocked 订单聚合创建订单服务 接收 仓库聚合的事件订阅者 仓库聚合锁定库存服务 发送 LockStockCommand 单API适配器器 3.创建订单服务收到命令后,会把创建订单命令转换成订单,然后调⽤用订单仓库进⾏行行 保存,保存成功后会让事件发布器器发布订单已创建事件 4.事件发布器器会根据事件类型把订单已创建事件转发给商品库存订阅者, 5.商品库存订阅者收到事件以后会根据事件中的商品ID和订单数量量创建锁定商品库存 命令,然后给锁定商品库存服务进⾏行行库存锁定 6.锁定商品库存服务收到命令后,会把根 锁定商品库存服务收到命令后,会把根据命令中的商品ID从商品库存仓库中获取商 品库存,然后根据让商品库存锁定订单数量量,之后调⽤用商品库存仓库进⾏行行保存,最后 让事件发布器器发布商品库存已锁定事件 ……. 领域故事中的主要对象 领域对象 类型 命名 订单API控制器器 Adapter OrderController 创建订单命令 Command CreateOrderCommand 创建订单应⽤用 ApplicationService0 码力 | 32 页 | 3.25 MB | 1 年前3
共 26 条
- 1
- 2
- 3













