介绍
本项目源于某日活百万的互联网独角兽订单团队,是一个含金量极高的商业级项目,项目整体架构图如下:
我将采用业务介绍->方案设计->方案重构->代码实战->生产压测的企业级项目开发流程,一步步抽丝剥茧,帮你彻底掌握这个项目。
该项目学完后完全可以写进简历,作为你的面试大杀器。
亮点
1,真实业务场景
项目主打的就是一个真,拒绝demo。在真实业务场景中落地各种技术,解决实际的问题。企业级项目代码的高扩展性,比如可以无缝从dubbo切换到openfegin的RPC框架
以下为部分业务场景和问题示例,实际包含更多。
生单业务场景
- 生单链路数据不一致问题分析
- 通过分布式事务,保证生单过程中的数据强一致性
预支付业务场景
- 预支付和支付回调的并发问题分析
- 通过分布式锁,解决多线程并发预支付问题
履约场景
- 支付回调到履约的消息丢失问题
基于RocketMQ的重试和死信机制,解决支付回调到履约的消息丢失问题
- 订单的履约状态通知乱序问题
基于RocketMQ消息强顺序方案,解决乱序问题
自动取消订单
- 超时自动取消订单业务场景的技术问题分析
- 基于 RocketMQ 延时消息+分布式锁+分布式调度,实现定时关单
手动取消订单
- 支付退款时为什么要做双异步设计?
- 订单取消链路数据库事务与 MQ 消息不一致问题
- 双异步支付退款不一致问题
- 释放资产多路 MQ 故障重试与幂等技术方案
2,迭代式授课
授课方式上,我会还原企业中项目迭代开发的思路。首先根据需求,设计初版方案,然后发现问题,重构方案,如此往复。
这样你才能明白,为什么要这样设计?相比于之前的方案避免了哪些坑?
如下部分技术方案重构,实际课程包含更多:
生单链路重构
通过 AT+TCC 混合事务方案,重构生单链路
履约业务重构
深入分析Seata Saga状态机原理,在履约业务中引入 Saga 长事务
3,高并发高可用架构实战
除了上述技术方案重构,我还会设计一整套高并发高可用架构,如下(实际包含更多)
Dubbo服务并发优化
- 演示没优化的 Dubbo 服务上云部署后,大流量过来产生的各种问题,如服务挂掉,接口调用失败
- 分析排查Linux OS, Dubbo 线程池、数据库连接池、索引、SQL等各方面,逐步优化
- 优化完毕之后,重新部署,展示优化后的效果
限流防雪崩体系设计
设计并落地一套订单系统限流防雪崩的技术方案
大促活动网关层限流
- 演示大促场景下,瞬时高并发如何击垮订单系统
- 评估订单集群部署下,最大可抗的大促压力,设计网关大促限流方案
- 基于Spring Cloud Gateway实现订单系统前置网关,对订单系统集群做负载均衡
- 部署网关集群,引入Sentinel实现限流方案,从入口处保护订单系统不被击垮
自适应流控方案设计
- 演示订单系统单实例流量超载问题
- 根据订单系统部署机器的配置和高压下的机器负载,基于Sentinel设计订单自适应流控方案
- 根据机器负载,当前的响应时间,请求速率,自适应调整该机器流量阈值,实现柔性流控效果
- 部署演示大流量下,网关层限流后穿透到订单层的流量,在各个机器上的自适应流控效果
订单集群柔性限流
- 针对订单系统各个核心接口,评估出集群模式下每个接口的最大负载压力
- 演示集群模式下的接口访问超载引发的问题,基于Sentinel实现各核心接口的柔性集群限流功能
- 订单系统集群部署后,对单接口进行超压力访问,演示接口级的柔性集群流控效果
核心链路雪崩保护
- 演示订单核心链路的服务雪崩问题和场景,单服务崩溃是如何引发服务链路全面崩溃的
- 对订单核心链路的各个服务,比如订单、库存、营销、仓储、物流、风控,全部基于Sentinel设计服务链路防雪崩方案,避免核心链路任何一个服务崩溃引发服务链路雪崩问题
- 演示防服务雪崩方案的效果
4,阿里云生产环境压测
我们做的架构设计效果如何,最终都要通过实践来检验。
因此在这里,我会把整套系统部署到阿里云进行压力测试,并且分析解决高并发下的各种生产问题,如下:
对订单正向链路进行压力测试
- 准备阿里云环境的jmeter压测脚本
- 在阿里云上基于PTS发起第一次压测
- 基于压测报告分析压测线程模型
- 订单正向链路压测失败接口的分析
- 订单正向链路压测后的数据库验证
并发压测下的数据错乱问题分析
- 根据库存数据错乱问题寻找分布式锁Bug
- 库存扣减锁粒度升级与Seata全局锁对比
- TCC异步提交导致的库存错乱问题
- 高并发下的库存错乱问题修复
并发压测下的性能分析和调优
- 生产环境1000TPS压测分析
- 生产机器压测下的负载分析
- 正向链路的各接口性能开销
- 未优化订单查询过慢拖死系统
- 订单查询基于索引的性能优化
5,开源项目源码剖析
除了项目实战,底层内功也同样重要,我会在项目课程中,也穿插着技术源码的讲解。
比如在订单项目中使用了Seata,课程中会有针对Seata源码的深入剖析,帮助大家更深入的掌握。
收获
项目实战:从架构方案设计、代码实战、生产压测、线上排查等多个方面,积累一套大型项目开发经验
面试准备:吃透课程的内容,可以围绕这个项目,编写一份 30K 以上的高含金量简历
适合人群
- 无学历背景、无大厂背景、简历无亮点的
- 常年中小公司,重复着CRUD的
- 工作年限和技术不成正比,焦虑怕卷不过年轻人的
- 想跳槽大公司,简历缺少高含金量项目的
- 不想躺平,但是又不知道怎么卷的
适合人群
- 无学历背景、无大厂背景、简历无亮点的
- 常年中小公司,重复着CRUD的
- 工作年限和技术不成正比,焦虑怕卷不过年轻人的
- 想跳槽大公司,简历缺少高含金量项目的
- 不想躺平,但是又不知道怎么卷的
不适合人群
不适合零基础,零基础同学请先补齐Java基础,原则是能够完成基本的CRUD
网上免费资源很多,不知道怎么入门的也可以找我,免费指导
项目大纲目录
- 一,项目介绍和学完后的收获
- 二,项目架构设计和需求分析
- 三,项目技术选型和工程构建
- 四,下单锁券和库存功能的开发
- 五,订单支付功能的设计和开发
- 六,订单超时未支付-定时关单功能设计和开发
- 七,订单履约功能的设计和开发
- 八,取消订单功能设计和开发
- 九,售后退货功能设计与开发
- 十,重构:高质量代码养成
- 十一,阿里云生产环境全链路压测
- 12,订单项目的流控体系和防雪崩体系设计实战
- 13,订单项目回顾总结+思路拓展
- 14,面试专题:Java高级工程师的职业发展以及如何避坑
- 15,面试专题:如何基于订单项目编写一份高含金量的简历
如果你简历刚好缺一份优秀的互联网实战项目,这份实战项目完整学完犹如你自己亲自做出来的项目,完全可以加到你简历里面,百分百加分项,这份实战项目花费几百万请多位鹅厂一线互联网资深架构师独家打造。
课纲和视频教程可以发你先学习,中途遇到不明白的地方可以随时可以问我!
有问题可以加我v:qiu241536 一起讨论