Go底层原理与工程化实践

Go底层原理与工程化实践

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

一本书吃透一整套Go项目开发框架。

内容简介

全书分为两篇:

第一篇详细介绍Go语言高性能优势是如何实现的,包括经典的GMP调度模型,Go语言调度器的实现,垃圾回收,以及如何基于管道、锁等并发编程。

第二篇主要是项目实战,手把手带领读者从0开始搭建高性能、高稳定的Go服务。以及在面对线上问题时,如何调试、分析、解决。

作者简介

作者李乐,Golang开发专家,先后就职于滴滴出行、好未来,西安电子科技大学硕士,拥有多年互联网研发经验。

章节目录

版权信息

前言

第1章 为什么要了解Go底层

1.1 Go服务怎么出现502状态码了

1.1.1 服务超时为什么导致502状态码

1.1.2 基于context的超时控制

1.2 Go服务为什么没响应了

1.2.1 谁阻塞了协程

1.2.2 写管道可以不阻塞协程吗

1.3 Uber如何通过GC调优节约7万个内核

1.3.1 GC概述

1.3.2 Uber半自动化GC调优

1.4 Go语言进阶路线

1.4.1 Go语言快速入门

1.4.2 Go高并发编程

1.4.3 Go语言项目实战

1.5 本章小结

第2章 Go语言并发模型

2.1 GMP调度模型

2.1.1 Go语言并发编程入门

2.1.2 GMP调度模型概述

2.1.3 深入理解GMP调度模型

2.2 协程管理

2.2.1 基础补充

2.2.2 协程创建

2.2.3 协程切换

2.2.4 协程栈会溢出吗

2.2.5 协程退出

2.3 调度器

2.3.1 调度器实现原理

2.3.2 时间片调度

2.3.3 基于协作的抢占式调度

2.3.4 基于信号的抢占式调度

2.4 本章小结

第3章 调度器触发时机

3.1 网络I/O

3.1.1 探索Go语言网络I/O

3.1.2 Go语言网络I/O与调度器

3.1.3 如何实现网络读写超时

3.2 管道

3.2.1 管道的基本用法

3.2.2 管道与调度器

3.3 定时器

3.3.1 定时器的基本用法

3.3.2 定时器与调度器

3.4 系统调用

3.4.1 系统调用会阻塞线程吗

3.4.2 系统调用与调度器

3.5 本章小结

第4章 Go语言并发编程

4.1 什么是并发问题

4.2 CSP并发模型

4.2.1 基于管道-协程的CSP模型

4.2.2 管道与select关键字

4.2.3 如何实现无限缓存管道

4.3 基于锁的协程同步

4.3.1 乐观锁

4.3.2 悲观锁

4.4 如何并发操作map

4.4.1 map的并发问题

4.4.2 并发散列表sync.Map

4.5 并发控制sync.WaitGroup

4.6 并发对象池sync.Pool

4.7 如何实现单例模式

4.8 并发检测

4.9 本章小结

第5章 GC原理、调度与调优

5.1 内存管理

5.1.1 如何设计动态内存分配器

5.1.2 Go语言内存分配器

5.1.3 Go语言内存管理

5.1.4 内存逃逸

5.2 三色标记与写屏障

5.2.1 三色标记

5.2.2 写屏障

5.3 标记与清理

5.3.1 垃圾回收执行阶段

5.3.2 经典的stopTheWorld

5.3.3 辅助标记

5.3.4 内存清理

5.4 GC调度与GC调优

5.4.1 GC触发时机

5.4.2 GC协程调度模式

5.4.3 缓存框架bigcache中的GC调优

5.5 本章小结

第6章 手把手教你搭建Go项目

6.1 Go项目架构设计

6.1.1 分层架构

6.1.2 代码布局

6.1.3 命令管理cobra

6.1.4 配置管理Viper

6.2 Web框架Gin

6.2.1 RESTful API

6.2.2 引入Gin框架

6.2.3 中间件

6.2.4 如何记录访问日志

6.3 日志与全链路追踪

6.3.1 引入日志框架Zap

6.3.2 基于context的全链路追踪

6.3.3 基于协程ID的全链路追踪

6.4 访问数据库

6.4.1 引入Gorm框架

6.4.2 CURD

6.4.3 事务

6.4.4 如何记录Trace日志

6.5 HTTP调用

6.5.1 go-resty框架概述

6.5.2 请求追踪

6.5.3 长连接还是短连接

6.5.4 如何记录Trace日志

6.6 单元测试

6.6.1 Go语言中的单元测试

6.6.2 引入单元测试

6.7 本章小结

第7章 高性能Go服务开发

7.1 分库分表

7.1.1 分库分表基本原理

7.1.2 基于Gorm的分表

7.2 使用Redis缓存

7.2.1 go-redis的基本操作

7.2.2 基于Redis的性能优化

7.3 使用本地缓存

7.3.1 自己实现一个LRU缓存

7.3.2 基于bigcache的性能优化

7.4 资源复用

7.4.1 协程复用之fasthttp

7.4.2 连接复用之连接池

7.4.3 对象复用之对象池

7.5 其他

7.5.1 异步化处理

7.5.2 无锁编程

7.6 本章小结

