别急着跑,这门课是专门给“慢热型”开发者的分布式补课

很多人觉得分布式系统深不可测,其实核心就两点:数据怎么不乱,服务怎么不挂。这门《Go 分布式实战》不讲空洞理论,专门拆解订单超时、事务不一致这些真实场景。如果你之前只写过单机 Go 程序,对数据库事务一知半解,或者听说过 CAP、BASE 但没动手写过,这门课就是为你准备的。它不追求让你一夜成神,而是带你一步步把分布式逻辑跑通。

先看哪里?跳过哪些?跟着这个节奏来

请一定从“微服务部署”和“订单超时机制”开始看,这是理解后续复杂问题的地基。如果时间太紧,可以先快速浏览 CAP 和 BASE 理论,直接跳到具体的技术实现,因为老师会讲得很细。但对于“两阶段提交”和"TCC 方案”,建议必须原原本本看,这部分代码逻辑最绕,是 Go 语言在分布式事务里的精髓,看不懂后面就没法写代码了。至于一些过于底层的网络协议细节,如果目前只关注业务实现,可以适当略过,不要在一开始就钻牛角尖。

资料怎么用?学完你能独立做什么?

手边的视频资料包只是辅助,千万别只看不动手。每一节关于 RocketMQ 或 TCC 的代码实现,都要在本地环境里敲一遍,把命令敲通,把代码跑通。特别是那个“订单服务 TCC 接口”和“库存归还逻辑重构”的环节,一定要尝试修改参数,看看数据一致性到底发生了什么变化。学完这门课,你至少能独立搭建一个基于 RocketMQ 的事务消息系统,能够处理高并发下的库存扣减与订单创建不一致问题,不再被分布式事务的坑吓退。记住,代码敲出来的感觉,才是真本事。

课程目录

