Go项目搭建和整洁开发实战

专栏介绍

本课程是教大家用Go语言从零开始搭建项目和做需求开发的实战课程,全课程使用的技术栈均为实际开发所常用的组件和框架如:Gin、Viper、Zap、GORM、go-redis 、lo 等等。

课程主要关注实战,平时大家看过的知识总是觉得看了就看了,但是自己用不起来,比如看了各种架构理论、设计模式,里面大部分都是一些简单的例子,真正用的时候总会觉得不得要领。本课程会从实际的业务需求出发带大家从理论迈向编程实践。

课程分为五大部分:

* 第一部分主讲怎么从零开始一步步搭建出一个功能完善、可观测、可配置、易维护的项目框架,该部分会介绍让框架变得好用的技巧,比如通过自定义日志门面让项目日志更简单易用、支持自动记录请求的追踪信息和程序位置信息、通过自定义Error在实现Go error接口的同时支持给给错误添加错误链,方便追溯错误源头。

  • 第二部分:讲解项目分层架构的设计和划分业务模块的方法和标准,让你以后无论遇到什么项目都能按这套标准自己划分出模块和逻辑分层。后面几个部分均是该部分所讲内容的实践。
  • 第三部分:设计实现一个套支持多平台登录,Token泄露检测、同平台多设备登录互踢功能的用户认证体系,这套用户认证体系既可以在你未来开发产品时直接应用
  • 第四部分:商城app C端接口功能的实现,强化分层架构实现的讲解,这里还会讲解用责任链、策略和模版等设计模式去解决订单结算促销、支付方式支付场景等多种多样的实际问题。
  • 第五部分:单元测试、项目Docker镜像、K8s部署和服务保障相关的一些基础内容和注意事项

课程中会使用用例图、活动图、状态机、顺序图等 UML 工具已经图示对项目的功能和实现进行讲解,带大家从零开始识别业务需求一步步分析出业务结构和主要的功能,并对关键的实现细节做出梳理,在给大家讲明白后才会过度到怎么用代码实现的环节上。

本课程规划了 40 节内容,课程行进过程中会涉及到诸多与Go语言和真实项目开发相关的知识点的串讲,是不可多得的实战参考资料,课程大纲如下:

  • 课程的学习方法和约定

  • 第一部分

    • Go 基础环境搭建和Gin项目的初始化
    • 定制化项目配置--程序和配置文件一体化打包部署
    • 项目应用日志组件的Zap安装和自动切割
    • 项目日志门面的封装--简化Zap操作,自动为日志添加traceId和程序位置信息
    • 几个全局中间件,保证项目健壮和可观测性
    • 自定义项目的 Error 实现错误链条串联 和 发生位置记录
    • 项目Error的统一化管理
    • 接口响应、分页响应的规范化处理
  • 第二部分

    • 项目的软件分层设计和约定
    • 项目路由的分模块管理
    • 番外:用Docker-Compose、K8s 两种方式快速给项目搭建一套开发环境-- MySQL 和 Redis
    • 整合GORM 和应用日志 让慢查询和数据库错误无处可藏
    • 项目业务模块划分、逻辑分层解耦实战(上)
    • 项目业务模块划分、逻辑分层解耦实战(下)
    • Redis 的封装和统一管理
    • 用Option模式和对接层规范化外部API的对接
    • 阶段性总结,为了让项目好 Debug 我们做了这些事情
  • 第三&第四部分开篇

    • 项目需求的业务结构和功能分析实战,学会怎么给项目分业务模块
  • 第三部分

    • 一款支持多平台登录、同平台登录互踢、Token泄漏检测的用户认证体系
    • 用户认证体系的实现-- Token 的派发、存储和认证管理
    • 用户认证体系的实现 -- Token 的刷新和防偷窃踢人下线
    • 用户密码怎么加密才安全? 以及用户注册、登录、登出功能的实现
    • 番外:让自定义Error支持解包、errors.Is判定和避免循环引用
  • 第四部分

    • 用户个人信息管理-密码的安全修改和重置
    • 用户个人信息管理--个人基本信息的脱敏和维护
    • 用户个人信息--地址信息维护
    • 商品模块--商品分类管理
    • 商品模块--商品列表分页查询、商品搜索、商品详情
    • 购物车模块--添加、修改购物车、购物项列表和结算信息功能实现
    • 购物车模块--用职责链模式实现商品各种满减和优惠的逻辑解耦
    • 订单模块--创建订单、订单查询和取消的功能实现
    • 订单模块-- 订单支付和微信支付接口对接演示
    • 订单模块-- 用模版+策略模式应对多场景支付
  • 第五部分

    • 项目的单元测试--测试的基础搭建和数据库的Mock测试
    • 项目的单元测试接口、方法、Package的Mock测试
    • 应用的镜像打包和容器管理
    • 怎么把项目放到K8s上运行
    • 应用在K8s 上怎么保障平滑重启和安全调度
  • 总结

    • 怎么把项目扩展成微服务
    • 常见问题汇总、课程重点串讲和阅读建议

