Go开发工程师-全新升级版
跟着云计较与5G的遍及,数据运算机能渐渐成为后端开辟的考量尺度
将来3-5年,Go说话势必成为企业在高机能项目中不成替换的开辟说话
现在学习Go语言,抓紧机遇,冲击大厂高薪
章节目录:
阶段一:Go语言基础入门和编程思维 |
第1周 Go语言基础知识 |
带领大家迅速上手Go语言,详细讲解Go语言的基础知识 |
课程安排: |
1、go语言环境的配置 |
2、基于go mod的依赖管理 |
3、基础语法 变量,常量,类型,选择,循环,函数,指针 |
4、内建容器 数组,切片,Map和字符串 |
5、面向“对象” 结构体和方法 |
6、出错处理与defer/panic/recover |
7、测试与性能调优 |
第2周 Go语言编程思想 |
本周我们着重讲解函数式编程,接口,goroutine/channel及其模式 |
课程安排: |
1、接口,接口的值类型 |
2、函数式编程 |
3、Goroutine |
4、Channel |
5、异步编程模式简介 |
6、标准库,http库简介,json库及结构体tag |
阶段二:租辆酷车小程序与TypeScript |
第3周 小程序极速上手与租辆酷车初体验 |
初识小程序,理解小程序的作用,商业场景。配置环境,包括小程序账号,小程序开发工具,vscode。理解小程序运行机制,渲染机制,页面栈。开发第一款小程序,添加地图功能。 |
课程安排: |
1、小程序的优缺点 |
2、小程序营销案例分析 |
3、小程序账号配置 |
4、小程序开发工具安装配置 |
5、vscode安装和配置 |
6、开发第一款小程序 |
7、理解小程序运行机制和渲染机制 |
8、理解小程序生命周期 |
9、小程序页面栈详解 |
10、小程序调试工具速成 |
11、添加地图组件,打造租辆酷车雏形 |
第4周 极速上手TypeScript应用 |
极速上手TypeScript。理解并开始使用TypeScript,包括基本数据类型,数组,对象,函数,方法。并且开始使用TypeScript开发小程序。 |
课程安排: |
1、TypeScript简介 |
2、了解TypeScript vs JavaScript |
3、TypeScript环境配置 |
4、开发第一款使用TypeScript的小程序 |
5、TypeScript的基本数据类型 |
6、逻辑控制 |
7、枚举类型 |
8、数组 |
9、对象及方法 |
10、函数的定义 |
第4+周 精通Typescript |
TypeScript的高级知识。这些知识点是跑步超越其他前端同事,做出高可靠性小程序及其他前端应用的关键。包括函数式编程,Promise详解,异步编程,接口,范型,面向对象,解决小程序开发典型难点。 |
课程安排: |
1、函数式编程 |
2、一等公民及高阶函数 |
3、函数的闭包 |
4、函数式编程攻克小程序难点:页面状态维护 |
5、数组变换 |
6、Promise详解 |
7、同时等待多个Promise |
8、异步编程 |
9、小程序API的Promise化 |
10、Promise攻克小程序难点:初始状态同步 |
11、接口及其高级技巧 |
12、接口的两种实现方式 |
13、类 |
14、范型 |
第5周 前端知识体系速成 |
本周我们将速成前端知识体系,学习最为有用的CSS必备技能,以及wxml前端模版的使用。这些技能每个开发者都必须掌握,包括后端开发。本周的课程将助同学掌握和补充全面的必备的知识体系。 |
课程安排: |
1、为租辆酷车的原型开发确立目标 |
2、WXML语法速成 |
3、CSS选择器 |
4、控制元素位置 |
5、控制文字属性 |
6、flex弹性盒子布局详解 |
7、在小程序中使用css |
阶段三:“租辆酷车”共享出行产品设计与研发 |
第6周 租辆酷车小程序-前端设计初级 |
我们开始着手完全使用TypeScript开发小程序前端原型,完成首页地图页,汽车模型移动,注册页面表单及流程,行程中费用实时计算,初步搭建用户体验闭环。 |
课程安排: |
1、框架的选择 |
2、首页地图页的实现 |
3、汽车位置的移动 |
4、注册页面布局 |
5、注册表单的实现 |
6、注册页面的状态转换 |
7、开锁页面的实现 |
8、行程中页面的实现 |
9、行程费用的实时计算 |
第6+周 租辆酷车小程序-前端设计进阶 |
本周我们将玩转小程序中较为复杂的swiper以及滚动视图组件,实现强类型保护下的页面跳转路由,实现自定义组件,并综合运用所学知识,结合数据结构设计,实现流行的垂直同步导航功能,全面完成用户体验闭环。 |
课程安排: |
1、swiper控件详解 |
2、强类型保护下的页面跳转路由 |
3、页面跳转参数的强类型化重构 |
4、滚动视图详解 |
5、垂直导航之数据结构设计 |
6、元素位置识别技巧 |
7、自定义组件之模态对话框 |
8、前端开发的总结 |
第7周 租辆酷车后端-接入微服务GRPC |
关注前后端的消息传递,以及领域建模。我们采用GRPC定义领域模型,统领前后端开发及联调。使用GRPC对内,REST对外的标准接口方式进行设计,打通前后端数据通路,为业务开发打下坚实基础,体验最佳实践。 |
课程安排: |
1、Go语言之vscode配置 |
2、GRPC简介 |
3、ProtoBuf编译器的安装 |
4、ProtoBuf的使用 |
5、定义复合类型和枚举类型 |
6、ProtoBuf字段的可选性 |
7、实现GRPC服务器及客户端 |
8、REST vs RPC |
9、GRPC Gateway的介绍 |
10、用GRPC Gateway暴露REST接口 |
11、小程序访问REST接口 |
12、前后端数据类型交互的统一填坑 |
13、小程序使用npm构建 |
14、小程序请求的强类型化 |
第8周 微服务与存储设计+实战登录服务 |
在了解了微服务,理解微服务划分哲学着手开发后端微服务。我们首先攻克登陆环节。登陆看似普通实际流程复杂,涉及微信登陆,数据存储,令牌生成等多个环节。在数据存储中,我们选用NoSQL数据库。 |
课程安排: |
1、进一步理解微服务 |
2、租辆酷车后端的微服务划分 |
3、小程序登陆过程分析 |
4、登陆服务的框架 |
5、获取OpenID |
6、关系型数据库 vs 非关系型数据库 |
7、用docker来启动MongoDB |
8、MongoDB的CRUD操作 |
9、用MongoDB Playground模拟用户登陆 |
10、实现微信登录数据绑定 |
11、用Go语言来控制Docker启动MongoDB |
12、建立针对MongoDB的测试库 |
13、表格驱动测试的实践 |
14、登陆服务阶段性总结 |
第9周 租辆酷车权限设计与JWT实战 |
本周我们将学到安全方面的必备知识点,包括JWT令牌分发,RSA签名机制,JWT令牌校验,拦截器,go context上下文,客户端自动登陆及重试机制,完成登陆闭环。 |
课程安排: |
1、JWT简介 |
2、用RSA非对称密钥签名JWT |
3、JWT的Go语言实现 |
4、验证JWT Token |
5、Go Context的概念及详解 |
6、创建行程服务 |
7、实现登陆状态拦截器 |
8、应用Identifier Type设计模式 |
9、客户端携带token |
10、客户端自动登陆及重试 |
第10周 租辆酷车后端-行程服务实战+后端最佳实践 |
本周我们实现行程服务,并与前端联调走通整个行程生命周期。同学将看到测试驱动开发的大规模实战,体验完整的企业级开发流程和最佳实践。技术方面,我们采用防入侵层维护领域边界,采用乐观锁维护数据一致性。 |
课程安排: |
1、行程服务的定义 |
2、行程的创建 |
3、行程的获取 |
4、对于ID的进一步重构 |
5、行程的测试 |
6、批量获取行程 |
7、用乐观锁更新行程 |
8、创建行程服务及防入侵 |
9、创建行程服务的测试 |
10、创建行程前后端联调 |
11、获取行程及行程列表的前后端联调 |
12、行程更新服务 |
13、行程生命周期的测试 |
14、行程生命周期的前端跳转 |
15、驾驶页面的行程更新 |
16、我的行程页面的更新 |
17、测试驱动修bug的标准流程 |
18、行程服务的总结 |
第11周 租辆酷车后端-身份服务与认证实战+云存储 |
本周我们将实现身份认证服务流程。包括驾照上传,信息上传,后台审核,前端跳转,重新审核等复杂业务流程。技术上采用云存储来存放驾照照片,采用MongoDB来存放数据及其匹配项。 |
课程安排: |
1、身份服务的定义 |
2、身份服务的实现 |
3、客户端的对接 |
4、微信数据双向绑定 |
5、与行程服务的联调 |
6、云存储的简介和使用 |
7、用Go语言和小程序操作云存储 |
8、获取图片内容的流程分析 |
9、存储服务的定义 |
10、存储服务的数据库实现 |
11、存储服务接入云存储 |
12、使用GRPC客户端检查存储服务 |
13、与身份认证服务的关联 |
14、身份认证模块的前后端联调 |
15、阶段小结 |
阶段四:“租辆酷车”架构演进之高性能位置更新与服务部署 |
第12周 租辆酷车-实时位置服务 |
本周将实采用rabbitMQ来实现汽车物料管理,汽车实时位置更新 |
课程安排: |
1、物联网简介 |
2、RabbitMQ简介 |
3、使用go语言进行收发 |
4、使用go语言实现pub/sub |
5、汽车服务的设计 |
6、汽车服务CRUD的实现 |
7、汽车状态更新的发布 |
8、汽车状态模拟 |
第13周 租辆酷车-实时位置更新的处理和展示 |
本周我们将实现实时位置更新的下游,包括websocket连接小程序,行程服务数据同步,以及最终前端展示 |
课程安排: |
1、WebSocket简介 |
2、给汽车服务添加websocket |
3、客户端的开锁处理 |
4、位置模拟服务的使用 |
5、位置实时更新的后端实现 |
6、行程位置更新 |
7、用户身份的Impersonation |
8、控制GRPC Gateway的头部映射 |
9、首页头像的实时更新 |
10、汽车服务及全部开发总结 |
第14周 租辆酷车服务的k8s集群部署 |
本周我们将租辆酷车服务后端部署到k8s服务器集群,全面实现小程序后端上云。 |
课程安排: |
1、Kubernetes的历史,集群配置及版本 |
2、kind本地集群的配置 |
3、容器 |
4、节点及物理层 |
5、服务与网络 |
6、构建Docker镜像 |
7、Dockerfile指令详解 |
8、为Docker镜像瘦身 |
9、flag与环境变量的使用 |
10、为所有服务制作及上传镜像 |
11、k8s yaml语法详解 |
12、卷,配置及密钥 |
13、服务及端口的暴露 |
14、基于istio服务治理 |
15、sidecar及配置注入 |
16、服务可视化 |
17、ingress配置 |
18、grpc负载均衡 |
19、路由规则的配置及平滑升级 |
20、全面实现小程序后端上云 |
阶段五:电商项目- 微服务基础 |
第15周 从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的流模式开发体验 |
第16周 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中的错误处理和超时机制 |
第17周 yapi文档管理、gorm详解 |
本周我们需要完成需求分析、在前后端管理中我们为什么需要yapi这样的接口管理系统、orm我们选择gorm,通过gorm基础知识的讲解我们将完成后续数据库操作的基础知识的准备 |
课程安排: |
1、电商系统和后台管理系统需求分析 |
2、微服务架构演进 |
3、微服务架构需要解决哪些核心问题? |
4、如何管理前后端分离系统的接口-yapi |
5、gorm的基本CRUD操作 |
6、model的基本定义 |
7、多表查询(分页、子查询) |
8、多表查询(一对多、多对多、表连接) |
9、如何hook主表名和保存后的自定义逻辑? |
10、gorm的事务性操作 |
第18周 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实现完整的微服务框架 |
第19周 用户服务的grpc服务 |
本周完成第一个grpc服务-用户服务,本周我们将完成用户相关的主要接口包括用户登录、用户注册、用户信息获取以及用户的基本信息修改等,在本周我们需要通过md5盐值加密用户密码保存的安全性问题 |
课程安排: |
1、user表结构设计 |
2、md5信息摘要算法 |
3、md5盐值加密解决用户密码的安全性问题 |
4、定义proto接口 |
5、grpc服务的开启和优雅退出 |
6、用户注册接口 |
7、通过id和mobile查询用户 |
8、修改用户信息接口 |
9、通过flag来解决参数启动服务 |
10、用户相关接口测试 |
第20周 用户服务的web服务 |
本周我们通过对gin的持续集成来将gin改造成一个适合微服务的接口层服务,本章节我们会介绍gin脚手架中的基础功能如:日志、配置文件等基础功能 |
课程安排: |
1、zap日志库的使用 |
2、gin调用grpc微服务的集成 |
3、viper配置文件管理 |
4、生产环境和开发环境配置文件隔离 |
5、session机制在微服务架构下的不足 |
6、gin集成jwt解决微服务下的认证 |
7、url添加登录权限验证 |
8、阿里云短信发送 |
9、redis集成短信发送功能 |
10、用户登录、注册功能 |
第21周 服务注册/发现、配置中心、负载均衡 |
本周我们会详细的理解到服务注册和发现组件-consul,将consul集成到各个微服务中,同时还需要统一的配置中心,将使用nacos作为配置中心,为grpc配置负载均衡策略 |
课程安排: |
1、服务注册和发现的重要性 |
2、consul集成到grpc中 |
3、如何解决grpc的健康检查 |
4、gin集成consul |
5、为什么需要配置中心 |
6、nacos的组、配置集和命名空间 |
7、gin和grpc集成nacos |
8、动态 获取可用端口号 |
9、负载均衡的常用策略 |
10、grpc集成负载均衡 |
阶段七:微服务实现电商系统 |
第22周 商品微服务的grpc服务 |
本周完成电商系统的核心微服务-商品服务,除完成商品的基本信息以外,还需解决商品分类、轮播图管理、品牌相关等大量和商品相关的接口,我们除了这些基本功能以外还需要解决另一个问题:物理删除还是逻辑删除? |
课程安排: |
1、商品相关表结构设计和数据导入 |
2、物理删除还是逻辑删除? |
3、proto接口定义 |
4、商品相关接口(列表、添加、修改、删除) |
5、商品分类相关接口(列表、添加、修改、删除) |
6、品牌相关接口(列表、添加、修改、删除) |
7、轮播图相关接口(列表、添加、修改、删除) |
8、批量获取商品的信息接口和应用场景 |
9、品牌分类相关接口 |
10、测试相关接口 |
第23周 商品微服务的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实现微服务 |
第24周 库存服务和分布式锁 |
本周完成独立的库存服务,库存服务在电商系统中有着非常重要的作用,对数据的一致性要求非常高,所以和库存相关的功能关系着是否能有效的解决好分布式系统中的重要问题包括:分布式锁、分布式事务等非常重要的功能 |
课程安排: |
1、为什么库存服务需要独立成微服务 |
2、库存服务的表结构设计 |
3、库存相关的proto接口设计 |
4、通过数据库事务完成库存的扣减 |
5、库存的归还的重要性 |
6、订单超卖是如何产生的? |
7、什么是分布式锁 |
8、乐观锁详解 |
9、基于redis分布式锁的原理 |
10、redis分布式锁的细节:setnx、看门狗等机制 |
第25周 订单和购物车微服务 |
订单服务是整个电商的中的最重要也是最复杂的微服务,在订单服务中我们需要解决分布式事务的问题,我们将先完成订单和购物车相关的基本功能,为后面的分布式事务做好准备 |
课程安排: |
1、需求分析(购物车、订单) |
2、表结构设计 |
3、proto接口定义 |
4、添加商品到购物车、更新购物车、获取购物车接口 |
5、新建订单接口以及难点分析 |
6、订单详情接口 |
7、通过mysql事务解决数据创建过程中的事务 |
8、gin集成订单和购物车接口 |
9、测试订单相关接口 |
10、测试购物车相关接口 |
第26周 支付宝支付、用户操作微服务、前后端联调 |
以上我们基本上完成了电商核心的功能,本周我们完成剩余的功能,包括用户相关的操作比如收藏、收货地址管理等。最后我们将支付宝相关的支付功能集成到订单功能中,完成左右的功能之后我们将联调所有的接口 |
课程安排: |
1、支付宝沙箱环境开发流程 |
2、私钥、公钥的概念以及支付宝如何解决订单的安全性问题 |
3、支付宝的公钥、私钥和回调url配置 |
4、生成支付宝的支付url |
5、gin集成支付宝支付 |
6、支付宝回调通知url逻辑接口 |
7、用户操作服务需求分析 |
8、用户操作相关的接口源码分析 |
9、电商系统接口联调 |
10、电商管理系统接口联调 |
第27周 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、商品的上架功能和搜索 |
阶段八:分布式系统核心、微服务的部署 |
第28周 分布式理论基础、分布式事务解决方案 |
本周我们需要解决非常重要的一个话题-分布式事务和幂等性。这两个知识点既是难点也是面试中的常见话题,所以理解分布式事务的理解决定了你是否能再高级面试中脱颖而出的关键。 |
课程安排: |
1、为什么订单会有超时机制 |
2、数据库事务的ACID特性 |
3、分布式系统中出现哪些故障会导致数据不一致? |
4、cap理论 |
5、BASE理论 |
6、2pc两阶段提交分布式事务 |
7、 TCC分布式事务实现方案 |
8、基于本地消息的最终一致性方案 |
9、基于可靠消息的最终一致性 |
10、最大努力通知方案 |
第29周 学习rocketmq实现幂等性机制等 |
本周我们需要实现基于可靠消息的最终一致性实现方案、我们将基于rocketmq来实现该分布式事务方案,在本章我们将会更加详细的理解到一个分布式事务实现的具体细节 |
课程安排: |
1、mq的应用场景 |
2、mq消息队列技术选型 |
3、rocketmq的消息类型 |
4、发送普通消息、延迟消息、事务消息 |
5、订单新建的过程中如果保证库存数据的最终一致性 |
6、库存扣减在分布式事务中的特殊性 |
7、什么时候应该对事务消息进行确认? |
8、库存归还的细节处理 |
9、什么是服务雪崩?服务雪崩和超时重试机制 |
10、常用的幂等性解决方案 |
第30周 链路追踪、限流、熔断、降级 |
一个高可用的微服务框架还需要解决负载的微服务间的调用链的监控和超时会带来的服务雪崩,本周会引入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的熔断接口-错误数、错误率、慢请求 |
第31周 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、自动化部署 |
声明:本站所有资料均来源与网络以及用户发布,如对资源有争议请联系微信客服我们可以安排下架!