第8章 高可用Go服务开发

8.1 可用性定义与高可用三板斧

8.1.1 可用性定义

8.1.2 高可用三板斧

8.2 流量治理组件Sentinel

8.2.1 Sentinel快速入门

8.2.2 流量控制

8.2.3 系统自适应流量控制

8.2.4 熔断降级

8.2.5 Sentinel原理浅析

8.3 Go服务监控

8.3.1 运行时监控

8.3.2 自定义监控

8.4 其他

8.4.1 超时控制

8.4.2 错误处理

8.5 本章小结

第9章 Go语言微服务入门

9.1 Go语言RPC标准库

9.1.1 使用入门

9.1.2 原理浅析

9.2 微服务框架Kitex

9.2.1 使用入门

9.2.2 可扩展性

9.2.3 服务治理

9.3 本章小结

第10章 实现Go服务平滑升级

10.1 服务升级导致502状态码

10.2 Go语言信号处理框架

10.3 Go服务平滑退出

10.4 基于gracehttp的Go服务平滑升级

10.5 本章小结

第11章 Go服务调试

11.1 Go程序分析利器pprof

11.1.1 pprof概述

11.1.2 内存指标分析

11.1.3 CPU指标分析

11.1.4 锁与阻塞指标分析

11.2 性能分析工具Trace

11.3 使用dlv调试Go程序

11.3.1 Go语言调试工具dlv

11.3.2 dlv调试实战

11.4 本章小结

第12章 线上服务实战

12.1 两种导致502状态码的情况

12.1.1 panic异常

12.1.2 长连接为什么会导致502状态码

12.2 意想不到的并发问题

12.2.1 并发问题引起的JSON序列化异常

12.2.2 并发问题引起的服务发现故障

12.3 HTTP服务假死问题

12.3.1 写日志阻塞请求

12.3.2 防缓存穿透组件导致的服务死锁

12.4 HTTP客户端引发的问题

12.4.1 长连接还是短连接

12.4.2 偶现Connection reset by peer问题

12.5 类型不匹配导致的线上问题

12.5.1 一个双引号引起的线上事故

12.5.2 自定义JSON序列化与反序列化

12.6 其他问题

12.6.1 怎么总是空指针异常

12.6.2 诡异的超时问题

12.7 本章小结

Go底层原理与工程化实践是2024年由机械工业出版社出版,作者陈雷。

得书感谢您对《Go底层原理与工程化实践》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
推荐系统技术原理与实践 电子书
本书系统介绍推荐系统的技术理论和实践。首先介绍推荐系统的基础知识;然后介绍推荐系统常用的机器学习和深度学习模型;接着重点介绍推荐系统的4层级联架构,包括召回、粗排、精排和重排,以及谷歌、阿里巴巴等大型互联网公司在4层级联架构中的模型设计和实现原理;紧接其后介绍多目标排序在推荐系统中的应用,具体介绍阿里巴巴、谷歌等大型互联网公司的实践;最后从不同角度审视推荐系统,介绍公平性问题、知识蒸馏、冷启动等各
分布式架构原理与实践 电子书
本书从软件结构的发展历史入手,描述了分布式架构的特性和存在的问题,并围绕这些问题展开了分析和实践。
软件定义网络核心原理与应用实践 电子书
本书分为核心原理和应用实践两大部分,对软件定义网络(SDN)技术进行了全面剖析和深入解读。第一部分首先阐述了SDN的设计思想与体系架构,详细分析了软件定义网络的控制转发分离和可编程性两个突出属性,其次介绍了以OpenFlow为代表的SDN南向接口协议,以及北向和东向接U协议,接下来根据SDN的层次化架构,依次介绍了SDN数据平面、控制平面以及SDN应用案例,最后梳理总结J,SDN标准化进展以及学术
分布式对象存储——原理、架构及Go语言实现 电子书
适读人群 :本书适合从事云存储方面工作的工程师或架构师,也适合想要学习和实现分布式对象存储的读者。   赠送价值249元的云存储专家视频课程   掌握云存储理论,动手搭建分布式对象存储架构   云存储已经是大家司空见惯的一种网络服务了,比如大家常用的百度云盘、美亚S3、微软的OneDrive、苹果公司的iCloud和谷歌的Google Cloud等。云存储背后的原理是怎样的,又是如何实现的呢?   本书完全从云存储的需求出发讲述对象存储的原理,并且带领读者使用Go语言编程,循序渐进、从无到有地建立起一个分布式对象存储的架构。也就是说,本书首先介绍为什么要这么做,然后解释怎么做。   本书适合云存储方面的研究者、工程师或架构师阅读,也可以供对云存储技术感兴趣的读者参考。在读完本书之后,你将较为深入地理解对象存储服务,甚至能够实现自己的对象存储服务。   本书包括以下内容:    对象存储简介;    分布式系统原理;    元数据以及元数据服务;    数据校验和去重;    数据冗余和即时修复;    断点续传;    数据压缩;    数据维护。
游戏引擎原理与实践 卷1:基础框架 电子书
着重讲解游戏引擎的基础知识和工作原理,并结合配套的游戏引擎示例和详尽的代码,介绍游戏引擎开发的技术细节。