过程中章节可能会有微调,数量一定只会多不会少,前四部分内容涉及的代码我已经在自己的仓库中实现,前两部分的代码已经按章节顺序整理好版本放到了课程拥有专属的Github私有仓库中,随着课程的行进其他代码也会在整理后放出。

大家使用Git工具就能轻松查看每节的代码都做了哪些更新,还可以在本地切换到章节版本的代码进行调试。

购买课程后可以加入专属读者群,针对每个章节的问题会统一在整理成仓库中的Issue汇总起来在群中分享给大家,构建一个良好的学习氛围和社区。

用户信息管理-收货地址信息维护

本节我们进行用户模块中最后一个功能用例--用户地址信息维护的开发,用户信息维护这个用例展开后其实还有下面这些子个用例--每个子用例对应一个具体的功能接口。

我们项目中这五个功能都已经......

用户信息管理-用户信息的脱敏和维护

本节我们继续用户个人信息管理的功能开发,上一节我们详述了用户修改/重置密码的流程实现,按照我们在实战项目开始前梳理的用例图,接下来就该实现用户基本信息的维护了。

本节的内容可能在技术......

用户信息管理-密码的安全修改和重置

这节我们继续项目的实战开发,首先再看一下项目的功能用例图

图中用户认证相关的功能我们已经开发完了,在前面的四节课中详细地记述了他们的设计和开发过程,这一节我们行进到功能用例的第二大部......

AppError优化-支持Go的errors.Is判定和解决循环引用BUG

经过前面三节高代码强度的学习,相信大家都已经有点累了,本节我们不着急继续“赶路”,休息片刻!我们换个轻松点的话题,聊一聊咱们项目定制化Error--AppError 怎么支持Go语言的 erro......

用户注册、登录、登出与用户Token体系的功能整合

前面我们用三篇教程详述了一个企业级用户认证体系的设计与实现,其中主要功能:用户Token的生成、验证和刷新都已经实现了,现在是时候把Token认证和我们的用户结合到一起啦。

......## 项目开发实战-用户Token的刷新、踢人下线和防盗检测 上一节我们说了Token的自解释性生成算法、Token信息的在服务端的存储以及客户端携带Token请求API时服务端的Token认证逻辑。

这节我们继续讲Token的刷......

项目开发实战 - 用户 Token 的派发、存储和认证管理

上一篇文章「企业级项目,用户认证体系怎么设计?」我们详述了实现一个企业级产品的用户认证服务的整体思路

从这一节开始我们来演示如何按照思路实现一个用户认证体系,本节我们主......

企业级项目,用户认证体系怎么设计?

这节课开始带大家设计实现一个套支持多平台登录,Token泄露检测、同平台多设备登录互踢功能的用户认证体系,这套用户认证体系既可以在你未来开发产品时直接应用,也可以在其基础上根据需要扩展出其他功能......

实战项目技术评审-项目功能、业务结构、库表结构分析

从这节开始我们就进入项目需求的开发阶段了,我们在专栏的第一部分主要是搭建框架,第二部分除了为框架补充需要的组件外还普及了怎么为项目做模块划分,业务逻辑如何做分层解耦。

......

阶段性总结--项目搭建时要考虑哪些因素

在开始第三部分前,总感觉需要做个简单的总结,但是思路还不是很清晰,以及还想引用未来的新内容,同时因为小报童不能调整文章顺序,所以实在不好义思只能先放上自己写草稿作为占位,现在内容有些潦草,质量暂......

去【 小报童 】查看专栏详情