大型分布式订单系统项目实战

项目亮点

一、Spring Cloud Alibaba 在复杂业务中的实战

Spring Cloud Alibaba 整套技术栈落地到真实复杂的订单业务中,并深入分析里面的技术问题,设计对应的技术方案。以下是项目中的一些技术方案,所有方案都会在代码中进行落地。

技术方案1:使用 Seata AT 模式分布式事务,确保订单正向核心链路的数据强一致性

大型分布式订单系统项目实战_第1张图片

技术方案2:基于Redisson分布式锁解决多线程并发预支付问题

大型分布式订单系统项目实战_第2张图片

技术方案3:基于RocketMQ的重试和死信机制,解决支付回调到履约的消息丢失问题

大型分布式订单系统项目实战_第3张图片

技术方案4:基于RocketMQ的消息强顺序方案,解决订单履约状态通知乱序问题

大型分布式订单系统项目实战_第4张图片

技术方案5:超时自动取消订单的问题分析和技术方案设计

RocketMQ延迟消息+Redisson分布式锁+Elastic-Job分布式调度

大型分布式订单系统项目实战_第5张图片

技术方案6:取消订单的全链路问题分析和技术方案设计

双异步设计+分布式锁互斥+MQ高扩展+多路MQ故障重试与幂等

大型分布式订单系统项目实战_第6张图片

技术方案7:售后退货业务链路技术方案讲解

接口幂等和全链路数据一致性

大型分布式订单系统项目实战_第7张图片

技术方案8:生单链路中AT + TCC混合事务方案讲解

大型分布式订单系统项目实战_第8张图片

技术方案9:对订单逆向链路的技术方案进行重构

AT分布式事务+RocketMQ事务消息+MQ多路推送设计和幂等性保证

大型分布式订单系统项目实战_第9张图片

技术方案10:对支付回调到推送履约的技术方案进行重构

双异步设计+RocketMQ事务+Saga长事务

大型分布式订单系统项目实战_第10张图片

技术方案11:订单系统限流和防服务雪崩的技术方案

大型分布式订单系统项目实战_第11张图片

二、面向分布式全链路的高可靠架构设计

除了上述 Spring Cloud Alibaba 全套技术栈在复杂订单业务中进行代码落地之外,针对分布式架构,还将设计和落地面向分布式全链路故障设计的高可靠架构,具体如下:

1、订单系统Dubbo服务高并发压力优化

先演示没有优化过的Dubbo服务上云服务器部署以后,大流量过来产生的各种问题,比如服务挂掉,大量接口调用失败。然后分析和排查Linux OS、Dubbo线程池、数据库连接池、数据库索引和SQL语句、业务逻辑效率等各个环境,逐步进行优化,并演示优化后的效果。

2、订单系统引入Sentinel实现限流 + 防雪崩体系

讲解Sentinel的核心原理,二次开发Sentinel Dashboard推送到Nacos持久化限流配置的功能,并在订单系统中引入Sentinel进行熔断和限流。

3、大促活动网关层限流解决方案和代码落地

在阿里云上开启大流量压测,演示大促场景下,瞬时高并发如何击垮订单系统,同时评估出订单集群部署下,最大可抗的大促压力,设计出网关大促限流方案

基于spring cloud gateway实现一个订单系统前置网关,对订单系统集群部署做负载均衡,部署网关集群,在网关引入Sentinel实现限流方案,从入口处保护订单系统不被击垮

4、订单系统自适应流控解决方案和代码落地

演示订单系统单实例流量超载的问题,根据订单系统部署机器的配置、高压下的机器负载、业务逻辑的复杂度,基于Sentinel设计订单系统的自适应流控方案

根据机器负载,当前的响应时间,请求速率,自适应调整该机器流量阈值,实现柔性流控效果,同时部署演示大流量下,网关层限流后穿透到订单层的流量,在各个机器上的自适应流控效果。

5、订单集群柔性限流解决方案和代码落地

针对订单系统各个核心接口,评估出集群模式下每个接口的最大负载压力,演示出集群模式下的接口访问超载引发的问题。

基于Sentinel实现各个核心接口的柔性集群限流功能,对订单系统进行集群部署之后,对单接口进行超压力访问,演示接口级的柔性集群流控效果。

6、订单核心链路雪崩场景保护方案和代码落地

演示订单核心链路的服务雪崩问题和场景,单服务崩溃是如何引发服务链路全面崩溃的。

接着对订单核心链路的各个服务,比如订单服务、库存服务、营销服务、仓储服务、物流服务、风控服务,全部基于Sentinel设计服务链路防雪崩方案,避免核心链路任何一个服务崩溃引发的服务链路雪崩问题,同时演示防服务雪崩方案效果。

7、防恶意刷单自动发现与黑名单方案和代码落地

