Go语言高并发与微服务实战
①一般下午5点前订单,当日发货,开发票联系客服②教材,学习,考试类书默认有笔记(或做过)③其他类书一般无笔记,提前与客服沟通好再下单,否则本店不承担责任)④部分图书籍采用标准图片,可能存在不同印次不同封面,内容一致⑤出版时间过长的书都可能有自然发黄现象。
¥
15.87
1.8折
¥
89
九品
库存3件
作者朱荣鑫.黄迪璇.张天
出版社中国铁道出版社
ISBN9787113266622
出版时间2020-04
装帧平装
开本16开
定价89元
货号1262130020437584480
上书时间2024-11-13
商品详情
- 品相描述:九品
- 商品描述
-
作者简介
朱荣鑫软件工程硕士,微服务早期实践者,微服务方面技术专家,对高并发、分布式有多年深入的实践经验。掘金很好作者,CSDN博客专家。公众号“aoho求索”的作者。黄迪璇 毕业于南京大学,目前就职于靠前一线互联网公司,曾就职于字节跳动、腾讯,具有多年服务端开发经验,技术极客,热衷于新技术的研究和实践。张天 服务端技术专家,精耕于微服务、分布式、数据库和性能调优等后端开发领域。著有《Spring Cloud微服务架构进阶》,CSDN博客专家。公众号“程序员历小冰”的作者。
目录
篇 云原生与微服务云原生与微服务分别是什么,它们之间有什么关系呢?本部分围绕云原生与微服务的概 念展开介绍,我们透过云计算的历史和系统架构的演进,具体了解这两个概念的意义及其背 后的技术发展。第 1 章 云原生架构1.1 云计算的历史 11.1.1 云计算的基础:虚拟化技术 11.1.2 基于虚拟机的云计算 31.1.3 容器的横空出世和容器编排大战 51.1.4 云计算演进总结 61.2 云原生是什么 71.2.1 云原生出现的背景 71.2.2 云原生的定义 81.2.3 云原生与 12 因素 91.3 云原生的基础架构 111.3.1 微服务 111.3.2 容器 121.3.3 服务网格 131.3.4 DevOps 141.4 小结 15第 2 章 微服务概述2.1 系统架构的演进 162.1.1 单体架构 162.1.2 垂直分层架构 172.1.3 SOA 面向服务架构 172.1.4 微服务架构 192.1.5 云原生架构 212.2 常见的微服务框架 222.2.1 Java 中的 Spring Cloud 与 Dubbo 框架 22 2.2.2 Go 语言中的 Go Kit 与 Go Micro 框架 242.3 微服务设计的六大原则 271.高内聚,低耦合 272.高度自治 273.以业务为中心 284.弹性设计 285.日志与监控 286.自动化 282.4 领域驱动设计 282.4.1 设计微服务的困境 282.4.2 解困之法:领域驱动设计(DDD) 292.4.3 DDD 的应用领域 302.4.4 DDD 领域划分 312.4.5 微服务架构中的团队组织和管理 332.5 小结 34第二篇 Go 语法基础与特性功能在正式进入微服务组件的学习之前,我们要巩固一下 Go 语言的基础,包括容器、原生 数据类型、函数与接口、结构体和方法等常用的语法基础;其次是 Go 语言的特性功能:反 射与并发模型,介绍 Go 语言协程、通道、多路复用和同步的具体实践;最后是 Golang Web 的相关介绍,一起构建一个完整的 Go Web 服务器。第 3 章 Go 语言基础3.1 Go 语言介绍 353.2 环境安装 363.2.1 Go 开发包安装 363.2.2 个 Go 语言程序 383.2.3 编译工具 403.3 基本语法 413.3.1 变量的声明与初始化 413.3.2 原生数据类型 43【实例 3-1】分别以 byte 和 rune 的方式遍历字符串 443.3.3 指针 45【实例 3-2】使用 flag 从命令行中读取参数 473.3.4 常量与类型别名 483.3.5 分支与循环控制 493.4 Go 中常用的容器 50 3.4.1 数组 503.4.2 切片 51【实例 3-3】切片的动态扩容 533.4.3 列表与字典 543.4.4 容器遍历 57【实例 3-4】对给出的数组 nums、切片 slis 和字典 tmpMap 分别进行遍历 573.5 函数与接口 583.5.1 函数声明和参数传递 583.5.2 匿名函数和闭包 59【实例 3-5】使用回调函数处理字符串 59【实例 3-6】用闭包的特性实现一个简单的计数器 603.5.3 接口声明和嵌套 613.5.4 函数体实现接口 623.6 结构体和方法 623.6.1 结构体的定义 633.6.2 结构体的实例化和初始化 633.6.3 方法与接收器 64【实例 3-7】为 Person 结构体添加修改姓名和输出个人信息两个方法 653.6.4 结构体实现接口 66【实例 3-8】使用一个结构体同时实现 Cat 和 Dog 接口 663.6.5 内嵌和组合 67【实例 3-9】内嵌不同结构体表现不同行为 683.7 小结 69第 4 章 进阶——Go 语言不错特性4.1 依赖管理 704.1.1 包管理 704.1.2 GOPATH 724.1.3 Go Modules 734.2 反射基础 734.2.1 reflect.Type 类型对象 744.2.2 类型对象 reflect.StructField 和 reflect.Method 764.2.3 reflect.Value 反射值对象 78【实例 4-1】使用反射调用接口方法 804.3 并发模型 824.3.1 并发与并行 824.3.2 CSP 并发模型 824.3.3 常见的线程模型 834.3.4 MPG 线程模型概述 85 4.4 并发实践 874.4.1 协程 goroutine 874.4.2 通道 channel 89【实例 4-2】协程使用 channel 发送和接收数据 90【实例 4-3】使用带缓冲区的 channel 91【实例 4-4】使用 switch 从多个 channel 中读取数据 924.4.3 sync 同步包 94【实例 4-5】使用 sync.Mutex 控制多 goroutine 串行执行 94【实例 4-6】sync.RWMutex 允许多读和单写 95【实例 4-7】sync.WaitGroup 阻塞主 goroutine 直到其他 goroutine 执行结束 97【实例 4-8】使用 sync.Map 并发添加数据 984.5 小结 99第 5 章 构建 Go Web 服务器5.1 Web 的工作原理 1005.1.1 HTTP 协议详解 1005.1.2 访问 Web 站点的过程 1035.2 使用 Go 语言构建服务器 104【实例 5-1】快速搭建一个 Go Web 服务器 1045.3 接收和处理请求 1055.3.1 Web 工作的几个概念 1065.3.2 处理器处理请求 1075.3.3 解析请求体 109【实例 5-2】Go Web 请求体解析 1095.3.4 返回响应体 111【实例 5-3】返回响应体实践 1125.4 实践案例:Golang Web 框架 Gin 实践 1135.5 服务端数据存储 1165.5.1 内存存储 116【实例 5-4】服务端基于内存的存储方式实践 1165.5.2 database/sql 接口 1185.5.3 关系数据库存储(MySQL) 118【实例 5-5】服务端基于 MySQL 的存储方式实践 1195.5.4 Nosql 数据库存储(MongoDB) 120【实例 5-6】服务端基于 MongoDB 的存储方式实践 1215.6 Golang ORM 框架 beego 实践 1225.7 小结 125 第三篇 微服务核心组件本部分是全书的核心,介绍微服务中各个核心组件的原理和实践应用,包括分布式配置 中心、服务注册与发现、微服务网关、微服务的容错、微服务中的通信与负载均衡、统一认 证与授权、微服务中的链路追踪。通过组件原理的介绍、组件的选型对比以及组件的实践应 用,吃透每一个微服务组件。第 6 章 服务注册与发现6.1 服务注册与发现的基本原理 1266.1.1 服务注册与发现中心的职责 1266.1.2 服务实例注册服务信息 1276.1.3 CAP 原理 1276.2 常用的服务注册与发现框架 1286.2.1 基于 Raft 算法的开箱即用服务发现组件 Consul 1286.2.2 基于 HTTP 协议的分布式 key/Value 存储组件 Etcd 1306.2.3 重量级一致性服务组件 Zookeeper 1316.2.4 服务注册与发现组件的对比与选型 1326.3 Consul 安装和接口定义 1336.3.1 Consul 的安装与启动 1336.3.2 Go-kit 项目结构 1346.3.3 服务注册与发现接口 1356.3.4 项目的总体结构 1356.4 实践案例:直接使用 HTTP 的方式和 Consul 交互 1406.4.1 服务注册与健康检查 1426.4.2 服务注销 1446.4.3 服务发现 1466.5 实践案例:借助 Go-kit 服务注册与发现包和 Consul 交互 1476.5.1 服务注册与健康检查 1486.5.2 服务注销 1496.5.3 服务发现 1506.5.4 服务实例信息缓存 1506.5.5 MyDiscoverClient 和 KitDiscoverClient 的比较 1536.6 实践案例:基于服务注册与发现的 string-service 1536.6.1 项目结构 1536.6.2 各层构建 1546.7 小结 162 第 7 章 远程过程调用 RPC7.1 RPC 机制和实现过程 1647.1.1 RPC 机制 1647.1.2 传递参数 1677.1.3 通信协议制定 1687.1.4 出错和超时处理 1707.1.5 通用 RPC 接口 1717.2 简易的 Go 语言原生 RPC 1727.2.1 实践案例:Go 语言 RPC 过程调用实践 1727.2.2 服务端注册实现原理分析 1757.2.3 服务端处理 RPC 请求原理分析 1787.2.4 客户端发送 RPC 请求原理分析 1827.2.5 资源重用 1877.3 高性能的 gRPC 1887.3.1 gRPC 的安装 1897.3.2 实践案例:gRPC 过程调用实践 1907.3.3 流式编程 193【实例 7-1】gRPC 流式请求 1937.4 便捷的 Go-kit RPC 1967.4.1 Go-kit 简介 1967.4.2 实践案例:Go-kit 过程调用实践 1977.5 小结 202第 8 章 分布式配置中心8.1 如何管理分布式应用的配置 2038.2 常见分布式配置中心开源组件 2048.2.1 Spring Cloud Config. 2048.2.2 Apollo 2058.2.3 Disconf 2088.2.4 分布式配置中心的对比 2108.3 应用 Spring Cloud Config 统一管理配置 2108.3.1 搭建 Spring Cloud Config Server 2108.3.2 Viper 介绍 213【实例 8-1】Viper 实现读取本地配置信息 2148.3.3 实战案例:动手实现 Spring Cloud Config 的 Go 语言客户端 2168.4 实践案例:实现配置的热更新 2198.4.1 如何实现热更新 2198.4.2 Go 语言客户端改进 220 8.4.3 结果验证 2238.5 配置信息的加密解密 2248.5.1 JCE 环境安装 2258.5.2 对称加密与解密 2258.5.3 非对称加密与解密 2268.6 小结 227第 9 章 微服务网关9.1 微服务网关介绍与功能特性 2289.2 实践案例:自己动手实现一个网关 2319.2.1 实现思路 2319.2.2 编写反向代理方法 2329.2.3 编写入口方法 2339.2.4 运行 2359.2.5 测试 2359.3 API 网关选型 2359.3.1 标配组件:Nginx 网关 2369.3.2 Java 前置网关服务最佳选型:Netflix Zuul 2379.3.3 高可用服务网关:Mashape Kong 2399.3.4 三种常用 API 网关组件的指标对比 2409.4 Kong 接入 2409.4.1 为什么使用 Kong 2409.4.2 Kong 安装实践 241【实例 9-1】Docker 方式安装 Kong 2429.4.3 创建服务 2449.4.4 创建路由 2459.5 安装 Kong 插件 2469.5.1 跨域身份验证:JWT 认证插件 2469.5.2 系统监控报警:Prometheus 可视化监控插件 2489.5.3 实时链路数据追踪:Zipkin 插件 2509.5.4 进阶应用:自定义 Kong 插件 252【实例 9-2】自定义鉴权插件 token-auth 2529.6 小结 257第 10 章 微服务的容错处理与负载均衡10.1 服务熔断 25810.1.1 分布式系统中的服务雪崩 25810.1.2 服务熔断保障系统可用性 26010.1.3 断路器 261 10.2 负载均衡 26210.2.1 负载均衡类型 26210.2.2 负载均衡算法 26210.3 实践案例:服务熔断和负载均衡使用 26310.3.1 负载均衡器 26310.3.2 服务编写 26410.3.3 使用 Go-kit Hystrix 中间件 270【实例 10-1】使用 Go-kit Hystrix 中间件修饰 Endpoint 27010.4 Hystrix 详解 27110.4.1 Hystrix 基本使用 27210.4.2 运行流程 27310.4.3 常用参数配置 27410.5 Hystrix 监控面板 27510.5.1 获取 Hystrix 命令调用信息 27510.5.2 使用 Hystrix Dashboard 可视化面板 27710.6 实践案例:在网关中添加 Hystrix 熔断和负载均衡 27910.7 小结 282第 11 章 统一认证与授权11.1 微服务安全的挑战和现状 28311.2 常见的认证与授权方案 28311.2.1 当前行业授权标准 OAuth2 28311.2.2 数据共享的分布式 Session 28711.2.3 安全传输对象 JWT 28811.3 实践案例:基于 OAuth2 协议和 JWT 实现一套简单 的认证和授权系统 29011.3.1 系统整体架构 29011.3.2 授权服务器 2911.用户服务和客户端服务 2922.TokenGrant 令牌生成器 2943.TokenService 令牌服务 2964.TokenStore 令牌存储器 3005./oauth/token 和/oauth/check_token 3036.请求访问令牌和刷新令牌 30611.3.3 资源服务器 3111.令牌认证 3112.鉴权 3123.访问受限资源 31311.4 小结 317 第 12 章 分布式链路追踪12.1 诊断分布式系统的问题 31812.1.1 为什么需要分布式链路追踪 31812.1.2 什么是分布式链路追踪 31912.1.3 分布式链路追踪规范:OpenTracing 32012.1.4 分布式链路追踪的基础概念 32112.2 几种流行的分布式链路追踪组件 32312.2.1 简单易上手的 Twitter Zipkin 32312.2.2 云原生链路监控组件 Uber Jaeger 32412.2.3 探针性能低损耗的 SkyWalking 32612.2.4 链路统计详细的 Pinpoint 32712.2.5 4 种分布式链路追踪组件的指标对比 32812.3 实践案例:应用 Zipkin 追踪 Go 微服务 32912.3.1 微服务中集成 zipkin-go 33012.3.2 Go-kit 微服务框架集成 Zipkin 实现链路追踪 3371.HTTP 调用方式的链路追踪 3382.gRPC 调用方式的链路追踪 34212.4 小结 346第四篇 综合实战本部分是商品秒杀系统的实战项目,综合难度相对较高,我们通过分析业务系统的领域 设计,将系统划分成具体的微服务,整合各个微服务组件,最终实现一个高并发的商品秒杀 系统。第 13 章 综合实战:秒杀系统的设计与实现13.1 秒杀系统简介 34713.2 项目架构简介 35013.2.1 项目简述 35013.2.2 架构信息 35013.2.3 流程简介 35213.3 整合升级:各个微服务脚手架的组装 35313.3.1 服务注册和发现 35313.3.2 负载均衡策略 35713.3.3 RPC 客户端装饰器 36013.3.4 限流 36213.3.5 Go 语言 Redis 使用简介 364 13.3.6 Zookeeper 集成 36613.3.7 Go-kit 开发利器 Truss 36713.4 秒杀核心逻辑 36813.4.1 秒杀业务系统 37013.4.2 秒杀核心系统 38013.4.3 秒杀管理系统 38413.5 性能压测 38613.5.1 查看服务的配置文件 38613.5.2 压测实验 38713.6 小结 390
内容摘要
近年来云原生技术发展迅猛,帮助开发者在云上快速和频繁地构建、发布和部署应用,以提高开发效率和快速定位故障。 微服务作为开展云原生技术落地的核心,它将复杂的单体应用按照业务划分并进行有效地拆分,每个微服务都可以进行独立部署和开发,大大提升了应用开发效率。Go语言作为新生代的编译型编程语言,具备语法简单、高并发性能良好和编译速度快等特点,是微服务架构落地实践的绝妙利器。
主编推荐
深入Go语言和微服务框架,提供高并发场景下Go微服务应用实战案例
— 没有更多了 —
以下为对购买帮助不大的评价