4006-998-758
3000+课程任你选择
软件架构与设计模式综合实战训练营
研发学院 软件架构与设计模式综合实战训练营
张逸

高质量编码实践者,领域驱动设计布道师,微服务系统架构师,大数据平台架构师,敏捷转型咨询师。热衷于编程语言学习与技艺提升,致力于将企业架构、精益需求管理、领域驱动设计与微服务架构完美结合,打造面向企业的业务中台;致力于将数据仓库、实时流处理、机器学习与高性能存储完美结合,打造面向行业的智能数据中台。

拥有近20年的软件开发与架构设计经验,曾先后就职于中兴通讯、惠普 GDCC、中软国际、ThoughtWorks 等大型中外企业,任职角色为高级软件工程师、架构师、技术总监、首席咨询师。精通包括 Java、Scala、Python、C#、JavaScript、Ruby 等多种语言,熟练掌握面向对象思想、测试驱动开发与重构、领域驱动设计、函数式编程、架构、大数据分析、敏捷与过程改进,并致力于大型软件企业的面向服务系统架构设计、大数据平台架构设计以及互联网 Web 系统架构设计,曾经连续四届荣获微软最有价值专家,具有丰富的企业软件系统和分布式开发经验。


查看老师详情
课程内容

课程介绍

面向工作年限5年及以上的研发骨干与架构师,本两天实战工作坊聚焦核心命题:高复杂系统下如何做出正确的架构决策——既不陷入照搬模式的教条主义,也不停留在空谈原则的表层认知。

高复杂系统的架构设计面临三重挑战:

l 业务复杂度业务规则繁多,领域概念交织,系统规模庞大——缺乏从领域模型到微服务的系统化分解方法,易出现”大泥球”架构;

l 技术复杂度需要同时应对高可用、高性能、容灾等质量属性要求——架构师缺乏从质量属性出发、风险驱动的系统化架构方法;

l 设计决策复杂度架构模式与设计模式繁多,在真实场景中如何取舍、如何组合——团队缺乏统一的架构决策语言与设计评审话语体系。

其根因往往在于:领域驱动设计一体化方法缺失、质量属性与技术架构脱节、架构模式与设计模式停留在概念认知而无法实战运用

本工作坊在两天12学时内,沿”领域驱动与微服务架构设计 → 高复杂系统技术架构设计 → 架构与设计模式综合运用”路径,以期货交易系统为核心案例贯穿全程,形成可迁移到项目实践的方法体系:

l 业务架构层:DDD战略设计(子领域、限界上下文),从业务复杂度中梳理清晰的系统边界

l 技术架构层:质量属性驱动 + 风险驱动,保障高可用、高性能、容灾能力

l 设计运用层:高频架构模式 + 设计模式的真实场景取舍与组合

l 实战演练层:以期货交易业务场景为案例,分组开展端到端架构设计

课程大纲

第一部分 领域驱动与微服务架构设计

本部分引入领域驱动设计(DDD)的战略设计方法,作为复杂业务系统的核心分解手段。与传统的面向对象设计不同,本部分直接通过DDDUP(领域驱动设计统一过程)从业务相关性分析入手,识别子领域和限界上下文,建立从问题空间到解空间的架构映射路径。在获得清晰的业务边界后,引入主流应用架构模式(整洁架构、六边形架构、菱形对称架构、CQRS、事件驱动架构),并与微服务架构设计对齐,解决微服务的粒度和划分问题。

本部分内容主要包括:

DDD战略设计要素(DDDUP)

·         问题空间与解空间的映射:子领域(核心/支撑/通用)识别与优先级排序

·         业务相关性分析:通过业务流程泳道图梳理端到端流程,基于业务服务的相关性聚合业务域

·         从业务域到限界上下文:确定知识的边界、业务的边界、团队的边界

·         定义限界上下文API:服务契约设计、开放主机服务(OHS)定义、API时序驱动

·         上下文映射模式:防腐层(ACL)、开放主机服务(OHS)、发布语言(PL)等

