Go开发工程师
风口上的技术,薪资水平遥遥领先,现在学习正值红利期!
未来3-5年,Go语言势必成为企业高性能项目中不可替代的语言
从基础到项目实战再到重构,对转行人员友好,真正从入门到精通!
34 课程内容
16 个月 教学服务期限
150 小时 视频时长
492 学习人数
100% 好评度
34 课程内容
16 个月 教学服务期限
70000 手敲代码
2 企业及项目
16+ 实操案例
492 学习人数
活动到手价 ¥2688
7天未学可退 ¥3888
点我免费体验
阶段一
阶段二
阶段三
阶段四
阶段五
阶段六
阶段七
阶段八
阶段九
阶段十
阶段十一
阶段一:Go语言基础入门和并发编程
第1周   Go基础知识入门
Go基础语法快速入门,本周通过和其他语言对比讲解go语言的细节,让你知其所以然。
课程安排:
1、开发环境搭建
2、变量定义和使用
3、iota常量定义
4、变量作用域
5、byte类型字符
6、rune类型的定义使用
7、整数、浮点数定义和类型转换
8、format数据格式化
9、字符串相关操作
10、高性能字符串相关操作
11、转义符相关
12、if条件判断控制分支
13、for、break、continue进行循环控制
14、for range进行数据遍历
15、goto语句进行代码跳转
16、switch进行分支控制
第2周   容器,go编程思想
Go到底支不支持面向对象? go如何实现动态类型?go的接口意味着什么?go的指针和c语言的指针有什么区别?本周将带您一一讲解。
课程安排:
1、数组、多维数组定义和使用
2、slice切片相关操作
3、切片的原理
4、省略号在go中的作用
5、map定义和使用
6、list相关的操作
7、函数和函数的闭包特性
8、defer定义和应用
9、recover进行异常捕获
10、error和panic进行错误和异常操作
11、结构体、空结构体定义和使用
12、go语言如何实现面向对象特性
13、结构体的jsontag定义和使用
14、指针和nil
15、鸭子类型和接口
16、通过interface进行动态类型赋值
第3周   Go并发编程和工程管理
go高性能的原理是什么?context的应用场景是什么?go如何进行模块管理?如何进行单元测试?本周为您详解。
课程安排:
1、import和package包管理
2、go get、mod相关命令
3、单元测试编码
4、benchmark性能测试编码
5、表格驱动测试
6、goroutine并发编程
7、go的GMP调度原理
8、waitgroup进行并发控制
9、互斥锁和读写锁的应用
10、通过channel进行goroutine通信
11、select进行多channel的监控
12、通过context控制goroutine的取消、超时控制和值传递
阶段二:Go电商项目- 微服务基础
第4周   从0开始理解rpc和grpc
rpc作为微服务的核心,深入理解rpc对于微服务开发来说非常重要,本周我们将从0开始一步步的理解rpc的核心概念,grpc的快速开发体验
课程安排:
1、rpc的核心概念
2、通过http实现rpc的基础原型
3、rpc核心要点分析
4、go自带的rpc开发
5、替换rpc中的gob协议为json协议
6、替换rpc中的传输协议为http协议
7、封装自带的rpc框架实现完美体验
8、protobuf的核心概念
9、grpc快速开发体验
10、grpc的流模式开发体验
第5周   grpc和protobuf进阶
微服务框架的搭建需要在rpc基础上添加对应的功能,深入理解protobuf和grpc更核心的功能对于后续框架的设计非常重要,为后续微服务打下坚实的基础
课程安排:
1、protobuf的基本类型和默认值
2、proto文件的管理和更新可能造成的问题
3、proto文件中import其他的proto文件
4、嵌套message、enum枚举类型
5、map类型和timestamp类型
6、grpc的metadata机制
7、grpc的拦截器
8、通过拦截器和metadata机制实现auth认证
9、grpc的验证器
10、grpc中的错误处理和超时机制
第6周    yapi文档管理、gorm详解
本周我们需要完成需求分析、在前后端管理中我们为什么需要yapi这样的接口管理系统、orm我们选择gorm,通过gorm基础知识的讲解我们将完成后续数据库操作的基础知识的准备
课程安排:
1、电商系统和后台管理系统需求分析
2、微服务架构演进
3、微服务架构需要解决哪些核心问题?
4、如何管理前后端分离系统的接口-yapi
5、gorm的基本CRUD操作
6、model的基本定义
7、多表查询(分页、子查询)
8、多表查询(一对多、多对多、表连接)
9、如何hook主表名和保存后的自定义逻辑?
10、gorm的事务性操作
第7周   gin快速入门
微服务的web层我们将采用gin作为开发框架,本周我们将体验gin的开发的各个细节,理解到gin的middleware的核心原理,这些后续深度集成gin打下坚实的基础
课程安排:
1、gin的New和Default初始化的区别
2、gin的路由分组
3、获取url、get和post中的值
4、gin的表单验证
5、表单验证的error中文翻译
6、gin中体验protobuf
7、自定义gin的middleware
8、gin的middleware源码分析和abort的关系
9、gin返回html
10、gin加载静态文件和优雅退出
阶段三:从0到1实现完整的微服务框架
第8周   用户服务的grpc服务
本周完成第一个grpc服务-用户服务,本周我们将完成用户相关的主要接口包括用户登录、用户注册、用户信息获取以及用户的基本信息修改等,在本周我们需要通过md5盐值加密用户密码保存的安全性问题
课程安排:
1、user表结构设计
2、md5信息摘要算法
3、md5盐值加密解决用户密码的安全性问题
4、定义proto接口
5、grpc服务的开启和优雅退出
6、用户注册接口
7、通过id和mobile查询用户
8、修改用户信息接口
9、通过flag来解决参数启动服务
10、用户相关接口测试
第9周   用户服务的web服务
本周我们通过对gin的持续集成来将gin改造成一个适合微服务的接口层服务,本章节我们会介绍gin脚手架中的基础功能如:日志、配置文件等基础功能
课程安排:
1、zap日志库的使用
2、gin调用grpc微服务的集成
3、viper配置文件管理
4、生产环境和开发环境配置文件隔离
5、session机制在微服务架构下的不足
6、gin集成jwt解决微服务下的认证
7、url添加登录权限验证
8、阿里云短信发送
9、redis集成短信发送功能
10、用户登录、注册功能
第10周   服务注册/发现、配置中心、负载均衡
本周我们会详细的理解到服务注册和发现组件-consul,将consul集成到各个微服务中,同时还需要统一的配置中心,将使用nacos作为配置中心,为grpc配置负载均衡策略
课程安排:
1、服务注册和发现的重要性
2、consul集成到grpc中
3、如何解决grpc的健康检查
4、gin集成consul
5、为什么需要配置中心
6、nacos的组、配置集和命名空间
7、gin和grpc集成nacos
8、动态 获取可用端口号
9、负载均衡的常用策略
10、grpc集成负载均衡
阶段四:微服务实现电商系统
第11周   商品微服务的grpc服务
本周完成电商系统的核心微服务-商品服务,除完成商品的基本信息以外,还需解决商品分类、轮播图管理、品牌相关等大量和商品相关的接口,我们除了这些基本功能以外还需要解决另一个问题:物理删除还是逻辑删除?
课程安排:
1、商品相关表结构设计和数据导入
2、物理删除还是逻辑删除?
3、proto接口定义
4、商品相关接口(列表、添加、修改、删除)
5、商品分类相关接口(列表、添加、修改、删除)
6、品牌相关接口(列表、添加、修改、删除)
7、轮播图相关接口(列表、添加、修改、删除)
8、批量获取商品的信息接口和应用场景
9、品牌分类相关接口
10、测试相关接口
第12周    商品微服务的gin层和oss图片服务
本周重点完成两个任务:1. 将商品的grpc底层服务转换成http接口。 2. 基于阿里云的oss的图片存储微服务,我们将基于阿里云的oss改造成微服务。
课程安排:
1、商品的grpc服务接口转换为http接口
2、如何设计一个符合go风格的注册中心接口?
3、gin退出后的服务注销
4、商品分类、品牌相关的接口转换
5、基于yapi测试http接口
6、微服务架构设计下的普通文件上传的弊端
7、阿里云的oss基本概念
8、前端直传文件的流程
9、内网穿透技术调试文件上传
10、gin集成oss实现微服务
第13周   库存服务和分布式锁
本周完成独立的库存服务,库存服务在电商系统中有着非常重要的作用,对数据的一致性要求非常高,所以和库存相关的功能关系着是否能有效的解决好分布式系统中的重要问题包括:分布式锁、分布式事务等非常重要的功能
课程安排:
1、为什么库存服务需要独立成微服务
2、库存服务的表结构设计
3、库存相关的proto接口设计
4、通过数据库事务完成库存的扣减
5、库存的归还的重要性
6、订单超卖是如何产生的?
7、什么是分布式锁
8、乐观锁详解
9、基于redis分布式锁的原理
10、redis分布式锁的细节:setnx、看门狗等机制
第14周   订单和购物车微服务
订单服务是整个电商的中的最重要也是最复杂的微服务,在订单服务中我们需要解决分布式事务的问题,我们将先完成订单和购物车相关的基本功能,为后面的分布式事务做好准备
课程安排:
1、需求分析(购物车、订单)
2、表结构设计
3、proto接口定义
4、添加商品到购物车、更新购物车、获取购物车接口
5、新建订单接口以及难点分析
6、订单详情接口
7、通过mysql事务解决数据创建过程中的事务
8、gin集成订单和购物车接口
9、测试订单相关接口
10、测试购物车相关接口
第15周    支付宝支付、用户操作微服务、前后端联调
以上我们基本上完成了电商核心的功能,本周我们完成剩余的功能,包括用户相关的操作比如收藏、收货地址管理等。最后我们将支付宝相关的支付功能集成到订单功能中,完成左右的功能之后我们将联调所有的接口
课程安排:
1、支付宝沙箱环境开发流程
2、私钥、公钥的概念以及支付宝如何解决订单的安全性问题
3、支付宝的公钥、私钥和回调url配置
4、生成支付宝的支付url
5、gin集成支付宝支付
6、支付宝回调通知url逻辑接口
7、用户操作服务需求分析
8、用户操作相关的接口源码分析
9、电商系统接口联调
10、电商管理系统接口联调
第16周   elasticsearch实现搜索微服务
搜索功能作为电商中最常用的功能,搜索的性能和搜索效果非常重要,使用mysql自带的查询功能显然无法满足要求,本周我们将elasticsearch集成到电商系统中,来达到高性能和高相关度的搜索功能
课程安排:
1、elasticsearch的介绍和安装
2、elasticsearch的基本概念
3、倒排索引的原理
4、elasticsearch 基本的索引和文档CRUD操作
 5、elasticsearch的mget和bulk批量操作 
