Java架构师体系课:跟随千万级项目从0到100全过程高效成长(更新至阶段三)
课程大纲:
第一阶段:单体项目开发与上线(1-5周)
第1周 万丈高楼,地基首要
在开始系统化成长之初,先从整体上认知大型互联网系统架构演变历程,明确架构师需要具备哪些技术栈与核心能力,之后开始筑基-单体开发。
课程安排:
1. 大型互联网系统架构演变历程
2. Java架构师需要具备的技术栈与能力
3. 项目演示与单体架构技术选型
4. 前后端分离开发模式与项目分层设计原则
5. 聚合工程构建与SpringBoot2
6. 基于PDMan工具为数据库建模
7. 整合HikariCP与MyBatis
8. MyBatis数据库逆向生成
9. 结合通用Mapper,编写Restful风格Api
10. 事务传播详解
11. 用户注册/登录流程详解与功能开发
12. 整合与优化Swagger2文档Api
13. API文档生成工具Swagger2
14. 设置跨域配置实现前后端联调
15. 整合Log4j打印日志
16. 通过日志监控Service执行时间
17. 用户退出登录清空Cookie
18. 开启MyBatis日志Sql打印
第2周 分类,推荐,搜索,评价,购物车开发
本周首先带大家分析电商首页需求,然后实现首页轮播图功能,分类功能,商品推荐功能,搜索功能,商品评价功能,最后带大家开发电商核心功能模块-购物车。
课程安排:
1. 电商首页轮播图功能开发
2. 首页分类需求分析
3. 分类实现 - 加载与渲染大分类
4. 分类实现 - 自连接查询子分类
5. 分类实现 - 自定义Mapper实现懒加载子分类展示
6. 商品推荐 - 需求分析与Sql查询
7. 商品推荐 - 实现接口与联调
8. 商品评价 - 数据库设计
9. 商品评价 - 评论分页实现
10. 商品评价 - 信息脱敏
11. 搜索商品 - 功能详述与Sql编写
12. 搜索商品 - 商品搜索功能实现
13. 搜索商品 - 前端业务与分类搜索查询
14. 搜索商品 - 分类搜索商品查询实现
15. 购物车 - 购物车存储形式
16. 购物车 - 未登录已登录加入购物车业务代码讲解
17. 购物车 - 渲染(刷新)购物车
18. 购物车 - 删除商品业务讲解
第3周 收货地址,订单,支付 ,定时任务开发
本周首先带大家完成收获地址的开发,接着开发电商核心业务功能-订单,支付(微信支付,支付宝支付),最后带大家设计一个定时任务,实现定时关闭超期未支付订单功能。
课程安排:
1. 收货地址 - 需求分析与表设计
2. 收货地址 - 增删改查功能开发
3. 收货地址 - 默认收货地址设置
4. 确认订单 - 订单流程梳理与订单状态
5. 确认订单 - 订单表设计
6. 确认订单 - 聚合支付中心作用
7. 确认订单 - 提交并且接受订单信息
8. 创建订单 - 填充新订单数据
9. 创建订单 - 保存订单与子订单数据
10. 创建订单 - 扣除商品库存与订单状态保存
11. 创建订单 - 测试订单创建与回滚
12. 创建订单 - 创建订单后,前端的业务处理
13. 微信支付 - 构建商户端支付成功的回调接口
14. 微信支付 - 生成支付二维码
15. 微信支付 - 商户回调地址与内网穿透
16. 支付宝支付 - 异步通知与同步通知
17. 定时任务 - 定时关闭超期未支付订单
18. 定时任务 - 定时任务弊端与优化方案
第4周 用户中心 ,订单/评价管理开发
本周首先带大家完成用户中心模块,之后一起完成订单管理,评价管理功能,完善中心首页,通过本周的学习,我们已经完全有能力架构与开发任何一个单体的项目了。
课程安排:
1. 用户中心 - 查询,修改用户信息
2. 用户中心 - 使用Hibernate验证用户信息
3. 上传头像 - 定义文件保存位置
4. 上传头像 - 图片格式限制以防后门
5. 上传头像 - 大小限制,以及自定义捕获异常
6. 订单管理 - 查询我的订单Sql
7. 订单管理 - 嵌套查询分页Bug解决方案
8. 订单管理 - 操作订单前的验证
9. 评价管理 - 评价需求分析
10. 评价管理 - 待评价商品列表开发
11. 评价管理 - 评价商品功能开发
12. 中心首页 - 订单状态接口联调
13. 中心首页 - 订单动向接口联调
第5周 云服务器部署上线
本周带大家一起打包与发布前端项目,后端项目到云服务器上,最后让大家拥有一个上线电商项目。
课程安排:
1. 云服务器购买及安装配置(JDK/Tomcat/MariaDB)
2. SpringBoot多环境部署profile(开发环境/生产环境)
3. SpringBoot项目打成war并发布到云服务器
4. 前端项目发布
5. 解决Cookie异常,测试订单支付流程
第二阶段:从单体到高可用集群演进(6-8周)
第6周 LVS+Keepalived+Nginx实现高可用集群
本周开始,我将从单体演进到集群,首先带大家学习Nginx,负载均衡等相关技术,之后带大家通过LVS+Keepalived+Nginx实现高可用服务器集群, 从而降低单节点负载压力。
课程安排:
1. 在Nginx中解决跨域问题
2. 在Nginx中配置静态资源防盗链
3. 使用Nginx搭建3台Tomcat集群
4. 使用JMeter测试单节点与集群并发异常率
5. 使用 keepalived提高吞吐量
6. 负载均衡原理剖析 - ip_hash - url hash 与 least_conn
7. 一致性hash算法讲解
8. Nginx控制浏览器缓存
9. Nginx反向代理缓存
10. 使用Nginx配置SSL证书提供HTTPS访问
11. Nginx单实例存在的问题与集群原理详解
12. 心跳机制与自动重启实现
13. 动静分离的那些事儿
14. 部署Nginx到云端 - 实现动静分离与虚拟主机
15. 部署Nginx到云端 - 测试与日志调试
16. 实现Keepalived高可用双机主备
17. 实现Keepalived高可用双机热备
18. LVS+Keepalived+Nginx实现高可用集群 负载均衡
第7周 主从复制高可用Redis集群
本周首先会对Redis的架构与原理进行解析,之后整合Redis,实现Redis哨兵,搭建主从复制高可用Redis集群等,最后带大家解决缓存雪崩,穿透等问题。
课程安排:
1. Redis架构与原理解析
2. 在SpringBoot中整合Redis实现数据存取
3. 基于Redis优化首页轮播图和分类查询
4. 在Redis中实现订阅功能
5. Redis中RDB,AOF持久化工作原理解析
6. Redis主从架构模式讲解
7. Redis主从复制,无磁盘化复制原理解析
8. 过期的缓存Key处理方案
9. Redis哨兵机制与原理解析
10. Redis哨兵落地实现
11. Redis集群解决方案设计
12. Redis集群原理解析
13. 主从复制高可用Redis集群搭建
14. SpringBoot集成Redis集群环境
第8周 Redis缓存雪崩,穿透
本周会帮大家分析缓存雪崩现象,然后为大家讲解缓存雪崩的解决方案,缓存穿透的解决方案,并且带大家一起落地解决对应的问题,最后为家拓展讲解Redis批量查询的优化设计。
课程安排:
1. 缓存雪崩现象解析
2. 缓存雪崩的解决方案与落地
3. 缓存穿透的解决方案与落地
4. 拔高-Redis批量查询的优化设计
第三阶段:逐个击破分布式核心问题(9-17周)
第9周 分布式会话与单点登录SSO
本周开始,我们将从集群演进到分布式架构。但在分布式环境下又会有更多问题等待着我们去解决。现在我们就来一起解决下分布式会话与单点登录相关问题。
课程安排:
1. 有状态会话和无状态会话区别
2. 动静分离架构下的用户会话解决方案
3. 集群与分布式系统中的用户会话解决方案
4. 单个Tomcat会话和全局Redis会话关系
5. 通过Redis+Cookie来实现前后端分离与分布式会话
6. 多系统跨域的用户会话问题
7. 常见的会话跨域形式(Session 共享)
8. Cookie实现Session跨域与原理
9. spring-session实现与原理
第10周 分布式搜索引擎-Elasticsearch
本周我们首先会以架构师角度分析目前搜索业务的弊端,之后由浅入深讲解ES,集成ES集群,优化商品搜索与分类搜索等功能,最后拓展2个案例让大家更加深入的理解ES。
课程安排:
1. ES架构与原理解析
2. ES健康状况详解
3. dsl搜索(分词,分页,多关键字匹配,布尔查询)
4. 出现不合法搜索如何定位问题
5. ES集群原理,shard与replica
6. 集成ES集群故障之节点宕机
7. 集成ES集群故障之脑裂问题探讨
8. 集群环境中(分布式)文档的存取原理
9. MySql和ES进行数据同步的方案分析
10. 基于Logstash进行数据同步
11. 基于ES实现商品搜索与分类搜索
12. ES深度分页下会带来怎样的性能问题
13. 大数据量下该如何使用Scoll滚动技术进行搜索
14. ES拓展 - 基于Geo的地理坐标搜索实现
15. ES拓展 - 社交案例,距离我几公里内的好友
第11周 分布式文件系统-FastDFS+阿里OSS
在分布式系统中,文件系统是必须被所有节点访问的,为了解决单体架构中文件服务的单一性问题,我们需要学习分布式文件存储(FastDFS、阿里OSS云存储)。
课程安排:
1. 以架构师角度分析目前文件上传所存在的问题
2. 分布式文件系统技术选型:FastDFS VS 阿里OSS
3. FastDFS架构与原理解析
4. Nginx + FastDFS 实现文件服务器
5. FastDFS整合SpringBoot,修改项目中文件上传
6. 第三方图片存储解决方案
7. 阿里OSS存储与实现原理
8. SpringBoot整合阿里OSS SDK与API
9. 实现图片上传到OSS中
10. 在生产环境中切换文件存储为FastDFS
第12周 分布式消息队列-RabbitMQ
本周首先会讲解业界主流消息队列技术选型,提升大家的技术判断能力,之后是SpringBoot与RabbitMQ整合,最后带大家进行RabbitMQ基础组件封装。一起感受代码设计魅力吧。
课程安排:
1. 业界主流消息队列与技术选型
2. ActiveMQ集群架构与原理解析
3. RabbitMQ集群架构与原理解析
4. RocketMQ集群架构与原理解析
5. Kafka集群架构与原理解析
6. RabbitMQ核心API与高级特性
7. RabbitMQ与SpringBoot整合实战(生产端,消费端)
8. RabbitMQ镜像队列集群构建
9. RabbitMQ消息可靠性投递机制实战
10. 作为架构师如何去进行高层次的抽象公共API封装,消息序列化
11. 生产端SDK自动装配与架构接口定义
12. 生产端发送迅速异步消息
13. 生产端RabbitTemplate池化封装
14. 生产端消息序列化反序列化转换封装
15. RabbitMQ基础组件封装-基础组件应用演练
16. 分布式定时任务组件封装
17. 可靠性消息重试实现集成定时任务组件
18. 批量,延迟消息应用与封装实现
第13周 分布式消息队列-Kafka
本周我们来深入学习另外一个分布式消息队列-Kafka,然后基于Kafka搭建一个高吞吐量日志收集平台,让大家在实战中彻底掌握Kafka。
课程安排:
1. Kafka核心API
2. Kafka与SpringBoot整合实战
3. Kafka高吞吐量-海量日志收集架构设计
4. Kafka高吞吐量-日志输出(Log4j2)
5. Kafka高吞吐量-日志收集(FileBeat)
6. Kafka高吞吐量-日志过滤(Logstash)
7. Kafka高吞吐量-日志持久化(Elasticsearch)
8. Kafka高吞吐量-日志可视化(Kibana)
9. Kafka监控告警watcher监控告警实战
第14周 分布式锁
在高并发场景下资源共享问题是比较常见也是必须要解决的。本周我们就学习多种基于分布式锁的解决方案,对比它们各自的优缺点,最后大家可以根据自己项目实际情况进行选择。
课程安排:
1. 如何使用锁解决电商项目产生的超卖问题?
2. 基于Synchronized锁解决超卖问题(最原始的锁)
3. 基于ReentrantLock锁解决超卖问题(并发包中的锁)
4. 乐观锁与悲观锁,公平锁与非公平锁
5. 单体应用锁局限性分析&解决方案
6. 基于数据库的悲观锁实现分布式锁
7. 基于Redis的setnx实现分布式锁
8. 基于Zookeeper的瞬时节点实现分布式锁
9. 基于Zookeeper的客户端Curator实现分布式锁
10. 基于Redis的Java客户端Redisson实现分布式锁
11. 如何在电商项目中引入Redisson分布式锁
12. 多种分布式锁技术实现方案,如何选择?
第15周 读写分离、分库分表-MyCAT和Sharding-JDBC
随着系统数据量的增加,单体数据库存储性能问题日益凸显,本周我们就来学习2种数据源读写分离和分库分表的解决方案-MyCAT和Sharding-JDBC。
课程安排:
1. 如何选择垂直切分、水平切分
2. MyCAT快速体验
3. MyCAT用户配置
4. MyCAT的schema配置实操
5. MySql主从配置
6. MyCAT分片规则配置(枚举分片、取模)
7. MyCAT全局表、子表
8. MyCAT高可用架构原理解析
9. MyCAT高可用架构-反向代理(HAProxy)
10. MyCAT高可用架构-故障转移(Keepalived)
11. Sharding-JDBC分片表 (Spring和SpringBoot)
12. Sharding-JDBC全局表(Spring和SpringBoot)
13. Sharding-JDBC子表(Spring和SpringBoot)
第16周 分布式全局唯一主键ID、分布式事务和数据一致性
分库分表后,引发了ID重复问题、分布式事务等问题,本周我们会学习多种分布式全局ID的解决方案以及多种分布式事务的解决方案。
课程安排:
1. 分布式全局ID的多种解决方案
2. 使用UUID作为分布式全局唯一主键ID
3. 基于MyCAT实现全局唯一主键ID(本地文件和数据库)
4. 基于雪花算法实现全局唯一主键ID
5. 分布式系统CAP、BASE原理和ACID原则
6. 分布式事务问题解析
7. 基于XA协议的两阶段提交解决数据一致性问题
8. 使用Atomikos做分布式事务
9. MyCAT与Sharding-JDBC分布式事务
10. 基于事务补偿机制解决数据一致性
11. 基于本地消息表+定时任务解决数据一致性
12. 基于MQ生产消费模型解决数据一致性
第17周 分布式接口幂等性,分布式限流
分布式系统中接口繁多,重试机制必不可少,这就需要对接口进行幂等性设计; 当网站流量激增时,我们可以通过分布式限流技术来降低服务器负载压力。
课程安排:
1. 基于唯一索引解决delete操作的幂等性问题
2. 基于乐观锁解决update的幂等性操作问题
3. 通过token机制解决insert的幂等操作问题
4. 分布式限流技术选型
5. 限流常用算法讲解
6. 基于Nginx的分布式限流 - IP限制
7. 基于Nginx的分布式限流 - 连接数限制
8. 基于Redis+Lua的分布式限流
9. 基于网关层实现分布式限流
10. 分布式限流落地
11. 分布式限流要注意的问题
|