演示单用户恶意刷单行为和效果,接着基于Sentinel设计自动识别某个用户id恶意刷单问题,然后自动加入访问控制黑名单里,实现全自动化的识别与防止恶意刷单行为以及黑名单控制机制,禁止刷单行为。

8、库存系统异构存储架构TCC分布式事务解决方案和代码落地

互联网公司常见库存架构,是Redis+数据库异构存储架构,因此对订单服务强依赖的库存系统的双服务异构存储架构,会使用Seata实现TCC分布式事务解决方案

9、仓储系统老旧代码Saga分布式事务解决方案和代码落地

仓储系统一般逻辑非常复杂,而且会包含多个服务协同工作,通常对这类系统做分布式事务改造难度较大,老旧系统的分布式事务解决方案通常是引入Saga模式分布式事务,会基于Seata实现仓储系统多服务链路老旧代码的Saga分布式事务方案落地

三、高质量代码之道:修复代码中的“坏味道”

我们会在项目里故意埋下一些坑,一些“坏味道”的代码,然后分析这些“坏味道”代码存在的问题,会如何影响性能,接着再带你进行代码重构。

  • 高并发场景下for循环写数据库问题分析]
  • 高并发for循环RPC调用与服务雪崩问题
  • 代码重构之冗长方法抽取分离技巧
  • 代码重构之分布式锁与幂等检查强关联
  • 以支付回调为例进行整洁代码重构
  • 代码重构之MQ事务消息代码整洁之道

四、阿里云生产环境部署演示和性能压测

本部分我们会基于开源的jmeter,在阿里云环境下发起压力测试,分析和解决并发场景下数据错乱等一系列生产环境问题(如下),同时会进行线上参数调优演示,优化和提升系统性能。

  • 订单正向链路的压测分析
  • 并发压测下的库存数据错乱问题分析和解决
  • 库存日志错乱和扣减库存接口超时的问题分析
  • 未优化的订单查询过慢拖死系统的原因分析和性能优化
  • 订单系统高并发压测下的性能分析和调优

并且在整个订单系统压测结束后,我们会整理出一份详细的压测文档,里面记录了各种生产问题的故障发现、分析定位、故障解决的全过程,非常宝贵的一套生产实战经验。

项目大纲

第一章 项目概述:授课思路、代码规范、云端部署

第1集 订单架构演进分布式阶段课程设计

第2集 订单系统云服务器部署说明

第3集 订单系统本地代码运行与技术栈讲解

第4集 订单系统代码规范讲解

第5集 订单系统核心业务流程和模型讲解

第二章 生单链路中的技术问题分析和代码落地

第6集 核心生单链路业务代码分析

第7集 生单链路在云端环境运行演示

第8集 生单链路数据不一致问题分析

第9集 Seata AT 模式分布式事务原理分析

第10集 Seata AT 模式分布式事务读写隔离原理

第11集 Seata 本地锁与全局锁的死锁问题以及超时机制

第12集 Seata AT 模式读写隔离机制的深层原因

第13集 生单链路的 Seata AT 模式分布式搭建讲解

第14集 生单链路的 Seata AT 模式分布式事务演示

第15集 生单链路 Seata AT 分布式事务原理分析

第16集 生单链路 Seata AT 分布式事务是如何生效的?

第17集 生单链路 Seata AT 模式下的并发能力分析

第18集 生单链路如何解决库存全局锁争用问题?

第三章 预支付场景中的技术问题分析和代码落地

第19集 订单系统的预支付业务场景分析

第20集 订单系统的复杂支付回调流程分析

第21集 预支付和支付回调的并发问题分析

第22集 Redisson 分布式锁解决预支付和支付并发问题

第23集 预支付和支付流程的线上演示

第24集 支付成功到履约系统之间的 MQ 消息丢失问题

第25集 支付成功推送履约的代码分析与数据演示

第26集 推送履约系统场景下的 3 大问题梳理

第27集 推送履约系统失败后的 MQ 重试与死信机制

第四章 支付成功后的履约场景技术问题分析和代码落地

第28集 支付成功后的履约流程介绍

第29集 订单履约全流程画图分析梳理

第30集 订单的履约状态通知乱序问题分析

第31集 RocketMQ 中的消息强顺序方案和代码讲解

第32集 订单服务接收履约状态通知的重试和幂等

第五章 在阿里云生产环境进行部署演示

第33集 线上环境演示生单、支付以及履约全流程

第34集 订单正向流程中的辅助接口讲解

第35集 线上环境演示地址修改和删除订单

第六章 超时自动取消订单场景中的问题分析和代码落地

第36集 超时自动取消订单功能的业务背景

第37集 超时自动取消订单和支付的并发问题分析

第38集 分布式锁解决超时订单取消和支付的并发

