零声教育Golang云原生第五代课程大纲
零声教育Nick
2023-02-28
课程购买地址
腾讯课堂 Golang/云原生/DevOps/分布式/微服务/服务网格
Golang/云原生/DevOps
分布式/微服务/服务网格
工程组件
云原生
场景化解决方案
Golang
分布式中间件
golang特性
并发编程
网络编程
常见数据结构
设计模式
高性能web框架gin
轻量级访问控制框架casbin
高性能RPC框架gRPC
Api文档管理go-swagger
对象关系映射gorm
命令行框架cobra
轻量级认证机制jwt
字段验证器validator
结构化日志记录logrus
网关grpc-gateway
mysql
redis
mongodb
ElasticSearch
kafka
etcd
服务网格istio
高性能消息传输协议protobuf
Docker容器
Kubernetes基础
git
gitlab
持续交付Argo
监控解决方案Prometheus
分布式链路追踪OpenTelemetry
即时通讯goim
goadmin后台管理系统
分布式日志系统
EFK分布式日志系统方案
OAuth2.0授权登录
微服务架构设计
Kubernetes声明式资源管理Kustomize
defer/recover异常捕获和处理
interface隐式实现
通过通信共享内存
函数式编程与闭包
sync.WaitGroup等待一组goroutine完成
sync.Mutex与sync.RWMutex实现并发安全
sync.Pool实现对象的重复利用
sync.Once实现数据懒加载
sync.Map线程安全集合
sync.Cond根据条件等待goroutine完成
atomic通过内存共享数据
TCP编程
UDP编程
WebSocket编程
Http编程
UDP可靠传输协议QUIC
单元测试与性能分析
切片(可变数组)
集合(字典)
链表
队列
栈
树
常见算法
冒泡排序
选择排序
插入排序
快速排序
哈希查找
二叉查找树
单例模式
工厂模式
策略模式
观察者模式
适配器模式
代理模式
责任链模式
context控制协程退出
功能测试
基准测试
模糊测试
http测试
pprof性能分析
cgo与C语言交互
RESTful API设计规范
swag与gin集成
swag与net/http集成
RESTful API与API版本控制
中间件编程及jwt身份认证
Controller模型绑定与参数验证
Protobuf消息传输
使用protobuf定义服务
一元请求与流式请求
header与trailer元数据传输
TLS与双向TLS确保通讯安全
OAuth2认证与拦截器
Keepalive连接保活配置
多路复用与健康检查
Resolver服务名称解析器
Client 连接池的实现
类型的导入与消息格式的定义
protoc编译器与API读写消息
Model的定义与tag的使用
基于orm的CRUD与原生SQL
嵌套事务、SavePoint/RollbackTo事务
Hook与Session
command及多级command
flags定义、配置绑定及flags检查
args内置验证器与自定义验证
Hook及Hook的继承
jwt认证机制原理
HS、RS、ES、ED签名密钥生成
HS、RS、ES、ED签名与验证
标签符号及单字段验证
struct绑定与多层级验证
自定义字段、结构体补充及自定义验证
struct与map基于map规则验证
根据locale本地化提示消息
以std、file、fileRotate三种方式输出日志
通过Hooks向多个位置发送日志
option方式实现gRPC接口映射
实现以HttpBody响应请求
将文件通过网关上传的gRPC服务端
swagger接口文档输出
自定义网关实现
基于gin框架的web开发脚手架
基于grpc的微服务开发脚手架
基于ACL访问控制模块流量过滤
基于RBAC模型的访问控制
基于ABAC模型的访问控制
配置解决方案viper
读取本地配置文件
读取远程ETCD配置中心配置文件
redis整体结构、存储结构
string 命令及内部存储原理
list 命令及内部存储原理
hash 命令及内部存储原理
set 命令及内部存储原理
zset 命令及内部存储原理
redigo 操作
OLTP、OLAP、体系结构
表创建删除、数据表操作(CRUD)
聚合查询、分组查询、联表查询
主键索引、唯一索引
索引实现-存储结构以及B+树
最左匹配原则以及覆盖索引
索引失效、索引优化、SQL优化
explain分析以及慢日志查询
事务控制语句
加锁流程、释放锁流程
读异常、死锁原理以及案例分析
mongodb bson解析
mongodb crud 操作
mongodb 复合索引查询、聚合查询
mongodb 文档管理
mongodb go driver操作
mongodb 连接池实现
etcd v2与v3 比较
etcd 数据版本号机制
etcd 索引以及B+树
etcd 读写机制以及事务 ACID 特性分析
Raft共识算法与leader选举和日志复制
etcd go 驱动包操作
etcd 服务发现
kafka 体系结构以及读写机制
kafka 驱动包 生产者消息生产策略
kafka 异步处理
倒排索引、lucene
es 集群健康值检查
es 中文分词、聚合查询
es go驱动包操作、索引以及文档操作
在Kubernetes上部署istio
istio流量管理实践
istio安全配置实践
使用 Prometheus 进行生产规模的监控
微服务工具集go-kit
jaeger与zipkin集成
otel-collector集成
git的工作流程
代码管理
分支管理
代码共享与项目更新
代码检查与对比
gitlab CI/CD 标准流程
基于gitlab的代码评审
变量和安全文件
CI/CD 配置文件详解
基于Docker安装gitlab runner
基于k8s安装gitlab runner
基于docker out docker 构建docker镜像
基于k8s kaniko 构建docker镜像
生成资源
设置贯穿性字段
组织和制定资源
Docker安装配置
Linux Namespace隔离
Docker 命令行操作
镜像分层机制
Volume数据存储持久化与数据共享
bridge、host、overlay网络驱动
Docker Compose项目部署
Swarm 集群高可用
kubeadm集群安装和升级
kubectl命令行操作
Node的隔离与恢复
Node的扩容
Namespace与Context集群环境共享与隔离
基于节点资源的pod驱逐机制
string 对象存储应用
list 栈应用
zset 排行榜
mvcc原理,当前读以及快照读
配置文件的方式实现gRPC接口映射
string 累加器应用
string 分布式锁
string 位运算应用
list 队列、异步队列、阻塞队列
list 固定窗口记录
hash 对象存储应用
set 唯一无序应用
set 关系应用
zset 延迟队列
zset 时间窗口限流
redigo 管道和事务
redigo 订阅发布、stream
mysql网络模块:连接池与事务
普通索引、组合索引
索引与约束
事务的acid特性
事务的隔离级别
kafka 系统解耦
kafka 流量削峰
kafka 日志处理
kafka 驱动包 生产者 ack 策略
kafka 驱动包 消费者组 rebalance 机制
etcd 体系结构
etcd CURD
etcd 监听、事务、租约
Raft 运行机理详解
etcd leader选举
etcd 分布式锁
es-head和kibana
es 索引操作以及文档操作
es 读写机制
es 匹配查询、范围查询、多条件查询
es 高级查询:term、match、aggregation
容器health check
容器重启策略
容器资源配额
容器命名空间隔离
Cgroup资源配额限制
RootFs环境依赖
容器写时复制机制
容器联合挂载机制
镜像内容寻址机制
镜像共享
私有注册中心构建
自定义容器启动命令或入口程序
基于Swarm集群的分布式部署
基于Swarm集群的灰度发布
Swarm集群 deploy stack
flannel网络插件的安装
CRI与cri-dockerd
api server 组件
controller manager 组件
Scheduler 组件
kubelet 组件
proxy 组件
pod的定义与基本用法
pod 生命周期与重启策略
容器镜像拉取策略
容器资源配额
容器健康检查与服务可用性
init Container
NodeSelector定向调度
Node亲和性调度NodeAffinity
Pod 亲和度与互斥调度 PodAffinity
pod Taints 和 Tolerations
pod Priority 优先级调度
Deployment部署
Deployment 升级和回滚
Deployment 暂停与恢复
Deployment 手动与自动伸缩
service的定义与基本用法
service 4种发布类型
service 无选择符service
service HeadLess Service
service 环境变量与DNS服务发现
service TLS
ingress http 7层路由机制
ingress Controller 安装
ingress 转发策略配置
ingress TLS 配置
Volume与PersistentVolume
Volume 与 configMap
Volume 与 secret
PersistentVolume静态制备
StorageClass动态制备
PersistentVolumeClaim磁盘申领
部署cephfs分布式存储文件系统
ABAC授权模式
Pod的安全策略配置
资源的基准与覆盖
使用kustomize操作资源
Argo 安装配置
Argo CD持续交付
Argo Canary和BlueGreen 部署
Kubernetes Pod
Kubernetes Service
Kubernetes Volume
Kubernetes集群管理
Kubernetes集群安全
Webhook授权模式
RBAC授权模式
Kubernetes二开
metrics server 监控node和pod
通过client-go管理集群资源
通过聚合apiserver扩展k8s功能
通过自定义k8s资源扩展k8s功能
容器声明周期处理函数
Kubernetes Pod 无状态部署
Kubernetes Pod 调度
静态pod
DaemonSet 部署
StatefulSet部署MongoDB集群
Job 批处理
Crontab 定时任务
StatefulSet部署Redis集群
Kubernetes Pod 有状态部署
StatefulSet部署ES集群
StatefulSet部署ETCD集群
StatefulSet部署Kafka集群
StatefulSet部署Mysql集群
镜像构建
Docker项目部署
Docker基础
Docker镜像
记录规则配置
报警规则配置
PromQL查询语句
influxdb远程数据中心配置
报警信息配置管理
自定义应用程序指标
支持单个、多个、广播消息推送
心跳检测(应用心跳和tcp、keepalive、http log pulling)
接入层支持多协议(websocket,tcp,http)
可拓扑的架构(job、logic模块可动态无限扩展)
基于Kafka做异步消息推送
注册发现服务
消息协议设计(基于protobuf)
goim推送服务架构分析
OAuth2.0 协议流程分析
授权码、隐藏式、密码式、客户端凭证流程分析以及应用场景
授权码详细流程分析以及restful api 详解
go OAuth2.0 第三方登录应用
Go Admin工程安装
架构分析和各模块精讲
cobra命令行实战
casbin权限管理
RBAC实践、多租户实践
添加新应用
添加新模块
自动生成代码
配置权限
swagger api
流媒体网站开发
流媒体直播框架分析
前后端分离设计
RESET API设计,包括用户、视频、评论处理
用户、评论、会话、待删除视频数据库设计
meddleware handler机制
登录注册
视频上传
视频评论
流控算法
grpc客户端服务端编程
传统 elk 解决方案及其弊端
日志收集服务开发
etcd 管理主要信息收集
配置文件热更新
kafka 日志收集
elasticsearch 日志分析
ElasticSearch 分布式集群部署
analysis-ik分析器与分词器
logstash 管道安装
filebeat 从日志文件采集日志
golang 通过SDK主动上传日志
中间件统一实现Oauth2身份验证
路由分组实现api版本控制
jwt实现客户端令牌
logurs日志组件封装
viper配置文件读取
etcd应用配置中心
redis数据缓存
mysql数据存储
EFK统一日志采集
服务与服务之间采用TLS加密通信
etcd服务注册和服务发现
etcd应用配置中心
EFK统一日志采集
viper配置文件读取
redis 数据缓存
mysql数据存储
聚合器微服务设计模式
代理微服务设计模式
链式微服务设计模式
分支微服务设计模式
异步消息传递微服务设计模式
分布式日志链路追踪设计
分布式日志链路追踪设计
logurs日志组件封装
零声服务
适宜工程师人群
参考书籍
学习方法大6点
学习方法小5点
3~5年后端开发工作经验想学go语言的工程师
想进入云原生云计算方向的golang工程师
计算机专业本科学历应届毕业生
有一定基础的情况,可根据实际情况侧重学习某个板块
多想,遇到任何问题,深入思考找到真正的问题
多练,通过练习将知识点融汇贯通
多问,通过自己思考和尝试仍不理解的问题,多找老师沟通
多讨论,找身边的同时朋友讨论技术问题
每节课程先预习课件,提出一些疑问,再看视频学习,看完一遍视频之
后再练习
课后总结:学到什么,可以在哪些场景应用,没学懂的内容有哪些,反
复学习练习
将学到的内容以文档、博客或其他形式向外输出,通过这种方式整理知
识点之间逻辑关系,加强学习效果
如果可以,建议参加零声学院的费曼学习计划,巩固所学知识
通过自己努力搞不懂的问题,积极与老师沟通
《Go 语言底层原理剖析》
《Docker 实践》
《Docker 容器与容器云 第2版》
《Kubernetes 权威指南 第4版》
《云原生应用框架》
目标岗位
golang高级开发工程师
运维开发工程师
云计算开发工程师
golang服务端开发工程师
中后台开发工程师
3~5年golang开发工作经验没有形成自己技术体系的工程师
5大课程板块
golang:解决go语言编程问题
工程组件:解决golang工程化问题
分布式中间件:解决技术栈单一及分布式开发问题
云原生:云原生分布式部署、监控及运维问题
场景化解决放案:巩固基础、项目实战以及提供分布式解决放案
一般情况下课根据大纲从前往后学习,层层递进
《Prometheus 云原生监控》
《云原生服务网格Istio》
课程服务
老师在线答疑
面试简历梳理
面试总结复盘
课程数据
文件的copy与文件的读写
prometheus集成
收集器数据采集
golang基础
golang安装与配置
数据类型与变量
变量作用域与函数
运算符与优先级
go mod 依赖管理
流程控制语句
语言结构与基础语法
golang:
5个关键特性、8个并发编程操作、5类网络编程、
4种单元测试方法、6种数据结构、6种常见算法、
7种设计模式、1种性能测试方法
工程组件:
14个,可构建完整的项目工程(http/rpc/cmd),
包括:web框架、rpc框架、微服务框架、链路追踪、
字段验证、权限校验、日志记录、消息传输、
配置解析、数据入库、文档展示等各个方面
分布式中间件:
6个,包括关系数据库、文档型数据库、键值对缓存、
消息队列、服务发现、弹性搜索和分析等,
可满足绝大部分分布式应用场景
云原生工具:
8个,包括 代码管理、持续集成、持续部署、
服务容器化、监控、服务网格等一整套devops工具链
场景化解决方案:
7个,包括 微服务架构落地,项目实战,
web和rpc工程脚手架落地等
课程时长:预计200+小时
课程收获
熟练掌握golang编程特性
熟悉常见的数据结构和算法
掌握一套完整的项目工程体系
掌握一套完整的DevOps流程及工具链
掌握下一代微服务解决方案服务网格
掌握大量的场景化解决方案和项目实战经验
Retry与LoadBalance
如何使用golang标准库
编译与运行
goland配置与debug
开发环境安装配置
三层结构与中间件编程
限流与熔断
请求链路追踪
服务发现和负载均衡
api网关
prometheus监控指标
零声教育内部CRM项目实战
单体应用实战
微服务应用实战
Created With
MindMaster