先说清楚:这门课到底还能不能学

这门原始课程基于 Go-Micro 框架,但该框架早已停更,课程本身也已被 Kubernetes 相关体系课接管。如果你是冲着 Go-Micro 去的,建议直接放弃,不要在停更技术上耗费精力。但这份资料并没有失去价值,它保留了一个完整的微服务项目骨架:从服务注册与发现、服务间通信、HTTP API 网关开发到三层架构落地,这些核心环节在当前技术栈中依然适用。因此,这份资料更适合作为“微服务架构拆分思路”的参考案例,而不是可以直接照抄的生产级模板。

解决什么问题与适合什么基础

这份资料解决的核心问题,是很多开发者学完 Go 语法后,不知道怎么把一个单体系统拆成多个独立服务,以及服务之间到底怎么互相调用。它演示了一个教育类网站前台的业务拆法:课程服务、用户服务等如何各自独立运行,又如何通过 gRPC 通信,最终通过自研网关统一对外暴露接口。它适合已经掌握 Go 基础语法、能写简单 HTTP 接口,并且对 gRPC 和 etcd 有基本概念的开发者。如果你完全没碰过分布式,直接看这套资料会有些吃力,建议先补齐 gRPC 基本调用和 etcd 服务注册的原理。

建议怎么看与资料怎么配合练习

原课程第一章的网关部分可以直接跳过,因为后续章节会带你从头开发自研网关,这块才是真正值得动手的部分。建议先看服务注册与发现那几节,理解服务如何向 etcd 注册、如何被其他服务发现。接着重点练习服务间的基本调用和 HTTP API 调用 gRPC 服务的流程,最后把自研网关部分完整跟一遍。配合练习时,不要只跟着敲代码,要把重点放在“为什么要这样拆分”上。学完后,你应该能独立完成一个基础工作:把一个包含两三个业务模块的单体 Go 项目,拆分成独立的微服务,配置好服务注册,并用自研网关统一路由。虽然底层框架已过时,但拆分思路和调用链路完全可以迁移到当前的 Kubernetes 体系中去理解。


[本课程已过时,由K8S课程全面接管。由于go-micro框架停更,本课程也升级成最新的技术栈,并全面基于k8s]本课程是一个集大成课程,把之前开的零散的知识点

课程目录

*   第一章:准备工作和go-micro复习(第一章网关部分可以不学,第三章我们自己开发网关) cplist.push('第一章:准备工作和go-micro复习(第一章网关部分可以不学,第三章我们自己开发网关)');/

  *   第1讲:开张课和技术栈说明

  *   第2讲:复习课:运行第一个服务(grpc)

  *   第3讲:[请同时看下第17课]使用etcd注册服务、web管理界面、api网关

  *   第4讲:[练习课]快速创建第二个服务:课程服务

  *   第5讲:服务和服务之间的基本调用

  *   第6讲:创建”单纯”的http api、调用grpc服务

  *   第7讲:go-micro快速集成gin开发http api

  *   第8讲:go-micro中集成三层架构开发模式

  *   第9讲:go-micro配置(1):读取JSON配置、映射struct

  *   第10讲:go-micro配置(2):读取yaml配置、监听文件修改

  *   第11讲:使用nacos配置中心(1):初步单机使用

  *   第12讲:规划项目中的配置策略(1):系统配置

  *   第13讲:使用配置中心后的网站初始化改进(上)

  *   第14讲:使用配置中心后的网站初始化(丝滑版)

  *   第15讲:配置中心下集成ORM、数据库初始化

  *   第16讲:配置中心初步集成go-micro、gin中间件等

  *   第17讲:go-micro v2.5后的网关、服务、DashBoard调整方式

  *   第18讲:配置中心修改重载策略:数据库为例、主服务降级

*   第二章:课程模块开发、极致增删改查 cplist.push('第二章:课程模块开发、极致增删改查');/

  *   第19讲:课程主表设计、protobuf+gorm日期格式处理

  *   第20讲:数据库查询”Mapper”的代码编写方式

  *   第21讲:[练习课]实现课程详细取值API

  *   第22讲:商品计数表的设计、功能说明

  *   第23讲:商品详细页:多个查询的代码技巧

  *   第24讲:上节课代码勘误和调整

  *   第25讲:ssr(1):前端技术栈选型、基本环境

  *   第26讲:ssr(2):前端UI框架的套路说明、导航栏

  *   第27讲:ssr(3):首页基本形式、功能点

  *   第28讲:课程短评功能、表初步设计

  *   第29讲:课程测试数据、配置前端路由、拆分首页和列表页

  *   第30讲:配置axios、请求API加载课程列表

  *   第31讲:课程列表API:带分页信息输出

  *   第32讲:课程列表API:关于参数的验证、定制错误页面

  *   第33讲:课程列表分页码的生成、监听page参数

*   第三章:自建基本http api网关 cplist.push('第三章:自建基本http api网关');/

  *   第34讲:网关基本结构、自建http api网关基本点、反向代理

  *   第35讲:路由模块(1):基本结构、配置文件形式、通配符

  *   第36讲:路由模块(2):规范化匹配判断、支持头判断

  *   第37讲:路由模块(3):使用反射简化路由判断

  *   第38讲:filter(1):过滤器的程序架构、效果测试

  *   第39讲:filter(2):如何配置? 如何注册过滤器?

  *   第40讲:filter(3):过滤器参数的解析

  *   第41讲:filter(4):开发头过滤器、参数解析

  *   第42讲:【选】插件化(1):和javascript进行交互

  *   第43讲:【选】插件化(2):插件机制、使用gin测试JS插件

  *   第44讲:【选】插件化(3):把js插件无缝整合到自撸API网关中

  *   第45讲:[课后作业] 插件化(4):让JS插件也支持参数

  *   第46讲:网关过滤器支持按顺序执行

  *   第47讲:过滤器排序、示例:修改Query参数插件

  *   第48讲:修改代码结构实现响应过滤器

  *   第49讲:练习:快速完成一个跨域过滤器

  *   第50讲:手撸网关之服务发现(1):获取服务、随机选择

  *   第51讲:手撸网关之服务发现(2):集成到网关中

  *   第52讲:手撸网关之服务发现(3):获取Grpc服务信息、手工调用

  *   第53讲:自撸网关之服务发现(4):网关支持grpc转发

*   第四章:整合阿里Sentinel cplist.push('第四章:整合阿里Sentinel');/

  *   第54讲:Sentinel的整合(1):初始化代码、QPS限制

  *   第55讲:加载配置、Gin API限流示例

  *   第56讲:Gin API限流(2):匀速排队

  *   第57讲:Gin API限流(3):热点参数限流实例

  *   第58讲:熔断器的使用(1):超时降级

  *   第59讲:熔断器的使用(2):出错/异常熔断

*   第五章:链路跟踪学习(jaeger) cplist.push('第五章:链路跟踪学习(jaeger)');/

  *   第60讲:链路跟踪之jaeger入门:docker部署

  *   第61讲:使用gin上报数据到jaeger(上)

  *   第62讲:使用gin上报数据到jaeger(下)

  *   第63讲:使用tag查看”下单失败”的订单号

*   第六章:监控工具prometheus入门 cplist.push('第六章:监控工具prometheus入门');/

  *   第64讲:监控工具:Prometheus安装

  *   第65讲:Prometheus基础(2):监控mysql(初步)

  *   第66讲:数据可视化工具:Grafana初步安装

  *   第67讲:gin集成监控:度量指标、计数器的实现