第39集 超时自动取消订单代码流程和问题分析

第40集 RocketMQ 延迟消息实现原理分析

第七章 取消订单全链路技术问题分析和代码落地

第41集 取消订单的三种业务场景分析

第42集 最新代码优化点列表讲解

第43集 订单取消业务链路整体分析

第44集 为什么拦截履约要同步而释放资产是异步?

第45集 生单后就取消订单的代码流程分析

第46集 拦截履约和支付退款的代码流程分析

第47集 支付回调和取消订单的分布式锁互斥

第48集 支付回调和取消订单互斥下的两种场景分析

第49集 拦截履约的具体业务流程分析

第50集 拦截履约和取消订单的 Seata 事务原理分析

第51集 取消订单全链路 Seata 回滚原理与并发分析

第52集 支付退款时为什么要做双异步设计?

第53集 释放资产 MQ 高扩展性的设计思想

第54集 订单取消链路数据库事务与 MQ 消息不一致问题

第55集 释放资产多路 MQ 故障重试与幂等方案

第56集 双异步支付退款不一致问题分析

第57集 取消订单场景的阿里云线上环境演示

第58集 支付退款回调场景分析与阿里云线上演示

第八章 售后退货全链路业务场景分析和技术方案落地

第59集 售后退货业务场景分析

第60集 售后退货业务链路代码分析

第61集 重复发起售后退货请求的接口幂等分析

第62集 发起售后退货申请的代码流程图绘制

第63集 售后申请审核代码流程图绘制

第64集 释放库存、发起退款和释放优惠券逻辑分析

第65集 售后退货全链路数据一致性问题分析

第66集 阿里云环境演示生单、支付以及退货的全流程

第67集 客服查询售后工单进行审核的业务场景

第68集 撤销退货申请的分布式锁处理并发问题

第69集 仓储缺品退款场景的流程分析

第70集 仓储缺品退款流程的数据一致性问题

第九章 对生单链路中的技术方案进行重构

第71集 库存服务的数据库与缓存双写的代码讲解

第72集 如何发起 Seata TCC 异构存储分布式事务?

第73集 Seata TCC 异构存储分布式事务原理分析

第74集 库存服务的 Seata TCC 分布式事务实现

第75集 库存服务异构存储双写 TCC 异常分析

第76集 库存服务 TCC 事务的空悬挂问题

第77集 库存服务 TCC 二阶段重试的幂等问题

第78集 生单链路的 AT+TCC 混合事务方案

第79集 异步锁库存导致超卖的几种场景分析

第80集 生单链路 AT+TCC 混合事务原理分析

第81集 库存服务异构存储 TCC 双写代码讲解

第82集 阿里云线上环境演示生单链路 AT+TCC 模式

第83集 生单链路非分布式事务纯补偿方案

第84集 生单链路纯补偿方案的数据日志检查

第十章 支付回调到推送履约的技术方案重构

第85集 预支付到完成支付的业务流程完善

第86集 支付回调到推送履约的最新代码流程

第87集 支付回调到推送履约的双异步设计

第88集 基于推送履约讲解 RocketMQ 事务消息

第89集 RocketMQ 事务消息实现原理分析

第90集 支付回调到推送履约的 RocketMQ 事务消息代码

第十一章 在履约业务中引入Saga长事务

第91集 以履约场景为例引入 Saga 长事务概念

第92集 Seata Saga 长事务实现原理引入

第93集 履约流程的 Seata Saga 状态节点分析

第94集 履约流程的 Seata Saga 长事务流转分析

第95集 履约流程的 Seata Saga 失败补偿分析

第96集 Seata Saga 状态机流转原理分析

第97集 履约系统的 Seata Saga 代码实现分析

第98集 履约系统的 Seata Saga 空回滚和悬挂问题

第99集 订单正向链路新架构的线上演示

第十二章 订单逆向链路:手动取消订单的方案重构

第100集 再次梳理取消订单流程

第101集 拦截履约、取消订单与释放资产的强一致问题

第102集 取消订单与拦截履约的 AT 分布式事务

第103集 释放资产的 RocketMQ 事务消息

第104集 释放资产 MQ 的三大设计思想总结

第105集 释放资产 MQ 多路推送机制的设计思想

第106集 释放资产多路 MQ 幂等性保障

第107集 双异步退款链路强一致方案

第108集 取消订单新链路线上演示

第十三章 订单逆向链路:售后退货的技术方案重构

第109集 发起售后退货链路数据一致方案

第110集 审核售后退货链路数据一致方案

第111集 审核退货链路的阿里云线上环境演示

第十四章 订单逆向链路:缺品退款的技术方案重构

第112集 拣货出库和缺品退款的业务场景分析

第113集 缺品退款一致性事务代码流程分析

第114集 缺品退款流程的阿里云线上环境演示

