背景介绍
随着云原生应用的流行,作为其代表技术的微服务架构,在业内的实践已经逐步走向成熟。国内一线互联网公司都在落地微服务的前沿,或将已有系统拆分为微服务,或用微服务来开发新系统。
Go 以简明的语法、丰富的内置类型、极高的并发性能,成为落地微服务架构的绝佳利器。目前各大公司都在将服务端技术栈往 Go 迁移,作为一线开发者,掌握 Go 微服务,紧跟服务端开发趋势,能更从容应对业务需求,提高个人职场竞争力。
专栏解读
经过对一线开发者的调研,我们总结了 Go 微服务学习的几大常见难点,本专栏会从内容设计上,将其逐一击破:
①缺乏云原生应用知识与开发经验
专栏第一部分内容包括:云原生的基础知识、微服务的组成及发展,如何使用 DDD(领域驱动设计)来划分微服务,以及微服务是如何在云上构建和部署的。
②Go 微服务的学习资料与实战案例较少
专栏第二部分主要介绍 Go 开发的基础知识,包括: Go 语法和流程控制、Go 并发和 Go Web 应用开发,帮助你快速掌握 Go 开发的基本要领。了解基础知识后,以一个货运平台的实战案例,讲解微服务部署、容器编排、持续集成和自动化测试。
③没有微服务架构开发设计落地的完整过程借鉴
本专栏的第三部分,主要讲解微服务架构中基础组件的原理,每一模块都辅以 Go 开发实战案例,包括服务注册与发现、RPC 调用、网关、容错处理、负载均衡、统一认证与授权,以及分布式链路追踪等。
④缺乏真实生产环境中的实战开发经验
专栏前两个部分以一个货运平台的完整实战案例,带你走完微服务架构落地的全过程,第四部分主要分享 Go 微服务开发中的相关经验和要点,避免你在未来的开发中“踩坑”,包括日志采集、Go 错误处理、并发陷阱和系统监控等。
讲师简介
朱荣鑫 服务端技术专家,源图信息架构负责人
微服务早期的实践者,微服务方面的技术专家,对云原生、微服务、容器化、高并发、分布式等有多年深入的实践经验。《Spring Cloud微服务架构进阶》《Go 语言高并发与微服务实战》作者,公众号“aoho求索”的作者。
课程大纲
模块一:云原生与微服务架构基础
01 | 为什么说云原生重构了互联网产品开发模式?
02 | 云原生基础架构的组成以及云原生应用的特征
03 | 微服务架构是如何演进的?
04 | DDD 领域场景分析的战略模式
05 | 为什么说 Service Mesh 是下一代微服务架构?
模块二:Go 语言基础和示例应用
06 | Go 语言开发快速回顾:语法、数据结构和流程控制
07 | 如何使用 Go 更好地开发并发程序?
08 | 如何基于 Go-kit 开发 Web 应用:从接口层到业务层再到数据层
09 | 案例:货运平台应用的微服务划分
10 | 案例:微服务 Docker 容器化部署和 Kubernetes 容器编排
11 | 案例:如何结合 Jenkins 完成持续化集成和自动化测试?
模块三:服务注册与发现
12 | 服务注册与发现如何满足服务治理?
13 | 案例:如何基于 Consul 给微服务添加服务注册与发现?
14 | 案例:如何在 Go-kit 和 Servcie Mesh 中进行服务注册与发现?
模块四:微服务之间的 RPC 调用
15 | 微服务间如何进行远程方法调用?
16 | Go RPC 如何实现服务间通信?
17 | gRPC 和 Apache Thrift 之间如何进行选型?
18 | 案例:Go-kit 如何集成 gRPC?
模块五:微服务网关
19 | 微服务网关如何作为服务端统一入口点?
20 | 如何进行网关选型?
21 | 案例:如何使用 Kong 进行网关业务化定制?
模块六:微服务容错处理
22 | 如何保障分布式系统的高可用性?(上)
23 | 如何保障分布式系统的高可用性?(下)
24 | 如何实现熔断机制?
25 | 如何实现接口限流和降级?
26 | 案例:Servcie Mesh 中实现熔断限流和降级
模块七:负载均衡
27 | 负载均衡如何提高系统可用性?
28 | 案例:如何在 Go 微服务中实现负载均衡?
模块八:统一认证与授权
29 | 统一认证与授权如何保障服务安全?
30 | 如何设计基于 OAuth2 和 JWT 的认证与授权服务体系?
31 | 案例:如何自定义授权服务器?
32 | 案例:如何保证微服务实例资源安全?
模块九:分布式链路追踪
33 | 如何追踪分布式系统调用链路的问题?
34 | OpenTracing 规范介绍与分布式链路追踪组件选型
35 | 案例:如何在微服务中集成 Zipkin 组件?
模块十:Go 微服务开发的其他要点
36 | 如何使用 ELK 进行日志采集以及统一处理?
37 | 如何处理 Go 错误异常与并发陷阱?
38 | 案例:如何使用 Prometheus 和 Grafana 监控预警服务集群?