6、中文分词器-ik
7、go的elasticsearch接口
8、elasticsearch的term查询
9、elasticsearch的mapping映射
10、商品的上架功能和搜索
阶段五:分布式系统核心、微服务的部署
第17周    分布式理论基础、分布式事务解决方案
本周我们需要解决非常重要的一个话题-分布式事务和幂等性。这两个知识点既是难点也是面试中的常见话题,所以理解分布式事务的理解决定了你是否能再高级面试中脱颖而出的关键。
课程安排:
1、为什么订单会有超时机制
2、数据库事务的ACID特性
3、分布式系统中出现哪些故障会导致数据不一致?
4、cap理论
5、BASE理论
6、2pc两阶段提交分布式事务
7、 TCC分布式事务实现方案
8、基于本地消息的最终一致性方案
9、基于可靠消息的最终一致性
10、最大努力通知方案
第18周    学习rocketmq实现幂等性机制等
本周我们需要实现基于可靠消息的最终一致性实现方案、我们将基于rocketmq来实现该分布式事务方案,在本章我们将会更加详细的理解到一个分布式事务实现的具体细节
课程安排:
1、mq的应用场景
2、mq消息队列技术选型
3、rocketmq的消息类型
4、发送普通消息、延迟消息、事务消息
5、订单新建的过程中如果保证库存数据的最终一致性
6、库存扣减在分布式事务中的特殊性
7、什么时候应该对事务消息进行确认?
8、库存归还的细节处理
9、什么是服务雪崩?服务雪崩和超时重试机制
10、常用的幂等性解决方案
第19周   链路追踪、限流、熔断、降级
一个高可用的微服务框架还需要解决负载的微服务间的调用链的监控和超时会带来的服务雪崩,本周会引入jaeger进行链路追踪,使用sentinel解决熔断、限流等问题。这都是微服务领域最新也是未来的使用趋势
课程安排:
1、为什么我们需要链路追踪
2、opentracing中的tracer、span、spancontext
3、发送span和多级span消息
4、grpc服务下集成jaeger
5、grpc下的jaeger源码解读
6、gin集成jaeger
7、什么是限流、熔断和降级
8、sentinel的qps限流
9、sentinel的预热和冷启动、匀速通过机制
10、sentinel的熔断接口-错误数、错误率、慢请求
第20周   api网关、部署
前面已经开发出来大量的微服务,那如何对外暴露统一的接口等,本周会选择高性能的api网关-kong来完成从用户端到微服务端的调用以及接口管理,最后通过jenkins完成持续的部署和集成
课程安排:
1、什么是api网关
2、kong的8001、800和1337端口号的关系
3、基本的路由转发配置
4、kong的service、routes、upstream的请求过程
5、kong集成consul实现服务发现和负载均衡
6、kong配置反爬、黑名单
7、jenkins常见功能
8、jenkins的pipeline
9、jenkins执行脚本
10、自动化部署
阶段六:开发规范、设计模式、单元测试
第21周   开发规范和go基础扩展
本周详情:Go的目录结构怎么规范?git的代码分支、commit规范怎么管理?代码仓库应该是采用mono-repo还是multi-repo进行管理?go的代码静态检测怎么做?go的新特性泛型如何使用?
课程安排:
1、开发有哪些规范?
2、git的开发规范
3、go代码的目录规范
4、微服务项目的目录规范
5、mono-repo和multi-repo代码仓库管理
6、go vet进行代码检测
7、golangci-lint的静态代码检测
8、编码中常见的坑如何避免
9、go的泛型定义和使用
第22周   设计模式和单元测试
想要写好代码必须搞懂设计模式,如何在go中使用设计模式,有哪些常用的设计模式?如何写出方便测试的代码?如何对数据层代码进行单元测试?如何测试对结构体进行mock测试?测试框架怎么选择?是本周核心。
课程安排:
1、设计模式的重要性
2、函数选项模式
3、kratos和grpc中的设计模式
4、单例模式
5、sync.once原理
6、工厂模式
7、测试金字塔
8、gomock进行接口测试
9、如何对grpc、redis等进行mock测试
10、sqlmock对gorm进行测试
11、go的模糊测试的应用场景
12、 gomonkey对任何对象进行mock测试
13、 ginkgo单元测试框架的应用
阶段七:效率工具开发
第23周   protoc插件开发、cobra命令行
本周详情:如何将grpc接口直接转换为http接口? kratos和grpc-gateway如何解决grpc和http服务转换?系统启动如何支持命令行和参数?配置文件如何自动映射到go的struct?
课程安排:
1、grpc-gateway的原理
2、protoreflect进行proto文件解析
3、go template模板的使用
4、grpc转换为gin接口
5、protoc命令执行的原理
6、cobra命令行系统开发
7、系统支持命令、参数和配置文件解析映射
阶段八:深入底层库封装、ast代码生成方案
第24周   log日志包设计
日志包是否需要自己封装? 日志包封装有哪些细节需要考虑?日志的初始化应该如何做?日志如何和链路集成?生产环境中的日志应该如何处理?本周带你体验日志包设计的细节。
课程安排:
1、封装日志包的重要性
2、全局初始化和日志传入的方案选择
3、开源项目如何对日志进行处理的?
4、日志的debug、info等打印级别
5、生产环境中的日志系统架构
6、定义log的options配置选项
7、log包如何实现解耦?
8、如何将log和链路追踪集成?
第25周   ast代码生成工具开发
Go的error设计思想是什么?如何解决错误的错误栈?错误码如何设计?如何解决内部error到http错误状态码的处理?ast是什么?如何使用ast减少代码开发量?本周带你深入error设计细节
课程安排:
1、go的error设计理念
2、go语言的错误处理和其他语言的区别
3、errors错误栈的封装和打印
4、错误码的设计
5、grpc的error错误原理
6、兼容内部的错误码和grpc的错误码
7、kratos的errors设计理念
8、go generate的应用场景
9、 ast包的基本元素
10、 通过ast解析源码并生成源码
11、 通过代码生成解决错误码的全局注册
阶段九:自研微服务框架-gmicro
第26周   三层代码结构
为什么我们的代码会不方便写单元测试?如何防止代码和gin耦合?如何解决代码和gorm耦合?如何通过代码分层结构减少代码耦合?如何建立通用项目启动过程?本周我们将要解决这些问题
课程安排:
1、通用项目启动
2、代码耦合的原因是什么
3、三层代码和接口解决代码耦合的问题
4、DO、DTO、VO实体设计
5、通过copier解决各层实体的拷贝
6、各层代码进行单元测试
第27周   grpc服务封装更方便的rpc服务
为什么我们要进一步封装grpc?微服务框架应该具备哪些功能?如何将设计模式应用到框架开发中?grpc进一步封装需要具备哪些功能?本周带你实战封装技能。
课程安排:
1、微服务框架需求分析
2、通过interface抽象服务注册集成
3、服务监听的原理解读
4、grpc的通用拦截器-timeout、recover
5、定义server启动的options完成命令行参数和配置文件的映射
6、通过mock完成底层数据的响应
第28周   深入grpc的服务注册、负载均衡原理
本周讲解grpc的服务注册和发现原理、如何自定义服务注册和服务发现、grpc的负载均衡原理、以及如何自定义负载均衡。
课程安排:
1、kratos的服务注册源码解读
2、grpc的resolver接口
3、grpc的directBuilder源码解读
4、服务发现和负载均衡的原理
5、通过观察者模式完成服务注册和服务发现
6、grpc的负载均衡架构原理
7、 pickfirst的源码解读
8、 roundrobin的源码解读
第29周   基于gin封装api服务
如何同时启动grpc和gin服务?两者其中一个启动失败如何优雅处理?如何封装一套通用的认证系统支持各种认证方式?本周我们来讲解。
课程安排:
1、errorgroup完善grpc和gin启动控制
2、翻译验证器的集成
3、优雅退出的互相通知
4、如何管理多服务的启动
5、basic认证封装
6、基于cache的认证封装
7、基于jwt的认证接口封装
第30周   可观测的终极解决方案
云原生环境下日志、链路、监控的终极解决方案opentelemetry如何封装到框架中?能否监控gorm、redis的执行性能,本周带你理解最强方案opentelemetry。
课程安排:
1、opentelemetry要解决什么问题?
2、log日志如何集成到opentelemetry
3、inject和extract原理解读
4、otelgrpc完成grpc的集成原理
5、自定义options完成opentelemetry的配置
6、通用opentelemetry全局配置和启动封装
7、opentelemetry核心概念
8、 gorm集成opentelemetry源码解读
9、 go-redis库如何完成opentelemetry集成的
第31周   系统监控核心
系统出错了如何发现?系统响应慢了如何发现?接口抖动过大如何发现? 本周带你理解监控的重要性。
课程安排:
1、prometheus、grafana安装和使用
2、promql语法
3、guages、counter、histograms监控指标
4、gin集成prometheus实现指标上报
5、grpc的server端集成prometheus
6、grpc的client端集成prometheus
阶段十:基于gmicro重构项目
第32周   用户、商品服务重构
如何通过gmicro重构用户服务?如何对用户服务进行详细的单元测试?商品数据的异构存储方案如何设计? 如何将用户服务集成到三层代码结构中?本周我们开始体会服务重构。
课程安排:
1、配置文件校验
2、data数据访问层的接口设置
3、通过工厂模式设计data数据访问层
4、service层代码结构设计
5、用户服务处理error
6、controller层代码结构设计
7、 do、dto、vo结构设计
8、 三层代码结构重构service层代码
9、 重构web层用户服务
10、 通过树形结构重构category分类
11、 通过binlog同步商品数据到elaticsearch的方案
12、 重构商品服务
13、 通过单元测试对接口进行完整的测试
第33周   订单、库存等服务重构
如何使用dtm进行分布式事务重构?企业级的订单存储方案如何设计?消费者服务应该如何设计?如何库存并发量大应该如何设计?本周我们开始重构核心订单服务和库存服务。
课程安排:
1、gmicro重构订单服务
2、DTM分布式事务框架重构分布式事务
3、分布式事务面临的挑战
4、单独启动rocketmq监听服务消息消费
5、订单延时取消如何设计?
6、通过map-reduce进行并发调用控制
7、 三层代码结构重构service层代码
8、 重构web层订单服务
9、通过gmicro重构oss服务
10、通过gmicro重构收藏服务
11、通过gmicro重构收货地址服务
第33+周   订单服务重构、wire进行ioc控制
订单服务重构、wire进行ioc控制
课程安排:
1、gmicro重构订单服务
2、通过map-reduce进行并发调用控制
3、三层代码结构重构service层代码
4、什么是ioc?
5、wire对于服务启动有什么好处?
6、通过wire重构user服务启动
7、集成sentinel和nacos
阶段十一:基于k8s部署项目
第34周   通过k8s部署服务
如何构建go的镜像?如何通过多阶段构建docker镜像?如何将系统部署到k8s中?如何进行devops开发?本周将带你详细了解生产环境的项目部署。
课程安排:
1、Kubernetes的历史,集群配置及版本
2、kind本地集群的配置
3、容器
4、节点及物理层
5、服务与网络
6、构建Docker镜像
7、Dockerfile指令详解
8、为Docker镜像瘦身
9、flag与环境变量的使用
10、为所有服务制作及上传镜像
11、k8s yaml语法详解
12、卷,配置及密钥
13、服务及端口的暴露
16、服务可视化
17、ingress配置
19、路由规则的配置及平滑升级
第34+周   devops和k8s
devops和k8s
课程安排:
1、基于docker的go build构建
2、通过多阶段构建对go进行瘦身
3、devops、ci、cd和gitops是什么?
4、git parameter插件的使用
5、pipeline的参数化构建过程
6、编写dockerfile进行用户服务构建
7、 dockerfile、jenkinsfile如何完美配合进行服务的持续集成?
8、 kubesphere部署用户服务
9、 k8s的负载均衡和基于consul服务发现的负载均衡的区别
10、通过ingress暴露service
11、 pod是什么?
12、 kubectl相关的命令
13、 k8s的控制器
14、 k8s的service
15、 k8s的ingress
16、 k8s的持久卷
17、 k8s的configmap、secret
18、 k8s的架构

学习咨询

选课、学习遇到问题?
扫码添加指导老师 1V1 帮助你!

扫码加顾问老师 立即咨询

意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师