第十五章 重构:修复代码中的一些“坏味道”

第115集 代码坏味道之 for 循环读写库问题引入

第116集 高并发场景下 for 循环写数据库问题分析

第117集 高并发 for 循环 RPC调用与服务雪崩问题

第118集 代码重构之冗长方法抽取分离技巧

第119集 代码重构之分布式锁与幂等检查强关联

第120集 以支付回调为例进行整洁代码重构

第121集 代码重构之 MQ 事务消息代码整洁之道

第十六章 基于XXL-Job分布式调度实现自动关单

第122集 自动关单功能业务流程梳理

第123集 XXL-Job 分布式调度系统架构原理分析

第124集 基于 XXL-Job 分布式调度的定时关单功能

第125集 订单系统与 XXL-Job 配合运行原理

第126集 从 XXL-Job 源码层面来验证关单分布式调度原理

第十七章 在阿里云生产环境对订单正向链路进行压力测试

第127集 准备阿里云生产环境的 jmeter 压测脚本

第128集 在阿里云上基于 PTS 发起第一次压测

第129集 阿里云和 jmeter 压测全流程讲解

第130集 基于真实压测报告分析压测线程模型

第131集 订单正向链路压测失败接口的分析

第132集 订单正向链路压测后的数据库验证

第十八章 并发压测下的库存数据错乱问题分析和修复

第133集 根据库存数据错乱问题寻找分布式锁Bug

第134集 库存扣减锁粒度升级与 Seata 全局锁对比

第135集 库存扣减 TCC Try 接口运行场景还原

第136集 库存扣减 TCC 多接口上下文传递原理

第137集 TCC 异步提交模式导致的库存错乱问题

第138集 生产环境并发压力下的库存错乱问题修复

第139集 TCC 模式下 Redis 库存数据错乱分析

第十九章 库存日志错乱和扣减库存接口超时的问题分析

第140集 生单链路偶发性故障以及 Dubbo 超时优化

第141集 生产环境并发问题修复后代码演示

第二十章 订单系统高并发压测下的性能分析和调优

第142集 订单系统生产环境 1000 TPS 压测分析

第143集 订单系统生产机器压测下的负载分析

第144集 订单正向链路的各接口性能开销分析

第145集 未优化订单查询过慢拖死系统的分析

第146集 订单查询基于索引的性能优化分析

第二十一章 订单系统的流控体系和防雪崩体系设计实战

第147集 基于订单系统压测分析多层级限流需求

第148集 订单系统多层次限流体系设计原理分析

第149集 基于生单链路分析服务雪崩问题原理

第150集 生单链路服务雪崩问题解决方案分析

第151集 结合订单系统高可用需求介绍 Sentinel

第152集 Sentinel 定义资源与规则的使用原理

第153集 Sentinel Dashboard 搭建步骤和说明

第154集 Sentinel 责任链模式工作原理分析

第155集 Sentinel 资源定义和各类规则介绍

第156集 基于 Sentinel 分析订单系统使用场景

第157集 网关与 Sentinel 整合后的资源自动识别分析

第158集 Sentinel 的网关限流规则详细说明

第159集 Sentinel 在网关中实现限流的原理分析

第160集 为订单系统入口网关增加 Sentinel 限流

第161集 Sentinel dashboard 二次开发支持 Nacos

第162集 订单系统自适应流控原理和实战演示

第163集 订单系统核心接口集群流控原理和演示

第164集 订单系统核心接口资源定义和集群流控

第165集 订单系统防服务雪崩的仓壁隔离和熔断降级

第166集 Sentinel 的热点参数发现与访问控制

项目部分内容

一、代码实战

基于Seata AT 模式解决生单链路中的下单、锁优惠券、锁库存的数据一致性问题

大型分布式订单系统项目实战_第12张图片

基于 Redisson 分布式锁解决预支付和支付回调并发问题

大型分布式订单系统项目实战_第13张图片

基于 Seata TCC 解决库存异构存储数据一致性问题

大型分布式订单系统项目实战_第14张图片

基于 RocketMQ 的事务消息解决支付成功触发履约消息不一致性问题

大型分布式订单系统项目实战_第15张图片

释放资产 MQ 多路推送机制的代码落地

大型分布式订单系统项目实战_第16张图片

Sentinel dashboard 二次开发支持 Nacos

大型分布式订单系统项目实战_第17张图片

二、生产环境压测

分析压测中的各种生产问题,整理成一套详细的压测文档。文档里记录了各种生产问题的故障发现、分析定位、故障解决的全过程,是一套非常宝贵的生产实战经验。

大型分布式订单系统项目实战_第18张图片

更多信息,请扫码了解:

大型分布式订单系统项目实战_第19张图片

你可能感兴趣的:(java,后端,分布式,java,spring,cloud)