Preface 前言
为什么要写这本书
Go语言是目前非常受欢迎的语言之一,具有入门快、性能高、开发效率高等特点,越来越多的互联网企业开始使用Go语言。云原生体系中的Kubernetes、Docker等开源项目也都是基于Go语言开发的,因此想要深入研究云原生技术,就必须精通Go语言。
但是,大多数Go开发者往往只是做一些简单的增删改查,始终徘徊在Go初级阶段。想要进一步掌握Go语言,最快的方法就是原理与实战相结合,这也是本书写作的初衷。
本书首先对Go语言的核心原理进行详细介绍,其次分享大量的Go项目实战经验与技巧,希望读者能够从中有所收获。
本书特色
❑ 提供Go高并发特性与并发编程常用技巧:本书对Go语言的核心原理,包括并发模型、调度器、垃圾回收、并发编程等进行了详细介绍。
❑ 应对大部分业务场景:本书在讲解项目实战时,并没有停留在简单的增删改查层面,而是分享了很多Go项目开发经验,包括常用开源框架的使用技巧与核心原理、高性能与高可用的Go服务开发,以及Go服务平滑升级等。
❑ 给出线上问题处理方案:本书列举了10多个线上典型问题并讲解了这些问题的解决思路,这些问题都是Go语言初学者经常遇到的,相信读者能够从中吸取经验,总结出一套属于自己的方法论。
❑ 引入“问题-思考-探索”模式:本书在讲解Go语言核心原理以及项目实战时,尽可能从问题出发,引导读者主动思考、主动探索,以便读者对所学知识有更深入的理解。
读者对象
❑ Go开发工程师
❑ 对Go语言感兴趣的读者
如何阅读本书
本书共12章。
第1章 先以3个具体的案例为切入点,说明深入学习Go语言的必要性,然后从原理与实战两个维度分享Go语言进阶路线。
第2章 详细介绍经典的GMP调度模型,其中重点介绍了协程以及调度器的实现原理,以便读者掌握Go并发模型。
第3章 主要介绍网络I/O、管道、定时器以及系统调用是如何触发调度的。
第4章 详细介绍Go语言的几种常见多协程同步方案,包括基于管道的协程同步、基于锁的协程同步,以及非常有用的并发检测工具race。
第5章 重点讲解Go语言GC(垃圾回收)的实现原理,包括三色标记法与写屏障技术、标记过程与清理过程、GC调度与GC调优。
第6章 首先以经典的商城项目为例,带领读者从0到1搭建一个完整的Go项目。其次重点介绍常用开源框架的使用技巧,包括Web框架Gin、日志框架Zap与全链路追踪、数据库访问框架Gorm、HTTP客户端框架go-resty、单元测试等。
第7章 详细介绍高性能Go服务开发的常用方案,包括分库分表、缓存,以及资源复用、异步化处理、无锁编程等。
第8章 详细介绍高可用Go服务开发的常用方案,包括流量治理、Go服务监控、超时控制以及错误处理。
第9章 首先介绍微服务架构的基本概念,其次选取目前比较流行的一款微服务框架Kitex,讲解它是如何实现微服务架构以及服务治理的。
第10章 首先介绍为什么Go服务升级会导致502状态码,其次讲解如何基于开源框架gracehttp实现Go服务平滑升级。
第11章 首先讲解使用Go语言性能分析利器pprof、Trace分析Go服务性能指标的技巧,其次介绍Go语言专用的调试工具dlv。
第12章 列举10多个线上问题并讲解这些问题的解决思路,包括Go服务502问题、并发问题、HTTP服务假死问题等,希望读者在以后的开发工作中能够避免类似的问题发生,或者在遇到类似的线上问题时能够从容应对。
读者可以根据自己的兴趣及需要,选择阅读相关章节。
勘误和支持
由于水平有限,再加上编写时间仓促,书中难免会出现不准确的地方,恳请读者批评指正。如果读者有更多的宝贵意见,欢迎访问https://segmentfault.com/u/lishuo0进行专题讨论,我们会尽量在线上为读者提供解答。同时,读者也可以通过邮箱lieshuoa@163.com联系我们。期待得到读者的反馈,让我们在技术之路上互勉共进。
李乐