应用架构模式

·         整洁架构原则:依赖倒置在架构层的落地——领域层零依赖基础设施

·         六边形架构:端口与适配器——业务逻辑与外部世界的隔离

·         菱形对称架构:应用服务、领域层、基础设施层的协作模式

·         CQRS架构模式:命令与查询的分离——读写分离在金融系统中的运用

·         事件驱动架构(EDA):发布/订阅、事件总线——降低微服务间的耦合

限界上下文与微服务

·         限界上下文与微服务的关系:一个限界上下文不一定等于一个微服务,但微服务的第一拆分依据是限界上下文

·         微服务粒度与划分原则:基于业务变化频率、团队结构、部署独立性、数据所有权综合判断

·         微服务设计原则:自治性、可观测性、API契约优先、数据去中心化

·         微服务之间的协作机制:同步(gRPC/REST)vs 异步(事件/消息)的选型与权衡

·         微服务通信协议:契约测试与消费者驱动的契约(CDC)

从单体到微服务的重构

·         绞杀者模式(Strangler Fig)与防腐层:逐步替换而非重写

·         数据拆分策略:从共享数据库到数据库按服务拆分

·         分布式事务的处理模式:Saga、TCC、最终一致性

案例讲解与演练:

·         通过业务相关性分析划分期货交易子领域:交易核心子领域、风控核心子领域、清算结算支撑子领域、行情通用子领域

·         对子领域开展限界上下文划分:交易执行上下文、行情上下文、风控上下文、清算上下文、结算上下文、账户上下文、监管报送上下文

·         限界上下文API定义实战:交易上下文的开放主机服务(下单/撤单/查询接口契约)

·         期货交易系统的CQRS与事件驱动架构设计——以交易执行与行情推送的读写分离为例

实战演练——业务域分析与微服务映射:

·         基于期货交易业务场景(开户→交易→清算→结算),分组完成业务流程梳理与业务域划分

·         识别限界上下文并定义上下文API契约(服务序列图、OHS接口定义)

·         完成限界上下文到微服务的映射,确定通信协议与协作机制

收益:

·         掌握DDDUP的DDD战略设计方法,能通过业务相关性分析独立完成限界上下文划分

·         能定义限界上下文的API契约(OHS、服务序列图)

·         理解主流应用架构模式的设计思想与适用场景

·         掌握限界上下文与微服务的映射关系,明确微服务粒度与划分原则

·         了解从单体到微服务的演进路径与实战策略

 

第二部分 高复杂系统技术架构设计

本部分在DDD限界上下文的基础上,从分布式系统的核心属性出发,引入质量属性驱动设计和风险驱动开发,将技术决策建立在”理解系统固有约束”的根基之上,而非罗列模式清单。本部分围绕三个核心问题展开:如何保证系统持续可用、如何在约束条件下追求极致性能、如何从单站点扩展到跨站点韧性——以期货交易业务场景贯穿始终。

本部分内容主要包括:

质量属性、风险驱动与分布式系统基础

·         从CAP定理理解分布式系统的固有约束:一致性、可用性、分区容错性三者不可兼得

·         质量属性折中的本质:在一致性、可用性、延迟、持久性、可扩展性之间做系统化的取舍——不存在无代价的设计

·         质量属性驱动设计的过程:质量属性场景(6元组) → 架构策略 → 设计决策 → 权衡分析

·         风险驱动开发:以RAIDs识别为核心,风险即优先级,架构决策围绕高优先级风险展开

·         与DDD的结合:在每个限界上下文内部署质量属性场景,不同上下文可以有不同的取舍策略——交易上下文关注强一致与高可用,行情上下文关注低延迟

高可用:故障不可避免,服务必须持续

·         高可用的本质:通过冗余换取可靠性——当部分组件失效时,系统整体仍能正常服务

·         可用性的衡量应从”是否有故障”转向”故障恢复有多快”:MTBF/MTTR → SLA/SLO/SLI

