




资源介绍
视频数量:49个
总时长:4小时57分
课程介绍:
Go分布式微服务实战
想象一下,你刚加入一家快速成长的创业公司,老板突然跟你说:“我们要重构系统,从单体架构改成微服务架构,用Go语言实现。”这时候你可能会想,微服务我听说过,但到底怎么用Go来实现?服务之间怎么通信?数据库怎么部署?怎么让这些服务在Docker里跑起来?
别急,这门课就是来解决这些问题的。整个课程大概5个小时,手把手带你从零开始,用Go构建一个完整的分布式微服务系统。这个系统不是那种“Hello World”级别的玩具项目,而是包含了认证服务、日志服务、邮件服务、消息队列这些真实生产环境中必备的组件。
先说说整个系统的入口,也就是Broker Service(代理服务)。你可能会问,为什么需要一个代理服务?想象一下,如果你有五六个微服务,每个服务都有自己的端口和接口,客户端要记住所有这些地址和端口,那得多麻烦。代理服务就像一个统一的前台,所有请求都先经过它,它再负责把请求转发到具体的服务。这个章节里,你会学到怎么创建代理服务,怎么标准化JSON请求和响应的格式,怎么给服务加上Docker支持,怎么用Docker Compose来管理多个容器。这些内容看起来基础,但正是理解整个微服务架构的起点。
接下来是最核心的认证服务。一个完整的系统怎么能没有用户认证呢?这个章节会带你集成Postgres数据库到认证服务里。Go语言连接数据库的方式跟其他语言有些不同,这里用的是pgx驱动,是目前性能最好的Postgres驱动之一。你会学到怎么设计用户数据的存储结构,怎么实现登录和注册的接口。更重要的是,怎么让代理服务和认证服务通过REST API进行通信。服务之间的通信是微服务里最核心的问题之一,你得亲眼看到代码是怎么写的,才能真正理解其中的门道。
日志服务看起来不起眼,但生产环境中绝对离不开它。你有没有遇到过线上出了bug,但怎么都复现不了的尴尬?就是因为日志没记清楚。这个章节里,日志服务会用MongoDB来存储日志数据。MongoDB是一种NoSQL数据库,它灵活的结构特别适合存储日志这种半结构化的数据。你会学到怎么连接MongoDB,怎么设计日志的存储格式,怎么让其他服务通过HTTP调用来记录日志。
邮件服务也是很多系统离不开的模块。注册要发验证码密码要修改要发链接,营销活动要发通知。但真实的邮件发送涉及到SMTP配置、邮件模板、退订处理这些麻烦事。课程里用的是MailHog这个工具,它能模拟真实的邮件发送环境,让你在开发阶段就能测试邮件功能,而不用担心真的发出一堆测试邮件。
到这里,你可能会想,服务之间的通信用HTTP够用吗?答案是对于简单的场景确实够用,但如果你的系统需要高性能、低延迟的内部通信,HTTP就显得有点笨重了。这就引出了课程后半部分的重点:RabbitMQ消息队列和RPC通信。
RabbitMQ是一种消息中间件,它能让服务之间通过“发布-订阅”的模式来通信。想象一下,当一个用户注册成功的时候,你可能需要同时做很多事情:发送欢迎邮件、更新推荐系统、记录用户行为分析。如果这些都等着每个服务处理完再返回,那响应时间会非常长。但如果用消息队列,注册成功后只需要发一条消息“用户注册了”,然后各个服务自己去队列里拿消息处理,响应时间就能大大缩短。这个章节会教你设置RabbitMQ基础设施,配置消息的发布和消费,让你的系统真正变成异步的、松耦合的。
RPC是另一种服务间通信的方式,跟HTTP比起来,它更轻量,序列化效率更高。课程里会教你用Go标准库实现RPC调用,从Logger服务开始,让它支持RPC请求,然后从Broker服务发起RPC调用。你会看到RPC和HTTP在实现上的区别,以及什么时候该用哪种方式。
最后一个重头戏是gRPC。这几年gRPC在微服务领域越来越火,它基于HTTP/2协议,支持双向流、多路复用这些特性,性能比传统HTTP提升明显。gRPC使用Protocol Buffers作为接口定义语言,你需要先写一个proto文件,然后用工具生成Go代码。这个过程听起来复杂,但课程里会一步步带你做,你会学到怎么定义服务接口,怎么生成代码,怎么实现服务端和客户端。
整个课程学下来,你会对Go语言在微服务领域的应用有一个系统性的认识。不再是零散的知识点,而是真正理解为什么要有微服务架构,各个服务之间怎么协作,数据怎么流转,系统怎么部署。这些经验对于找后端开发工作或者在实际项目中应用微服务架构都非常有帮助。
这门课适合已经掌握了Go语言基础语法,想进阶到实际工程项目的开发者。也适合对微服务架构感兴趣,但一直被各种概念搞得头晕的朋友。课程里的每一个知识点都是通过实际编码来讲解的,看完你就知道代码到底长什么样,而不是只停留在概念层面。