文章目录[+]
模拟一个系统从架构设计到代码落地的过程,通过架构战略设计与战术设计相结合,从分析业务需求到代码分层设计到架构方案技术选型到最终的代码落地与测试。在分析与落地的过程中,分析到具体的功能点,会针对这个功能进行细微讲解,而且通过分析业务痛点推导出对应的架构设计方案。同样,在落地编码的过程中会使用对应的技术栈,在使用的时候会着重分析该技术栈为什么这样处理以及处理考虑点。总之,就是充分模拟一个架构师在日常工作中的职责,深入理解业务需求,从技术角度评估项目的可行性以及攻克技术难点,掌握高并发、高可用、强一致性、大数据量等常见业务场景下的解决方案设计,最终具备有成为初级架构师的能力。
阶段一 亿级商旅平台战略设计
架构工作中的痛点:
不知道如何从开发角色切换到架构师角色,不会做架构设计,陷入细节无法自拔
搞不懂业务需求分析思路,遇到业务问题无从下手
不会划分子域,无法确定各子域职能边界
无法区分架构中的战略设计与战术设计
第一周 需求框架分析
目标:
明确亿级商旅平台需求,从需求理解到功能点梳理。
掌握大厂常用的需求分析思路。
理解如何划分模块划分子域进行业务支撑。
理解亿级商旅平台战略设计要点,总结战略设计产物。
详细内容:
介绍软件系统的本质
亿级商旅平台的主需求分析
整理功能点模块,划分模块、划分子域
如何运用子域进行战略设计
绘制亿级商旅平台业务架构图、微服务架构图、数据流规划图
建设架构师的思维模型
阶段二 亿级商旅平台战术设计:百万并发认证
架构工作中的痛点:
架构设计之初不会基于业务进行流程梳理,导致业务返工甚至停滞。
设计缓存架构过程中不会进行合理的技术选型,制定不出对应的技术方案。
没有结构化思维,编写的代码无法复用。
没有系统掌握测试方法论模型,无法做到业务闭环。
第二周 亿级在线百万并发认证业务分析
目标:
了解亿级商旅平台战术设计之百万并发认证业务背景。
掌握认证业务中常见的流程梳理方法。
掌握百万并发认证业务中的数据库处理方式。
了解日常开发框架的并发上限,找到破解高流量的密码。
掌握资源估算方式,了解认证架构估算模型。
掌握百万高并发认证场景下的解决方案。
详细内容:
认证功能业务分析、流程梳理
百万并发认证功能中的数据处理方式
二叉树、多叉树存储方式
了解各种存储媒介量化延时
推测数据库 I/O 瓶颈
开发框架的并发上限分析
百万高并发认证的关键技术选型
内存、进程、网络、磁盘等硬件处理方式
F5、DNS、LVS、Nginx、Tomcat 流量分发处理
MySQL、Redis、Ehcache 缓存设计
ActiveMQ、RocketMQ、Kafka 消息队列设计
估算认证功能的资源消耗
流量再度激增的应对解决方案
第三周 认证业务架构方案设计
目标:
掌握分布式缓存方案与技术选型。
掌握 Redis 在百万并发认证业务中的方案设计和落地实战。
本地缓存 Ehcache 在百万并发认证业务中的方案设计和落地实践。
了解本地缓存 Ehcache 与 Redis 的区别。
掌握认证模块功能设计、认证模块接口设计。
详细内容:
Redis 缓存认证信息解决方案设计
数据变更频率、读多写少
缓存定长加变长、更新机制
Redis 单点故障、集群、持久化机制
缓存雪崩、穿透、击穿问题解析
Redis + Ehcache 缓存设计方案设计
估算 Redis 实例数量,计算性价比
剖析 Web 容器业务特性
巧用磁盘增加前置缓存
分片提升缓存命中率
Ehcache 单点问题应对措施
CAP 理论介绍
软件架构设计概念 DID 原则
Design 设计 20 倍的容量
Implement 实施 3 倍的容量
Deploy 部署 1.5 倍的容量
认证模块功能设计
Nginx 参数转发
Lua 脚本转发
Redis、Ehcache 数据结构的存储以及序列化
AOP 横切思想的使用
异常、监控、打点
认证模块接口设计实现
第四周 认证功能代码结构分层设计
目标:
理解代码分层的概念,学习使用三层架构、DDD 分层等。
掌握网关 API 接口设计原则。
使用 Redis、Ehcache、线程池等完成缓存功能代码设计实现。
详细内容:
商旅平台认证业务层次结构分析之单层结构、三层结构以及 N 层结构
DDD 领域模型层设计分析
API 设计原则之 Gateway API 接口设计、Facade API 接口设计
缓存功能代码设计分析
Nginx、Tomcat、Ehcache、Dubbo 线程池参数设置分析
第五周 认证功能代码实现
目标:
掌握亿级商旅平台下的认证功能代码编写方式。
使用 HTTP、TCP 实现远程系统调用,搭建系统之间的调用桥梁。
实现亿级商旅平台下的认证功能代码验证。
详细内容:
三种编码方式对比编写认证功能代码
结构化编写认证服务的流程代码,明确主流程
实现百万并发认证缓存功能代码编写
Java动态代理之 CGLIB、JDK 代理使用详解
SpringEL 表达式、OGNL 表达式、Aviator 表达式编写代码
拦截思维,前置、业务、后置、善后、异常
使用 OpenFeign 调用 HTTP 请求,实现远程系统调用
Dubbo 调用 TCP请求与 OpenFeign 调用 HTTP 请求的对比
多种方式验证、检查代码启动成功
第六周 认证功能自测验证与架构 CR
目标:
完成认证功能自测验证,掌握测试模型。
了解自动化测试与测试开发的区别。
掌握 Code Review 要点,完成代码结构检查。
详细内容:
分层测试模型介绍
测试冰淇淋模型
测试金字塔模型
自动化测试和 TDD 测试驱动开发
认证功能自测验证
测试使用 Redis、Ehcache 实现的缓存功能
测试 HTTP 入口调用、Dubbo 远程调用可行性
测试未知异常以及制造异常
链路压测
百万并发认证业务代码复盘要点分析
完整一致性检查
检查接口性能、线程安全、数据安全
异常处理检查、代码健壮性、可读性检查
代码结构、抽象封装检查
阶段三 亿级商旅平台战术设计:十万并发抢单
架构工作中的痛点:
应对高并发业务时无法找到对应的架构设计和技术选型方案。
不会进行代码分层架构设计。
设计的系统架构无法支撑抢单、秒杀等高并发需求。
流量洪峰下无法应对数据读写问题导致的订单无法查询等业务 bug。
完成代码编写后不会进行代码检测,业务没办法闭环。
第七周 十万并发抢单业务分析
目标:
掌握亿级商旅平台战术设计之十万并发抢单业务下的架构设计。
了解商旅平台中的餐饮下单业务背景与流程。
实现商旅平台抢单业务的数据持久化、一致性方案设计。
掌握抢单、秒杀业务特点。
详细内容:
餐饮下单业务背景介绍与流程梳理
用例(Use Case)描述
用例组成元素、用例原则
高并发抢单系统之数据库写的设计方案
表锁、行锁
事务一致性、分阶段提交、最终一致性介绍
扩并发、扩内存队列
锁争抢、自旋等待、队列积压
持久化受损、多台节点查无此单问题
重新计算并构建抢单架构雏形
数据库、容器、网关,并发上限测试
估算资源消耗
应对餐饮间歇性流量洪峰
抢单业务特点
秒杀、抢单,共性与区别
分治思想
第八周 抢单业务架构方案设计
目标:
掌握亿级商旅平台抢单业务的多种技术方案落地实现。
掌握亿级商旅平台抢单模块功能设计。
详细内容:
抢单系统并发解决方案之 MySQL + Redis 方案
Redis 与 MySQL 读写性能对比
InnoDB引擎 中 Buffer Pool、Change Buffer、双一策略
RDB、appendonly、appendfsync 参数详解、混合策略
JVM 本地防刷、Redis Lua 分布式防刷
抢单系统并发解决方案之 Redis + RocketMQ 方案
数据库压垮、扩容问题
数据可靠存储问题
抢单数据存在的本质问题
突破限流阈值、Redis 阈值设计
RocketMQ 的可靠性保证机制
Kafka 可靠存储措施
Redis、RocketMQ 各自解决的问题
订单库存信息处理
预加载
全量加载
分段锁思想加载
抢单模块功能设计
Tomcat 池满设计
Redis Lua 保护数据库机制、防刷机制
Redis 与 DB 查询共用模型设计
Redis 与 RocketMQ 存储机制
RocketMQ 消费的处理机制
异常补偿机制
第九周 抢单功能代码结构分层设计
目标:
掌握抢单功能代码设计实现逻辑
掌握恶意用户抢单设计
掌握优秀的代码编写方式
详细内容:
代码结构分层
相似性归类
聚合屏蔽对外
基础框架抽象下层
接口设计与定义
Gateway API 设计
Facade API 设计
RocketMQ API 设计
Redis API 设计
抢单功能代码设计
引入 RocketMQ 设计
Redis 数据结构分析
RocketMQ 收发处理
先发后达,定时延时设计方案
恶意用户抢单设计
Sentinel 限流处理
Redis String、Map、Lua 处理
自底向上编码风格
以工具的思维提供能力
以抽象、封装的原则提供能力
以设计文稿穿针引线
第十周 抢单功能代码实现
目标:
实现亿级商旅平台之抢单功能代码编写
引入 RocketMQ 组件进行消费代码编写
掌握抢单功能业务下并发、未知异常处理逻辑
详细内容:
抢单服务的流程代码编写
商品信息获取
数据入 RocketMQ 入 Redis 封装处理
先 RocketMQ 后 Redis
Tomcat 池满入 RocketMQ 代码编写
自定义拒绝策略、感知拒绝处理
修改 HttpResponse 响应
RocketMQ 消费代码编写
批量消费处理
扣减 Redis 数据
Dubbo 调用转移订单
RocketMQ、Redis 并发异常处理
RocketMQ、Redis 备份
任一失败不处理
都失败才处理
未知异常处理
异常发生的监控手段
出现异常的补救措施
第十一周 抢单功能自测验证与架构 CR
目标:
完成实现抢单功能自测验证
掌握如何制造异常并验证
了解抢单功能代码 Review 要点
详细内容:
抢单功能自测验证
Tomcat 池满后发送给 RocketMQ 处理
Redis 保存抢单功能
RocketMQ 收发抢单数据
抢单查询
制造异常验证
RocketMQ、Redis 存储异常
RocketMQ 消费异常
十万并发抢单业务代码复盘要点分析
检查异常处理流程
监控指标处理
代码抽象封装
异常预案的备用措施
阶段四 亿级商旅平台战术设计:十万并发推送
架构工作中的痛点:
没有高并发场景实战经验,面对业务问题不会做架构方案技术选型
无法正确进行资源估算,导致资源浪费
没有做过代码自测,遇到问题无从下手排查问题,找不到问题根源
了解技术栈的使用但是无法与业务相结合实战
第十二周 十万并发推送业务分析
目标:
掌握订单推送业务背景与流程
了解十万并发下推送功能架构设计
掌握推送业务中的技术难题,譬如网络异常、JVM 内存设计
详细内容:
系统性分析订单推送业务与流程梳理
5W2H 分析法
常规思路之直调数据处理
通过报文直调数据
预测 I/O 并发瓶颈
使用线程池和队列实现报文推送
数据先发后达问题解决方案
网络异常、线程池异常、补偿机制
扩展参数改造推送方案
增加 Dubbo 线程数扩大并发能力
自定义线程池释放 Dubbo 线程池、队列数
JVM 内存支撑线程数上限
按照数据库持久化方式估算推送平台架构
线程数计算内存承载、I/O 延时
存储消耗、资源估算消耗
基于并发上限产出推送架构雏形
第十三周 推送业务架构方案设计
目标:
掌握推送业务下的架构技术选型方案
分析推送架构下的 3 套方案利弊
完成推送模块功能设计实现
详细内容:
MySQL + ElasticJob 方案设计
意外崩溃发生如何解决
数据库可靠性
网络异常、线程池异常的保障机制
引入调度解决了什么问题
调度如何扫描范围数据
数据存储增长过快怎么应对
MySQL + ElasticJob + Sharding 方案设计
分治思想使用场景
数据库分治表设计,分治表平摊机器、结合调度
决定分片数量的瓶颈点、估算每秒能处理的并发
MySQL + ElasticJob + Sharding + RocketMQ 方案设计
引入 RocketMQ 解决了什么问题
预估 RocketMQ 队列来计算并发
单笔和批量的差异
批量评估并发数、并发数反推消费
消费 RocketMQ 数据异常、异常入库待推送
异常补偿队列、定制间隔重试
多类型订单隔离
三套方案各自的利弊分析
流量考虑、数据直观统计、处理效率
推送模块功能设计
RocketMQ 数据模型设计、队列数量设计
RocketMQ 批量消费设计
分治表设计、索引设计
调度能力设计
索引范围扫描设计
重试补偿队列设计
第十四周 推送功能代码结构分层设计
目标:
实现推送功能代码设计
掌握 RocketMQ 消息处理模型
掌握事件补偿框架设计要点
掌握同比订单下的推送业务设计逻辑
详细内容:
代码结构分层
多协议、USB 接口处置
RocketMQ 接收消息设计
消息数据模型
接收消息框架抽象设计
异常入库事件消息设计
自定义线程池设计
调度扫描框架设计
防重并发设计
扫描事件消息表设计
事件补偿框架设计
事件补偿表设计
事件补偿流程设计
事件补偿队列 DelayQueue 设计
单笔订单多状态多记录处理
Redis 防并发处理
同笔订单多条待推送设计
同笔订单推送成功更新设计
动态调整线程池参数
第十五周 推送功能代码实现
目标:
实现推送功能代码实现
完成 RocketMQ 发送、接收消息功能编写
完成调度扫描功能、事件补偿功能代码编写
详细内容:
发送消息功能编写
RocketMQ Console 发送
模拟发送代码编写
RocketMQ 接收消息代码编写
批量接收消息处理
批量查库处理
批量发送处理
失败、异常,入库事件消息表,并异步执行
修改线程池参数的封装处理
调度扫描功能编写
抽象防重父类编写
范围扫描数据 SQL 语句编写
批量入库事件补偿表
范围更新事件消息表
事件补偿功能编写
事件补偿调度处理
事件补偿逻辑执行处理
事件补偿结果处理
第十六周 推送功能自测验证与架构 CR
目标:
完成推送功能自测验证
完成 RocketMQ 发送、接收功能验证
完成调度扫描功能、事件补偿功能验证
详细内容:
RocketMQ 发送功能验证
RocketMQ Console
硬编码
RocketMQ 接收功能验证
批量读取异常验证
批量发送异常验证
批量入库事件消息表异常验证
异步线程池拒绝异常验证
动态调整线程池参数验证
调度扫描功能验证
调度重复执行验证
调度处理异常验证
事件补偿功能验证
事件异常验证
事件补偿调度加载验证
事件重试次数、重试至最大次数验证
十万并发推送业务代码复盘要点分析
检查异常处理流程
监控指标处理
代码抽象封装
异常预案的备用措施
架构师的成长规划
发表评论