零声教育Golang云原生第五代课程大纲
零声教育Nick
2023-02-28
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项目实战 单体应用实战 微服务应用实战