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