Contents
阶段一:Go语言基础入门和并发编程
本阶段我们快速的完成go语言的基础入门和编程思想。go语言和其他语言有比较大的区别,我们将会通过和其他语言对比方式来加深大家对go语言的理解。不论是go的接口还是go的错误处理,本阶段将为你带来不一样的体验
第1周 Go基础知识入门
第2周 容器,go编程思想
第3周 Go并发编程和工程管理
阶段二:Go电商项目- 微服务基础
第4周 从0开始理解rpc和grpc
rpc作为微服务的核心,深入理解rpc对于微服务开发来说非常重要,本周我们将从0开始一步步的理解rpc的核心概念,grpc的快速开发体验
第5周 grpc和protobuf进阶
微服务框架的搭建需要在rpc基础上添加对应的功能,深入理解protobuf和grpc更核心的功能对于后续框架的设计非常重要,为后续微服务打下坚实的基础
第6周 yapi文档管理、gorm详解
本周我们需要完成需求分析、在前后端管理中我们为什么需要yapi这样的接口管理系统、orm我们选择gorm,通过gorm基础知识的讲解我们将完成后续数据库操作的基础知识的准备
第7周 gin快速入门
微服务的web层我们将采用gin作为开发框架,本周我们将体验gin的开发的各个细节,理解到gin的middleware的核心原理,这些后续深度集成gin打下坚实的基础
阶段三:从0到1实现完整的微服务框架
本阶段我们通过用户服务完整的实现一个完整的微服务,当然更重要的是从0开始讲解完整的微服务的各个方面以及分布式系统开发中的核心功能。从本阶段开始我们将体会到分布式系统开发面临的挑战。
第8周 用户服务的grpc服务
本周完成第一个grpc服务-用户服务,本周我们将完成用户相关的主要接口包括用户登录、用户注册、用户信息获取以及用户的基本信息修改等,在本周我们需要通过md5盐值加密用户密码保存的安全性问题
第9周 用户服务的web服务
本周我们通过对gin的持续集成来将gin改造成一个适合微服务的接口层服务,本章节我们会介绍gin脚手架中的基础功能如:日志、配置文件等基础功能
第10周 服务注册/发现、配置中心、负载均衡
本周我们会详细的理解到服务注册和发现组件-consul,将consul集成到各个微服务中,同时还需要统一的配置中心,将使用nacos作为配置中心,为grpc配置负载均衡策略
阶段四:微服务实现电商系统
有了前面阶段的分布式开发的基础结构,我们需要快速应用到商品服务、订单服务、库存服务、图片服务等。 在这些服务开发中我们会面临新的挑战,如分布式锁解决库存扣减、支付回调等大量电商系统的核心。
第11周 商品微服务的grpc服务
本周完成电商系统的核心微服务-商品服务,除完成商品的基本信息以外,还需解决商品分类、轮播图管理、品牌相关等大量和商品相关的接口,我们除了这些基本功能以外还需要解决另一个问题:物理删除还是逻辑删除?
第12周 商品微服务的gin层和oss图片服务
本周重点完成两个任务:1. 将商品的grpc底层服务转换成http接口。 2. 基于阿里云的oss的图片存储微服务,我们将基于阿里云的oss改造成微服务。
第13周 库存服务和分布式锁
本周完成独立的库存服务,库存服务在电商系统中有着非常重要的作用,对数据的一致性要求非常高,所以和库存相关的功能关系着是否能有效的解决好分布式系统中的重要问题包括:分布式锁、分布式事务等非常重要的功能
第14周 订单和购物车微服务
订单服务是整个电商的中的最重要也是最复杂的微服务,在订单服务中我们需要解决分布式事务的问题,我们将先完成订单和购物车相关的基本功能,为后面的分布式事务做好准备
第15周 支付宝支付、用户操作微服务、前后端联调
以上我们基本上完成了电商核心的功能,本周我们完成剩余的功能,包括用户相关的操作比如收藏、收货地址管理等。最后我们将支付宝相关的支付功能集成到订单功能中,完成左右的功能之后我们将联调所有的接口
第16周 elasticsearch实现搜索微服务
搜索功能作为电商中最常用的功能,搜索的性能和搜索效果非常重要,使用mysql自带的查询功能显然无法满足要求,本周我们将elasticsearch集成到电商系统中,来达到高性能和高相关度的搜索功能
阶段五:分布式系统核心、微服务的部署
本阶段我们将深入分布式系统开发的核心部分,这些也是面试中会被经常问到的内容,比如如何解决分布式环境下的分布式事务、面向高并发的流量,我们仍然需要解决限流、熔断等方案保障系统的高可用。
第17周 分布式理论基础、分布式事务解决方案
本周我们需要解决非常重要的一个话题-分布式事务和幂等性。这两个知识点既是难点也是面试中的常见话题,所以理解分布式事务的理解决定了你是否能再高级面试中脱颖而出的关键。
第18周 学习rocketmq实现幂等性机制等
本周我们需要实现基于可靠消息的最终一致性实现方案、我们将基于rocketmq来实现该分布式事务方案,在本章我们将会更加详细的理解到一个分布式事务实现的具体细节
第19周 链路追踪、限流、熔断、降级
一个高可用的微服务框架还需要解决负载的微服务间的调用链的监控和超时会带来的服务雪崩,本周会引入jaeger进行链路追踪,使用sentinel解决熔断、限流等问题。这都是微服务领域最新也是未来的使用趋势
第20周 api网关、部署
前面已经开发出来大量的微服务,那如何对外暴露统一的接口等,本周会选择高性能的api网关-kong来完成从用户端到微服务端的调用以及接口管理,最后通过jenkins完成持续的部署和集成
阶段六:开发规范、设计模式、单元测试
实际开发中,编程规范非常重要,开发规范涉及到的方面较多,我们需要详细的介绍各个开发流程中的规范,同时在开发中,如何写出好的容易维护的代码,对于我们来说不仅自己写代码需要懂设计模式,同时也能帮助我们看懂开源代码。
第21周 开发规范和go基础扩展
本周详情:Go的目录结构怎么规范?git的代码分支、commit规范怎么管理?代码仓库应该是采用mono-repo还是multi-repo进行管理?go的代码静态检测怎么做?go的新特性泛型如何使用?
第22周
设计模式和单元测试
想要写好代码必须搞懂设计模式,如何在go中使用设计模式,有哪些常用的设计模式?如何写出方便测试的代码?如何对数据层代码进行单元测试?如何测试对结构体进行mock测试?测试框架怎么选择?是本周核心。
阶段七:效率工具开发
go语言推崇的是工具大于约定,开发好的代码生成工具不仅能帮我们增加代码的质量,同时会让代码更加容易维护,本阶段我们除了需要懂命令行开发神器-cobra以外,还需要开发protoc插件用于自动化代码生成
第23周
protoc插件开发、cobra命令行
本周详情:如何将grpc接口直接转换为http接口? kratos和grpc-gateway如何解决grpc和http服务转换?系统启动如何支持命令行和参数?配置文件如何自动映射到go的struct?
阶段八:深入底层库封装、ast代码生成方案
本阶段我们深入解析底层核心的库-log日志、errors库。好的log日志包和errors库以及错误码能让统一我们编码规范,同时还能以尽量少的代码暴露更多的信息。我们还需要进一步了解通过解析源码的方式来自动生成源码。
第24周
log日志包设计
日志包是否需要自己封装? 日志包封装有哪些细节需要考虑?日志的初始化应该如何做?日志如何和链路集成?生产环境中的日志应该如何处理?本周带你体验日志包设计的细节。
第25周
ast代码生成工具开发
Go的error设计思想是什么?如何解决错误的错误栈?错误码如何设计?如何解决内部error到http错误状态码的处理?ast是什么?如何使用ast减少代码开发量?本周带你深入error设计细节
阶段九:自研微服务框架-gmicro
本阶段作为最核心的阶段,我们将会深入的理解微服务底层的负载均衡、服务注册发现等源码、封装出rpc服务和rest服务,同时将服务进行统一的启动和关闭管理。通过本阶段学习我们将会学习到更多更深入的内容。
第26周
三层代码结构
为什么我们的代码会不方便写单元测试?如何防止代码和gin耦合?如何解决代码和gorm耦合?如何通过代码分层结构减少代码耦合?如何建立通用项目启动过程?本周我们将要解决这些问题
第27周
grpc服务封装更方便的rpc服务
为什么我们要进一步封装grpc?微服务框架应该具备哪些功能?如何将设计模式应用到框架开发中?grpc进一步封装需要具备哪些功能?本周带你实战封装技能。
第28周
深入grpc的服务注册、负载均衡原理
本周讲解grpc的服务注册和发现原理、如何自定义服务注册和服务发现、grpc的负载均衡原理、以及如何自定义负载均衡。
第29周
基于gin封装api服务
如何同时启动grpc和gin服务?两者其中一个启动失败如何优雅处理?如何封装一套通用的认证系统支持各种认证方式?本周我们来讲解。
第30周
可观测的终极解决方案
云原生环境下日志、链路、监控的终极解决方案opentelemetry如何封装到框架中?能否监控gorm、redis的执行性能,本周带你理解最强方案opentelemetry。
第31周 系统监控核心
系统出错了如何发现?系统响应慢了如何发现?接口抖动过大如何发现? 本周带你理解监控的重要性。
阶段十:基于gmicro重构项目
本阶段我们通过前面的开发的微服务框架gmicro重构电商项目,在本阶段我们不仅会通过项目来深刻理解如何开发更好的代码以外,还会介绍更多的系统设计方面的考点,通过本阶段的学习我们将会拓宽自己的知识面以及更加从容应付面试
第32周 用户、商品服务重构
如何通过gmicro重构用户服务?如何对用户服务进行详细的单元测试?商品数据的异构存储方案如何设计? 如何将用户服务集成到三层代码结构中?本周我们开始体会服务重构。
第33周 订单、库存等服务重构
如何使用dtm进行分布式事务重构?企业级的订单存储方案如何设计?消费者服务应该如何设计?如何库存并发量大应该如何设计?本周我们开始重构核心订单服务和库存服务。
第33+周 订单服务重构、wire进行ioc控制
阶段十一:基于k8s部署项目
项目部署作为系统维护非常重要的一环,如何更加方便的维护服务?怎么做才能使得发布更加规范,在本阶段我们将会更加深刻的体会到生产环境部署如何做更加规范,如何和k8s更好的融合管理。
第34周 通过k8s部署服务
如何构建go的镜像?如何通过多阶段构建docker镜像?如何将系统部署到k8s中?如何进行devops开发?本周将带你详细了解生产环境的项目部署。
No responses yet