阶段八:分布式系统核心、微服务的部署
1-1 为什么订单会有超时机制.mp4 77.45M
1-2 数据库事务的ACID特性.mp4 85.79M
1-3 分布式系统中出现哪些故障会导致数据不一致?.mp4 58.16M
2-1 cap理论.mp4 92.51M
2-2 BASE理论.mp4 60.69M
2-3 2pc两阶段提交分布式事务.mp4 62.54M
2-4 TCC分布式事务实现方案.mp4 63.08M
2-5 TCC分布式事务实现方案 - 订单服务的tcc接口.mp4 74.56M
2-6 TCC分布式事务实现方案 - tcc实现难点.mp4 73.41M
2-7 基于本地消息的最终一致性方案.mp4 69.11M
2-8 基于可靠消息的最终一致性.mp4 83.46M
2-9 最大努力通知方案.mp4 82.76M
1-1 mq的应用场景.mp4 94.93M
1-2 mq消息队列技术选型.mp4 76.57M
2-1 rocketmq的安装和配置.mp4 105.68M
2-2 rocketmq的基本概念.mp4 31.85M
2-3 rocketmq的消息类型.mp4 80.48M
2-4 go发送普通消息.mp4 91.98M
2-5 通过pushconsumer消费消息.mp4 99.97M
2-6 为什么要使用延迟消息解决库存超时归还问题?.mp4 49.93M
2-7 通过TransactionProducer发送事务消息.mp4 72.23M
2-8 测试rocketmq的事务消息.mp4 50.94M
3-1 订单新建过程中会出现哪些不可控因素导致数据不一致的问题?.mp4 81.80M
3-10 gorm定义具备嵌套对象的列.mp4 44.19M
3-11 库存服务的sell逻辑修改和归还逻辑重构.mp4 101.48M
3-12 测试库存服务和库存扣减历史记录.mp4 82.57M
3-13 测试rocketmq的事务回查后的库存归还.mp4 59.47M
3-14 在订单服务中发送延时消息解决库存归还的问题.mp4 95.30M
3-15 rocketmq中shutdown造成的坑.mp4 98.43M
3-2 先扣减库存和后扣减库存是否能解决分布式事务的问题?.mp4 36.72M
3-3 tcc在解决库存扣减中的问题.mp4 39.40M
3-4 基于可靠消息最终一致性方案在库存服务上的不足.mp4 58.18M
3-5 如何通过基于可靠消息实现库存的一致性.mp4 42.28M
3-6 在createorder中发送事务消息.mp4 63.14M
3-7 ExecuteLocalTransaction本地事务的逻辑.mp4 79.32M
3-8 本地事务消息回查应该如何做?.mp4 32.05M
3-9 库存扣减服务中表结构的设计.mp4 70.90M
4-1 什么是服务雪崩.mp4 63.45M
4-2 超时、重试和幂等性机制.mp4 64.33M
4-3 哪些情况下需要考虑幂等性问题.mp4 49.43M
4-4 使用grpc-middleware实现grpc调用的重试.mp4 64.44M
4-5 常用的幂等性解决方案.mp4 74.31M
1-1 为什么我们需要链路追踪.mp4 75.47M
1-2 链路追踪技术选型.mp4 45.46M
1-3 jaeger的安装和架构介绍.mp4 67.13M
1-4 opentracing中的tracer、span、spancontext.mp4 111.91M
2-1 go通过jaeger-client发送单个span.mp4 93.63M
2-2 go发送多级嵌套span.mp4 63.39M
2-3 go下通过grpc发送span消息.mp4 74.47M
2-4 gin中添加拦截器实现jaeger注入.mp4 142.18M
2-5 修改grpc_opentracing源码.mp4 114.75M
2-6 配置订单服务的web层逻辑.mp4 58.67M
2-7 grpc集成opentracing的原理.mp4 41.16M
2-8 grpc的server端如何获取客户端的span.mp4 145.38M
3-1 什么是限流、熔断和降级.mp4 105.84M
3-2 sentinel和hystrix对比.mp4 35.45M
3-3 sentinel的qps限流.mp4 127.09M
3-4 sentinel的预热和冷启动.mp4 128.34M
3-5 sentinel的Throttling配置策略.mp4 31.34M
3-6 sentinel的熔断接口.mp4 67.43M
3-7 sentinel的熔断接口-基于错误数.mp4 71.41M
3-8 sentinel的熔断接口-基于错误率和慢请求.mp4 50.08M
3-9 gin集成sentinel实现限流.mp4 65.58M
1-1 什么是api网关.mp4 34.82M
1-2 api网关具备的功能有哪些?.mp4 30.18M
1-3 api网关技术选型.mp4 54.48M
1-4 kong的安装.mp4 119.48M
2-1 kong的8001、800和1337端口号的关系.mp4 54.01M
2-2 基本的路由转发配置.mp4 68.67M
2-3 kong的service、routes、upstream的请求过程.mp4 38.99M
2-4 kong集成consul实现服务发现和负载均衡.mp4 47.13M
2-5 kong配置jwt实现登录校验.mp4 106.06M
2-6 kong配置反爬和ip黑名单.mp4 52.10M
3-1 敏捷开发中的持续集成痛点.mp4 77.68M
3-10 定时构建和轮询SCM构建.mp4 47.93M
3-11 参数化pipeline构建项目.mp4 31.92M
3-2 安装jenkins和关闭防火墙.mp4 64.75M
3-3 jenkins构建服务器流程.mp4 67.18M
3-4 安装jenkins常用插件.mp4 48.94M
3-5 通过free style构建项目.mp4 83.70M
3-6 将构建服务器上的代码上传到运行服务器.mp4 101.19M
3-7 通过pipeline实现持续集成.mp4 104.42M
3-8 通过jenkinsfile管理构建pipeline脚本.mp4 35.87M
3-9 通过远程和其他工程触发构建.mp4 39.01M
4-1 有哪些服务器我们需要部署?.mp4 66.52M
4-2 前端代码上传到git并启动.mp4 55.58M
4-3 nginx中部署vuejs.mp4 141.71M
4-4 jenkens部署vuejs项目.mp4 107.13M
4-5 通过go build构建go微服务.mp4 127.17M
4-6 发布go项目到远程服务器上.mp4 47.65M
4-7 通过shell脚本启动gin服务.mp4 71.91M
阶段二:租辆酷车小程序与TypeScript
1-1 小程序的优缺点.mp4 75.64M
1-2 小程序营销案例.mp4 34.38M
1-3 小程序账号配置.mp4 65.31M
1-4 小程序开发工具.mp4 56.76M
1-5 vscode的安装和配置.mp4 54.17M
1-6 小程序的配置.mp4 37.98M
2-1 小程序的运行机制与setdata渲染(上).mp4 82.81M
2-2 小程序的运行机制与setdata渲染(下).mp4 97.69M
3-1 小程序的生命周期.mp4 96.78M
3-2 页面的生命周期和页面栈.mp4 126.66M
3-3 调试工具的使用.mp4 59.61M
4-1 给小程序添加地图组件(上).mp4 130.19M
4-2 给小程序添加地图组件(下).mp4 74.09M
4-4 Docker简介.mp4 82.87M
4-5 汽车位置实时更新展示.mp4 105.23M
第1章 TS环境搭建与配置
第2章 Typescript与javascript
第3章 Typescript语法基础
第4章 TS进阶之数组、对象、函数与方法
03.精通Typescript
第1章 初识TS函数式编程
第2章 高阶函数与函数闭包
第3章 函数式编程总结与应用
第4章 数组的变换
第5章 Promise
第6章 TS之面向对象:接口、类、泛型
第7章 TS总结
04.前端知识体系速成
第1章 租辆酷车小程序原型的开发目标
第2章 WXML模版与CSS入门
第3章 快速掌握最重要的CSS知识点
阶段六:从0到1实现完整的微服务框架
01.用户服务的grpc服务
1-1 定义用户表结构.mp4 80.98M
1-10 通过flag启动grpc服务.mp4 51.01M
1-11 批量生产用户.mp4 34.71M
1-12 测试用户微服务接口.mp4 77.05M
1-13 课后作业.mp4 34.28M
1-2 同步表结构.mp4 37.08M
1-3 md5加密.mp4 104.00M
1-4 md5盐值加密解决用户密码安全问题.mp4 113.23M
1-5 定义proto接口.mp4 98.49M
1-6 用户列表接口.mp4 118.39M
1-7 通过id和mobile查询用户.mp4 40.50M
1-8 新建用户.mp4 47.08M
1-9 修改用户和校验密码接口.mp4 62.01M
02.用户服务的web服务
1-1 新建项目和目录结构构建.mp4 25.90M
1-10 viper集成到gin的web服务中.mp4 93.24M
1-2 go高性能日志库 - zap使用.mp4 89.17M
1-3 zap的文件输出.mp4 50.56M
1-4 集成zap和理由初始到gin的启动过程 - 1.mp4 84.81M
1-5 集成zap和理由初始到gin的启动过程 - 2.mp4 85.66M
1-6 gin调用grpc服务-1.mp4 124.91M
1-7 gin调用grpc服务-2.mp4 131.52M
1-8 配置文件 - viper.mp4 142.40M
1-9 viper的配置环境开发环境和生产环境隔离.mp4 112.38M
2-1 表单验证的初始化.mp4 154.77M
2-10 阿里云发送短信.mp4 123.82M
2-11 redis保存验证码.mp4 114.95M
2-12 用户注册接口.mp4 118.40M
2-2 自定义mobile验证器.mp4 76.91M
2-3 登录逻辑完善.mp4 66.50M
2-4 session机制在微服务下的问题.mp4 49.38M
2-5 json web token的认证机制.mp4 61.87M
2-6 集成jwt到gin中.mp4 118.43M
2-7 给url添加登录权限验证.mp4 86.59M
2-8 如何解决前后端的跨域问题.mp4 128.61M
2-9 获取图片验证码.mp4 134.59M
03.服务注册
发现、配置中心、负载均衡
阶段七:微服务实现电商系统
01.商品微服务的grpc服务
1-1 需求分析-数据库实体分析.mp4 56.47M
1-10 品牌新建,删除、更新.mp4 74.18M
1-11 轮播图的查询、新增、删除和修改.mp4 20.97M
1-12 商品分类的列表接口 - 1.mp4 110.06M
1-13 商品分类的列表接口 - 2.mp4 83.98M
1-14 获取商品分类的子分类.mp4 88.25M
1-15 商品分类的新建,删除和更新接口.mp4 29.82M
1-16 品牌分类相关接口.mp4 96.98M
1-17 商品列表页接口 - 1.mp4 102.31M
1-18 商品列表页接口 - 2.mp4 84.70M
1-19 商品列表页接口 - 3.mp4 101.50M
1-2 需求分析-商品微服务接口分析.mp4 57.68M
1-20 批量获取商品信息、商品详情接口.mp4 69.62M
1-21 新增、修改和删除商品接口.mp4 45.22M
1-3 商品分类表结构设计应该注意什么?.mp4 123.40M
1-4 品牌、轮播图表结构设计.mp4 70.97M
1-5 商品表结构设计.mp4 99.13M
1-6 生成表结构和导入数据.mp4 42.52M
1-7 定义proto接口.mp4 105.83M
1-8 快速启动grpc服务.mp4 108.98M
1-9 品牌列表实现.mp4 126.04M
02.商品微服务的gin层和oss图片服务
1-1 快速将用户的web服务转换成商品的web服务.mp4 108.36M
1-10 商品分类的接口.mp4 129.44M
1-11 轮播图接口和yapi的快速测试.mp4 78.55M
1-12 品牌列表页接口.mp4 38.53M
1-13 品牌分类接口.mp4 68.64M
1-2 商品的列表页接口 - 1.mp4 87.18M
1-3 商品的列表页接口 - 2.mp4 78.44M
1-4 如何设计一个符合go风格的注册中心接口.mp4 134.52M
1-5 gin的退出后的服务注销.mp4 31.66M
1-6 用户的web服务服务注册和优雅退出.mp4 31.97M
1-7 新建商品.mp4 113.67M
1-8 获取商品详情.mp4 57.38M
1-9 商品删除,更新.mp4 95.46M
2-1 为什么要使用阿里云oss.mp4 43.52M
2-2 oss的基本概念介绍.mp4 60.62M
2-3 使用代码控制文件上传.mp4 105.54M
2-4 前端直传oss的流程.mp4 89.82M
2-5 gin集成前端直传文件.mp4 126.44M
2-6 为什么我们需要内网穿透.mp4 50.80M
2-7 内网穿透技术解决前端直传的回调.mp4 84.11M
2-8 将oss集成到gin微服务中.mp4 86.87M
03.库存服务和分布式锁
第1章 库存服务
第2章 分布式锁
04.订单和购物车微服务
第1章 订单和购物车服务-service
第2章 订单和购物车服务-web层
05.支付宝支付、用户操作微服务、前后端联调
第1章 支付宝支付
第2章 收藏、收货地址、留言服务开发
06.elasticsearch实现搜索微服务
第1章 elasticsearch常用接口
第2章 将elasticsearch集成到项目中
阶段三:“租辆酷车”共享出行产品设计与研发
01.租辆酷车小程序-前端设计初级
1-1 框架的选择.mp4 144.07M
2-1 首页地图页的实现(上).mp4 101.67M
2-2 首页地图页的实现(下).mp4 78.37M
2-3 汽车位置的移动.mp4 127.08M
3-1 注册页面布局.mp4 136.05M
3-2 注册表单的实现_1.mp4 86.39M
3-3 注册表单的实现_2.mp4 65.68M
3-4 注册页面的状态转换.mp4 82.72M
4-1 开锁页面的实现_1.mp4 80.80M
4-2 开锁页面的实现_2.mp4 84.21M
02.租辆酷车小程序-前端设计进阶
第1章 行程页面布局与行程计费设计实现
第2章 实战事件参数绑定与页面跳转
第3章 页面导航设计与实现
第4章 前端核心能力拓展-自定义组件
第5章 前端总结
03.租辆酷车后端-接入微服务GRPC
第1章 Go语言vscode配置
第2章 初识微服务框架gRPC与protobuf
第3章 微服务gRPC进阶
第4章 小程序结合微服务应用实战
04.微服务与存储设计+实战登录服务
第1章 微服务进阶实战-租辆酷车服务划分设计与实现
第2章 租辆酷车小程序存储设计实战-基于NoSQL之MogoDB
第3章 租辆酷车登录服务设计与实战
05.租辆酷车权限设计与JWT实战
第1章 权限验证JWT与RSA非对称加密算法
第2章 JWT+Go语言应用
第3章 Context上下文与登录拦截实战
第4章 重构实践+Identifier Type设计模式应用
第5章 客户端登录携带token+登录重试实战
06.租辆酷车后端-行程服务实战+后端最佳实践
第1章 行程服务的标准化流程
第2章 批量获取和乐观锁保护
第3章 行程服务整合
07.租辆酷车后端-身份服务与认证实战+云存储
第1章 租辆酷车-身份服务设计与实战
第2章 租辆酷车-云存储设计与实战
第3章 租辆酷车-身份认证设计与实战
阶段四:“租辆酷车”架构演进之高性能位置更新与服务部署
01.租辆酷车-实时位置服务
1-1 汽车服务引导.mp4 23.39M
1-2 物联网简介.mp4 183.62M
2-1 RabbitMQ简介.mp4 140.12M
2-2 使用go语言进行收发.mp4 99.85M
2-3 使用go语言实现pub-sub.mp4 59.24M
3-1 汽车服务的设计.mp4 112.23M
3-2 汽车服务的定义.mp4 86.15M
3-3 汽车服务CRUD的实现.mp4 160.74M
3-4 汽车状态更新的发布.mp4 79.90M
3-5 汽车状态更新的发布.mp4 66.77M
4-1 汽车状态模拟1.mp4 89.33M
4-2 汽车状态模拟.mp4 77.81M
4-3 汽车状态模拟.mp4 85.21M
02.租辆酷车-实时位置更新的处理和展示
1-1 WebSocket简介.mp4 137.64M
1-2 WebSocket链接的断开.mp4 62.32M
2-1 给汽车服务添加websocket.mp4 138.30M
2-2 客户端的开锁处理.mp4 56.79M
3-1 位置模拟服务的使用.mp4 65.07M
3-2 位置实时更新的后端实现.mp4 135.28M
3-3 行程位置更新.mp4 88.55M
3-4 用户身份的Impersonation.mp4 80.14M
3-5 控制GRPC Gateway的头部映射.mp4 74.34M
4-1 首页头像的实时更新.mp4 130.54M
4-2 首页头像实时更新的展示.mp4 56.28M
4-3 汽车服务及全部开发总结.mp4 137.24M
03.租辆酷车服务的k8s集群部署
1-1 Kubernetes的历史.mp4 103.24M
1-2 集群的配置及版本.mp4 125.21M
1-3 kubectl的安装.mp4 26.18M
1-4 用kind来配置本地集群.mp4 50.15M
1-5 用kubectl来连接集群.mp4 46.77M
1-6 容器.mp4 141.66M
1-7 节点及物理层.mp4 58.82M
1-8 服务与网络.mp4 66.18M
2-1 构建Docker镜像.mp4 140.89M
2-2 Dockerfile指令详解.mp4 51.35M
2-3 为Docker镜像瘦身.mp4 67.67M
2-4 flag与环境变量的使用.mp4 106.66M
2-5 提取所有的参数.mp4 62.78M
2-6 为所有服务制作镜像.mp4 73.61M
2-7 上传镜像.mp4 63.52M
阶段五:电商项目- 微服务基础
01.从0开始理解rpc和grpc
1-1 课程学习前的说明 - 很重要!!.mp4 27.03M
1-10 windows下安装nodejs开发环境.mp4 29.44M
1-11 linux下安装和配置nodejs开发环境.mp4 28.26M
1-12 代码提示神器 - kite的安装和配置.mp4 40.94M
1-2 课程中需要用到的开发环境介绍.mp4 22.29M
1-3 windows中安装centos7虚拟机.mp4 100.88M
1-4 xshell的安装和使用.mp4 25.33M
1-5 git的安装和配置.mp4 33.43M
1-6 docker和docker-compose的安装.mp4 69.41M
1-7 mysql和navicat的安装和配置.mp4 50.94M
1-8 windows下安装go和goland的配置 - 很重要!!.mp4 152.70M
1-9 linux下go开发环境搭建.mp4 28.96M
2-1 gopath开发模式和go modules开发模式对比.mp4 145.09M
2-2 go编码规范-1.mp4 124.74M
2-3 go编码规范-2.mp4 94.98M
2-4 什么是rpc?rpc开发的挑战是什么?-1.mp4 150.67M
2-5 什么是rpc?rpc开发的挑战是什么?- 2.mp4 128.42M
2-6 通过http完成add服务端的功能.mp4 97.78M
2-7 通过http完成add客户端的功能.mp4 43.92M
2-8 rpc架构技术要点.mp4 34.24M
3-1 go快速体验rpc开发.mp4 138.60M
3-2 替换rpc的序列化协议为json.mp4 125.82M
3-3 替换rpc的传输协议为http.mp4 56.90M
3-4 进一步改造rpc调用的代码-1.mp4 108.36M
3-5 进一步改造rpc调用的代码-2.mp4 101.96M
4-1 什么是grpc和protobuf.mp4 78.87M
4-2 grpc开发环境的搭建.mp4 46.13M
4-3 goland下配置protobuf插件.mp4 63.51M
4-4 protobuf和json的直观对比.mp4 116.90M
4-5 为什么我们需要安装protoc和protoc-gen-go?.mp4 75.87M
4-6 go下grpc快速体验.mp4 148.37M
4-7 grpc的流模式的定义.mp4 155.43M
4-8 grpc的单向流,双向流代码实现.mp4 131.60M
02.grpc和protobuf进阶
1-1 protobuf的基本类型和默认值.mp4 59.34M
1-10 grpc拦截器.mp4 122.44M
1-11 通过拦截器和metadata实现grpc的auth认证.mp4 101.64M
1-12 grpc的验证器.mp4 89.28M
1-13 1-12-2grpc的验证器.mp4 92.62M
1-14 grpc的状态码.mp4 35.17M
1-15 grpc中的错误处理.mp4 53.87M
1-16 grpc的超时机制.mp4 41.47M
1-17 protoc生成的go的源码里面有什么?.mp4 74.97M
1-2 option go_package的作用.mp4 39.42M
1-3 proto文件同步时的坑.mp4 99.08M
1-4 proto文件中import另一个proto文件?.mp4 71.81M
1-5 嵌套的message对象.mp4 52.92M
1-6 protobuf中的enum枚举类型.mp4 43.17M
1-7 map类型.mp4 29.24M
1-8 使用protobuf内置的timestamp类型.mp4 43.07M
1-9 grpc的metadata机制.mp4 120.84M
03.yapi文档管理、gorm详解
1-1 如何启动电商系统和后台管理系统.mp4 37.04M
1-2 后台管理系统需求.mp4 28.62M
1-3 电商系统需求分析.mp4 35.92M
2-1 单体应用如何部署?.mp4 71.03M
2-2 单体应用开发痛点.mp4 82.80M
2-3 单体应用的架构演变.mp4 106.28M
2-4 服务拆分变动.mp4 50.60M
2-5 微服务的基本拆分.mp4 57.21M
2-6 分层微服务架构.mp4 66.83M
2-7 微服务需要解决的问题 - 重要!!.mp4 118.27M
3-1 前后端分离的系统开发演变过程.mp4 55.73M
3-2 接口文档管理之痛.mp4 42.93M
3-3 yapi的安装和配置.mp4 77.52M
3-4 yapi基本功能使用.mp4 104.64M
3-5 接口的导入和导出.mp4 61.61M
4-1 什么是orm?如何正确看待orm?.mp4 91.76M
4-10 gorm的基本查询.mp4 117.33M
4-11 gorm的更新操作.mp4 59.49M
4-12 gorm的软删除细节.mp4 58.56M
4-13 表的关联插入.mp4 91.30M
4-14 通过preload和joins查询多表.mp4 49.79M
4-15 has many关系.mp4 100.93M
4-16 gorm处理多对多的关系.mp4 99.91M
4-17 gorm的表名自定义、自定义beforecreate逻辑.mp4 67.66M
4-2 gorm连接数据库.mp4 72.13M
4-3 快速体验auto migrate功能.mp4 77.46M
4-4 gorm的Model的逻辑删除.mp4 59.31M
4-5 通过NullString解决不能更新零值的问题.mp4 49.67M
4-6 表结构定义细节.mp4 90.44M
4-7 通过create方法插入记录.mp4 81.98M
4-8 批量插入和通过map插入记录.mp4 62.91M
4-9 通过take,first、last获取数据.mp4 71.27M
04.gin快速入门
1-1 gin的helloworld体验.mp4 62.13M
1-10 表单中文翻译的json格式化细节.mp4 53.47M
1-11 自定义gin中间件.mp4 96.19M
1-12 通过abort终止中间件后续逻辑的执行.mp4 65.75M
1-13 gin的中间件原理源码分析.mp4 55.26M
1-14 gin返回html.mp4 147.56M
1-15 加载多个html文件.mp4 80.11M
… 共 480 条