·         故障隔离:通过缩小爆炸半径防止级联故障——线程隔离、进程隔离、机器隔离、可用区隔离

·         故障检测与恢复:心跳检测、健康检查、自动故障转移——核心在于”自动”,而非人工介入

·         流量控制:限流防止系统过载、熔断快速失败保护上游、重试补偿临时故障、超时释放挂起资源——四类策略分工不同,共同构成系统的自我保护层

·         幂等性设计:在重试机制下保证业务正确性——交易系统中的撤单重复提交、结算重复处理等场景尤为关键

·         架构模式的选择由RTO/RPO目标反向驱动:主备(分钟级恢复)→ 同城双活(秒级)→ 异地多活(接近于零)

·         案例:以期货交易为背景的高可用设计——熔断应对市场异常波动、限流应对集合竞价海量订单排队、幂等机制防止订单重复提交

高性能:在约束条件下追求极致响应

·         性能的本质:延迟和吞吐量的平衡——区分”快”(单次响应时间)与”多”(单位时间处理量)两个维度,优化手段各有侧重

·         选择不同的性能分位值决定了优化方向的侧重点:平均响应时间反映了普遍体验,高百分位响应时间反映了极端场景下的长尾问题

·         数据访问路径的优化——从”数据如何到达处理单元”出发:

o   多级缓存:浏览器缓存 → CDN → 本地缓存(Caffeine) → 分布式缓存(Redis),每一级解决不同距离的数据访问延迟

o   读写分离(CQRS):对”高频读、低频写”这一不对称负载的自然回应——命令端与查询端独立部署扩缩容

o   数据本地化:将计算推向数据,减少物理距离带来的延迟

·         计算处理路径的优化——从”请求如何在系统中流转”出发:

o   异步化:将同步等待转化为事件驱动,释放线程资源——消息队列削峰的本质是”用时间换空间”

o   并行化:大任务拆分为独立子任务并发执行,缩短整体处理时间

o   高性能网络模型(Reactor):通过事件循环处理海量连接,而非为每个连接分配一个线程——Netty的核心设计

o   零拷贝:减少数据在内核空间与用户空间的复制次数——Netty的FileRegion实现

·         案例:期货行情推送的高性能链路设计——多级缓存、异步分发、Reactor网络模型的组合运用;LMAX Disruptor(开源金融交易中间件)的无锁架构对交易订单处理的启发

容灾:从单点到跨站点的韧性设计

·         容灾的本质从”设计可预期的故障应对”出发,而非事后补救——两个核心指标决定方案等级:RPO(数据丢失容忍度)、RTO(服务恢复时间目标)

·         容灾层次的递进设计:

o   同城双活:应对单数据中心故障,RTO<1分钟——适用于对交易连续性高要求的核心业务

o   两地三中心:应对城市级灾难,RTO<15分钟——金融行业的经典容灾架构

o   异地多活:应对区域级灾难,RTO接近于零——单元化架构为异地多活提供了数据分片与流量路由的基础

·         容灾设计中的关键权衡:交易链路的同城双活保障(RTO目标秒级)与清算数据的异地灾备保障(RPO目标趋于零)之间的差异决定了不同的技术方案

案例与开源参考:

·         期货交易场景中的质量属性分析:交易可用性(5个9)、行情推送延迟(毫秒级)、清算数据一致性(强一致)

·         容灾递进方案选择由RPO/RTO反向驱动:不同的业务场景(交易vs清算)需要不同的容灾等级和方案

·         期货交易中集合竞价场景的限流设计:令牌桶+排队策略保障核心交易通道

·         期货行情推送的高性能链路设计:多级缓存 + Reactor网络模型 + 异步分发

·         LMAX Disruptor:金融交易系统高性能架构设计参考

实战演练——质量属性场景与技术架构设计:

·         基于期货交易案例的限界上下文,为各上下文定义关键质量属性场景(可用性、延迟、一致性)

·         开展RAIDs风险识别,确定风险优先级并制定架构策略

