|   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.     分布式限流要注意的问题
 
 
 
 |