·         针对交易上下文设计高可用方案,针对行情上下文设计高性能方案,针对清算上下文设计容灾方案

收益:

·         掌握从CAP定理和质量属性出发的架构分析方法,理解可用性、一致性、延迟之间的折中关系

·         理解高可用的本质是”故障隔离与快速恢复”,能围绕这一目标设计自我保护策略

·         掌握从”数据路径”和”计算路径”两个维度优化性能的系统化方法

·         理解容灾层次的递进关系和RPO/RTO驱动的决策过程

 

第三部分 架构与设计模式综合运用

本部分不对每个模式做孤立讲解,而是将核心架构模式与设计模式放在真实项目场景中,围绕”可扩展性”和”高性能”两个核心目标,讲解模式在面对复杂业务时的取舍、组合与权衡。

架构模式

·         发布-订阅模式:在事件驱动架构中的核心地位——期货交易系统中行情推送、订单状态变更通知的应用

·         高并发架构模式

o   反应器模式(Reactor):Netty/Nginx的事件驱动模型

o   生产者-消费者模式:Kafka的消息处理模型

o   主从多线程模式:请求处理与业务处理的线程隔离

·         单元化架构:以单元(Cell)为单位的可扩展与容灾架构——金融系统的异地多活设计

设计模式

·         单例模式:全局唯一实例的管理——交易所核心配置管理器、日志工厂

·         策略模式:算法族的封装与替换——期货交易系统的手续费计算策略、风控规则策略(ShardingSphere策略模式参考)

·         观察者模式:事件通知与监听——交易状态变更通知、行情订阅推送

·         状态模式:有限状态机的建模——期货订单生命周期(已报、待撤、部撤、全成、废单)、交易所热备机制的状态转换

·         代理模式:间接访问与增强控制——远程代理(RPC)、虚拟代理(延迟加载)、保护代理(Spring AOP)

·         职责链模式 + 管道-过滤器模式:请求的分阶段处理——Netty管道、Servlet Filter、交易系统的风控过滤管道(黑白名单检查、资格校验、资金检查、限仓检查)

·         适配器模式:接口转换与系统集成——期货交易系统的交易所接口适配(CTP接口适配、FIX协议适配)

·         外观模式:统一的高层接口——微服务网关(BFF)、交易系统的一站式下单接口

·         插件模式(微内核/插件架构):可扩展的基础架构——Kubernetes的微内核设计、交易系统的规则引擎插件

模式运用的核心思路

·         高扩展性设计:通过策略+职责链+插件模式构建可插拔的风控规则引擎;通过适配器+防腐层保证外部系统变更不污染核心领域

·         高性能设计:状态模式减少条件分支、单例减少对象创建开销、观察者的异步通知不阻塞主流程;明确”高性能不代表不用模式,而要用对模式”

案例与开源参考:

·         期货交易系统的综合模式运用分析:

o   订单生命周期管理:状态模式(订单状态流转)

o   风控规则引擎:策略模式(规则可配置)+ 职责链模式(规则链式检查)+ 插件模式(规则可扩展)

o   行情订阅推送:观察者模式(行情发布-订阅)+ 发布-订阅模式(Kafka主题分区)

o   交易所接口适配:适配器模式 + 防腐层(隔离CTP/FIX等不同协议)

o   核心交易通道:代理模式(远程代理封装RPC调用)+ 单例模式(通道管理器)

o   交易系统BFF:外观模式(统一下单/撤单/查询入口)

·         Netty管道:职责链模式与管道-过滤器模式的实际应用

·         ShardingSphere:策略模式(分片策略可替换)

·         Kubernetes:插件模式(微内核架构)

实战演练——核心场景模式落地与设计评审:

·         选取期货交易系统的核心场景(如风控规则引擎、订单生命周期管理),为关键业务场景选定并组合设计模式

·         各分组输出《核心模块架构设计说明书》草案

·         分组展示架构设计成果,开展设计评审与答辩,讲师点评与团队互评

·         输出《架构决策记录(ADR)》草案

 




返回上一级