注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)Go語言高并發(fā)與微服務(wù)實(shí)戰(zhàn)

Go語言高并發(fā)與微服務(wù)實(shí)戰(zhàn)

Go語言高并發(fā)與微服務(wù)實(shí)戰(zhàn)

定 價(jià):¥89.00

作 者: 朱榮鑫,黃迪璇,張?zhí)?著
出版社: 中國鐵道出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787113266622 出版時(shí)間: 2020-04-01 包裝: 平裝
開本: 16開 頁數(shù): 408 字?jǐn)?shù):  

內(nèi)容簡介

  近年來云原生技術(shù)發(fā)展迅猛,幫助開發(fā)者在云上快速和頻繁地構(gòu)建、發(fā)布和部署應(yīng)用,以提高開發(fā)效率和快速定位故障。 微服務(wù)作為開展云原生技術(shù)落地的核心,它將復(fù)雜的單體應(yīng)用按照業(yè)務(wù)劃分并進(jìn)行有效地拆分,每個(gè)微服務(wù)都可以進(jìn)行獨(dú)立部署和開發(fā),大大提升了應(yīng)用開發(fā)效率。Go語言作為新生代的編譯型編程語言,具備語法簡單、高并發(fā)性能良好和編譯速度快等特點(diǎn),是微服務(wù)架構(gòu)落地實(shí)踐的絕妙利器。

作者簡介

  朱榮鑫 軟件工程碩士,微服務(wù)早期實(shí)踐者,微服務(wù)方面技術(shù)專家,對(duì)高并發(fā)、分布式有多年深入的實(shí)踐經(jīng)驗(yàn)。掘金優(yōu)秀作者,CSDN博客專家。公眾號(hào)“aoho求索”的作者。黃迪璇 畢業(yè)于南京大學(xué),目前就職于國內(nèi)一線互聯(lián)網(wǎng)公司,曾就職于字節(jié)跳動(dòng)、騰訊,具有多年服務(wù)端開發(fā)經(jīng)驗(yàn),技術(shù)極客,熱衷于新技術(shù)的研究和實(shí)踐。張?zhí)?服務(wù)端技術(shù)專家,精耕于微服務(wù)、分布式、數(shù)據(jù)庫和性能調(diào)優(yōu)等后端開發(fā)領(lǐng)域。著有《Spring Cloud微服務(wù)架構(gòu)進(jìn)階》,CSDN博客專家。公眾號(hào)“程序員歷小冰”的作者。

圖書目錄

第一篇 云原生與微服務(wù)
云原生與微服務(wù)分別是什么,它們之間有什么關(guān)系呢?本部分圍繞云原生與微服務(wù)的概 念展開介紹,我們透過云計(jì)算的歷史和系統(tǒng)架構(gòu)的演進(jìn),具體了解這兩個(gè)概念的意義及其背 后的技術(shù)發(fā)展。
第 1 章 云原生架構(gòu)
1.1 云計(jì)算的歷史 1
1.1.1 云計(jì)算的基礎(chǔ):虛擬化技術(shù) 1
1.1.2 基于虛擬機(jī)的云計(jì)算 3
1.1.3 容器的橫空出世和容器編排大戰(zhàn) 5
1.1.4 云計(jì)算演進(jìn)總結(jié) 6
1.2 云原生是什么 7
1.2.1 云原生出現(xiàn)的背景 7
1.2.2 云原生的定義 8
1.2.3 云原生與 12 因素 9
1.3 云原生的基礎(chǔ)架構(gòu) 11
1.3.1 微服務(wù) 11
1.3.2 容器 12
1.3.3 服務(wù)網(wǎng)格 13
1.3.4 DevOps 14
1.4 小結(jié) 15
第 2 章 微服務(wù)概述
2.1 系統(tǒng)架構(gòu)的演進(jìn) 16
2.1.1 單體架構(gòu) 16
2.1.2 垂直分層架構(gòu) 17
2.1.3 SOA 面向服務(wù)架構(gòu) 17
2.1.4 微服務(wù)架構(gòu) 19
2.1.5 云原生架構(gòu) 21
2.2 常見的微服務(wù)框架 22
2.2.1 Java 中的 Spring Cloud 與 Dubbo 框架 22

2.2.2 Go 語言中的 Go Kit 與 Go Micro 框架 24
2.3 微服務(wù)設(shè)計(jì)的六大原則 27
1.高內(nèi)聚,低耦合 27
2.高度自治 27
3.以業(yè)務(wù)為中心 28
4.彈性設(shè)計(jì) 28
5.日志與監(jiān)控 28
6.自動(dòng)化 28
2.4 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì) 28
2.4.1 設(shè)計(jì)微服務(wù)的困境 28
2.4.2 解困之法:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD) 29
2.4.3 DDD 的應(yīng)用領(lǐng)域 30
2.4.4 DDD 領(lǐng)域劃分 31
2.4.5 微服務(wù)架構(gòu)中的團(tuán)隊(duì)組織和管理 33
2.5 小結(jié) 34

第二篇 Go 語法基礎(chǔ)與特性功能
在正式進(jìn)入微服務(wù)組件的學(xué)習(xí)之前,我們要鞏固一下 Go 語言的基礎(chǔ),包括容器、原生 數(shù)據(jù)類型、函數(shù)與接口、結(jié)構(gòu)體和方法等常用的語法基礎(chǔ);其次是 Go 語言的特性功能:反 射與并發(fā)模型,介紹 Go 語言協(xié)程、通道、多路復(fù)用和同步的具體實(shí)踐;最后是 Golang Web 的相關(guān)介紹,一起構(gòu)建一個(gè)完整的 Go Web 服務(wù)器。
第 3 章 Go 語言基礎(chǔ)
3.1 Go 語言介紹 35
3.2 環(huán)境安裝 36
3.2.1 Go 開發(fā)包安裝 36
3.2.2 第一個(gè) Go 語言程序 38
3.2.3 編譯工具 40
3.3 基本語法 41
3.3.1 變量的聲明與初始化 41
3.3.2 原生數(shù)據(jù)類型 43
【實(shí)例 3-1】分別以 byte 和 rune 的方式遍歷字符串 44
3.3.3 指針 45
【實(shí)例 3-2】使用 flag 從命令行中讀取參數(shù) 47
3.3.4 常量與類型別名 48
3.3.5 分支與循環(huán)控制 49
3.4 Go 中常用的容器 50

3.4.1 數(shù)組 50
3.4.2 切片 51
【實(shí)例 3-3】切片的動(dòng)態(tài)擴(kuò)容 53
3.4.3 列表與字典 54
3.4.4 容器遍歷 57
【實(shí)例 3-4】對(duì)給出的數(shù)組 nums、切片 slis 和字典 tmpMap 分別進(jìn)行遍歷 57
3.5 函數(shù)與接口 58
3.5.1 函數(shù)聲明和參數(shù)傳遞 58
3.5.2 匿名函數(shù)和閉包 59
【實(shí)例 3-5】使用回調(diào)函數(shù)處理字符串 59
【實(shí)例 3-6】用閉包的特性實(shí)現(xiàn)一個(gè)簡單的計(jì)數(shù)器 60
3.5.3 接口聲明和嵌套 61
3.5.4 函數(shù)體實(shí)現(xiàn)接口 62
3.6 結(jié)構(gòu)體和方法 62
3.6.1 結(jié)構(gòu)體的定義 63
3.6.2 結(jié)構(gòu)體的實(shí)例化和初始化 63
3.6.3 方法與接收器 64
【實(shí)例 3-7】為 Person 結(jié)構(gòu)體添加修改姓名和輸出個(gè)人信息兩個(gè)方法 65
3.6.4 結(jié)構(gòu)體實(shí)現(xiàn)接口 66
【實(shí)例 3-8】使用一個(gè)結(jié)構(gòu)體同時(shí)實(shí)現(xiàn) Cat 和 Dog 接口 66
3.6.5 內(nèi)嵌和組合 67
【實(shí)例 3-9】內(nèi)嵌不同結(jié)構(gòu)體表現(xiàn)不同行為 68
3.7 小結(jié) 69
第 4 章 進(jìn)階——Go 語言高級(jí)特性
4.1 依賴管理 70
4.1.1 包管理 70
4.1.2 GOPATH 72
4.1.3 Go Modules 73
4.2 反射基礎(chǔ) 73
4.2.1 reflect.Type 類型對(duì)象 74
4.2.2 類型對(duì)象 reflect.StructField 和 reflect.Method 76
4.2.3 reflect.Value 反射值對(duì)象 78
【實(shí)例 4-1】使用反射調(diào)用接口方法 80
4.3 并發(fā)模型 82
4.3.1 并發(fā)與并行 82
4.3.2 CSP 并發(fā)模型 82
4.3.3 常見的線程模型 83
4.3.4 MPG 線程模型概述 85

4.4 并發(fā)實(shí)踐 87
4.4.1 協(xié)程 goroutine 87
4.4.2 通道 channel 89
【實(shí)例 4-2】協(xié)程使用 channel 發(fā)送和接收數(shù)據(jù) 90
【實(shí)例 4-3】使用帶緩沖區(qū)的 channel 91
【實(shí)例 4-4】使用 switch 從多個(gè) channel 中讀取數(shù)據(jù) 92
4.4.3 sync 同步包 94
【實(shí)例 4-5】使用 sync.Mutex 控制多 goroutine 串行執(zhí)行 94
【實(shí)例 4-6】sync.RWMutex 允許多讀和單寫 95
【實(shí)例 4-7】sync.WaitGroup 阻塞主 goroutine 直到其他 goroutine 執(zhí)行結(jié)束 97
【實(shí)例 4-8】使用 sync.Map 并發(fā)添加數(shù)據(jù) 98
4.5 小結(jié) 99
第 5 章 構(gòu)建 Go Web 服務(wù)器
5.1 Web 的工作原理 100
5.1.1 HTTP 協(xié)議詳解 100
5.1.2 訪問 Web 站點(diǎn)的過程 103
5.2 使用 Go 語言構(gòu)建服務(wù)器 104
【實(shí)例 5-1】快速搭建一個(gè) Go Web 服務(wù)器 104
5.3 接收和處理請求 105
5.3.1 Web 工作的幾個(gè)概念 106
5.3.2 處理器處理請求 107
5.3.3 解析請求體 109
【實(shí)例 5-2】Go Web 請求體解析 109
5.3.4 返回響應(yīng)體 111
【實(shí)例 5-3】返回響應(yīng)體實(shí)踐 112
5.4 實(shí)踐案例:Golang Web 框架 Gin 實(shí)踐 113
5.5 服務(wù)端數(shù)據(jù)存儲(chǔ) 116
5.5.1 內(nèi)存存儲(chǔ) 116
【實(shí)例 5-4】服務(wù)端基于內(nèi)存的存儲(chǔ)方式實(shí)踐 116
5.5.2 database/sql 接口 118
5.5.3 關(guān)系數(shù)據(jù)庫存儲(chǔ)(MySQL) 118
【實(shí)例 5-5】服務(wù)端基于 MySQL 的存儲(chǔ)方式實(shí)踐 119
5.5.4 Nosql 數(shù)據(jù)庫存儲(chǔ)(MongoDB) 120
【實(shí)例 5-6】服務(wù)端基于 MongoDB 的存儲(chǔ)方式實(shí)踐 121
5.6 Golang ORM 框架 beego 實(shí)踐 122
5.7 小結(jié) 125



第三篇 微服務(wù)核心組件
本部分是全書的核心,介紹微服務(wù)中各個(gè)核心組件的原理和實(shí)踐應(yīng)用,包括分布式配置 中心、服務(wù)注冊與發(fā)現(xiàn)、微服務(wù)網(wǎng)關(guān)、微服務(wù)的容錯(cuò)、微服務(wù)中的通信與負(fù)載均衡、統(tǒng)一認(rèn) 證與授權(quán)、微服務(wù)中的鏈路追蹤。通過組件原理的介紹、組件的選型對(duì)比以及組件的實(shí)踐應(yīng) 用,吃透每一個(gè)微服務(wù)組件。
第 6 章 服務(wù)注冊與發(fā)現(xiàn)
6.1 服務(wù)注冊與發(fā)現(xiàn)的基本原理 126
6.1.1 服務(wù)注冊與發(fā)現(xiàn)中心的職責(zé) 126
6.1.2 服務(wù)實(shí)例注冊服務(wù)信息 127
6.1.3 CAP 原理 127
6.2 常用的服務(wù)注冊與發(fā)現(xiàn)框架 128
6.2.1 基于 Raft 算法的開箱即用服務(wù)發(fā)現(xiàn)組件 Consul 128
6.2.2 基于 HTTP 協(xié)議的分布式 key/Value 存儲(chǔ)組件 Etcd 130
6.2.3 重量級(jí)一致性服務(wù)組件 Zookeeper 131
6.2.4 服務(wù)注冊與發(fā)現(xiàn)組件的對(duì)比與選型 132
6.3 Consul 安裝和接口定義 133
6.3.1 Consul 的安裝與啟動(dòng) 133
6.3.2 Go-kit 項(xiàng)目結(jié)構(gòu) 134
6.3.3 服務(wù)注冊與發(fā)現(xiàn)接口 135
6.3.4 項(xiàng)目的總體結(jié)構(gòu) 135
6.4 實(shí)踐案例:直接使用 HTTP 的方式和 Consul 交互 140
6.4.1 服務(wù)注冊與健康檢查 142
6.4.2 服務(wù)注銷 144
6.4.3 服務(wù)發(fā)現(xiàn) 146
6.5 實(shí)踐案例:借助 Go-kit 服務(wù)注冊與發(fā)現(xiàn)包和 Consul 交互 147
6.5.1 服務(wù)注冊與健康檢查 148
6.5.2 服務(wù)注銷 149
6.5.3 服務(wù)發(fā)現(xiàn) 150
6.5.4 服務(wù)實(shí)例信息緩存 150
6.5.5 MyDiscoverClient 和 KitDiscoverClient 的比較 153
6.6 實(shí)踐案例:基于服務(wù)注冊與發(fā)現(xiàn)的 string-service 153
6.6.1 項(xiàng)目結(jié)構(gòu) 153
6.6.2 各層構(gòu)建 154
6.7 小結(jié) 162




第 7 章 遠(yuǎn)程過程調(diào)用 RPC
7.1 RPC 機(jī)制和實(shí)現(xiàn)過程 164
7.1.1 RPC 機(jī)制 164
7.1.2 傳遞參數(shù) 167
7.1.3 通信協(xié)議制定 168
7.1.4 出錯(cuò)和超時(shí)處理 170
7.1.5 通用 RPC 接口 171
7.2 簡易的 Go 語言原生 RPC 172
7.2.1 實(shí)踐案例:Go 語言 RPC 過程調(diào)用實(shí)踐 172
7.2.2 服務(wù)端注冊實(shí)現(xiàn)原理分析 175
7.2.3 服務(wù)端處理 RPC 請求原理分析 178
7.2.4 客戶端發(fā)送 RPC 請求原理分析 182
7.2.5 資源重用 187
7.3 高性能的 gRPC 188
7.3.1 gRPC 的安裝 189
7.3.2 實(shí)踐案例:gRPC 過程調(diào)用實(shí)踐 190
7.3.3 流式編程 193
【實(shí)例 7-1】gRPC 流式請求 193
7.4 便捷的 Go-kit RPC 196
7.4.1 Go-kit 簡介 196
7.4.2 實(shí)踐案例:Go-kit 過程調(diào)用實(shí)踐 197
7.5 小結(jié) 202
第 8 章 分布式配置中心
8.1 如何管理分布式應(yīng)用的配置 203
8.2 常見分布式配置中心開源組件 204
8.2.1 Spring Cloud Config. 204
8.2.2 Apollo 205
8.2.3 Disconf 208
8.2.4 分布式配置中心的對(duì)比 210
8.3 應(yīng)用 Spring Cloud Config 統(tǒng)一管理配置 210
8.3.1 搭建 Spring Cloud Config Server 210
8.3.2 Viper 介紹 213
【實(shí)例 8-1】Viper 實(shí)現(xiàn)讀取本地配置信息 214
8.3.3 實(shí)戰(zhàn)案例:動(dòng)手實(shí)現(xiàn) Spring Cloud Config 的 Go 語言客戶端 216
8.4 實(shí)踐案例:實(shí)現(xiàn)配置的熱更新 219
8.4.1 如何實(shí)現(xiàn)熱更新 219
8.4.2 Go 語言客戶端改進(jìn) 220

8.4.3 結(jié)果驗(yàn)證 223
8.5 配置信息的加密解密 224
8.5.1 JCE 環(huán)境安裝 225
8.5.2 對(duì)稱加密與解密 225
8.5.3 非對(duì)稱加密與解密 226
8.6 小結(jié) 227
第 9 章 微服務(wù)網(wǎng)關(guān)
9.1 微服務(wù)網(wǎng)關(guān)介紹與功能特性 228
9.2 實(shí)踐案例:自己動(dòng)手實(shí)現(xiàn)一個(gè)網(wǎng)關(guān) 231
9.2.1 實(shí)現(xiàn)思路 231
9.2.2 編寫反向代理方法 232
9.2.3 編寫入口方法 233
9.2.4 運(yùn)行 235
9.2.5 測試 235
9.3 API 網(wǎng)關(guān)選型 235
9.3.1 標(biāo)配組件:Nginx 網(wǎng)關(guān) 236
9.3.2 Java 前置網(wǎng)關(guān)服務(wù)最佳選型:Netflix Zuul 237
9.3.3 高可用服務(wù)網(wǎng)關(guān):Mashape Kong 239
9.3.4 三種常用 API 網(wǎng)關(guān)組件的指標(biāo)對(duì)比 240
9.4 Kong 接入 240
9.4.1 為什么使用 Kong 240
9.4.2 Kong 安裝實(shí)踐 241
【實(shí)例 9-1】Docker 方式安裝 Kong 242
9.4.3 創(chuàng)建服務(wù) 244
9.4.4 創(chuàng)建路由 245
9.5 安裝 Kong 插件 246
9.5.1 跨域身份驗(yàn)證:JWT 認(rèn)證插件 246
9.5.2 系統(tǒng)監(jiān)控報(bào)警:Prometheus 可視化監(jiān)控插件 248
9.5.3 實(shí)時(shí)鏈路數(shù)據(jù)追蹤:Zipkin 插件 250
9.5.4 進(jìn)階應(yīng)用:自定義 Kong 插件 252
【實(shí)例 9-2】自定義鑒權(quán)插件 token-auth 252
9.6 小結(jié) 257
第 10 章 微服務(wù)的容錯(cuò)處理與負(fù)載均衡
10.1 服務(wù)熔斷 258
10.1.1 分布式系統(tǒng)中的服務(wù)雪崩 258
10.1.2 服務(wù)熔斷保障系統(tǒng)可用性 260
10.1.3 斷路器 261

10.2 負(fù)載均衡 262
10.2.1 負(fù)載均衡類型 262
10.2.2 負(fù)載均衡算法 262
10.3 實(shí)踐案例:服務(wù)熔斷和負(fù)載均衡使用 263
10.3.1 負(fù)載均衡器 263
10.3.2 服務(wù)編寫 264
10.3.3 使用 Go-kit Hystrix 中間件 270
【實(shí)例 10-1】使用 Go-kit Hystrix 中間件修飾 Endpoint 270
10.4 Hystrix 詳解 271
10.4.1 Hystrix 基本使用 272
10.4.2 運(yùn)行流程 273
10.4.3 常用參數(shù)配置 274
10.5 Hystrix 監(jiān)控面板 275
10.5.1 獲取 Hystrix 命令調(diào)用信息 275
10.5.2 使用 Hystrix Dashboard 可視化面板 277
10.6 實(shí)踐案例:在網(wǎng)關(guān)中添加 Hystrix 熔斷和負(fù)載均衡 279
10.7 小結(jié) 282
第 11 章 統(tǒng)一認(rèn)證與授權(quán)
11.1 微服務(wù)安全的挑戰(zhàn)和現(xiàn)狀 283
11.2 常見的認(rèn)證與授權(quán)方案 283
11.2.1 當(dāng)前行業(yè)授權(quán)標(biāo)準(zhǔn) OAuth2 283
11.2.2 數(shù)據(jù)共享的分布式 Session 287
11.2.3 安全傳輸對(duì)象 JWT 288
11.3 實(shí)踐案例:基于 OAuth2 協(xié)議和 JWT 實(shí)現(xiàn)一套簡單 的認(rèn)證和授權(quán)系統(tǒng) 290
11.3.1 系統(tǒng)整體架構(gòu) 290
11.3.2 授權(quán)服務(wù)器 291
1.用戶服務(wù)和客戶端服務(wù) 292
2.TokenGrant 令牌生成器 294
3.TokenService 令牌服務(wù) 296
4.TokenStore 令牌存儲(chǔ)器 300
5./oauth/token 和/oauth/check_token 303
6.請求訪問令牌和刷新令牌 306
11.3.3 資源服務(wù)器 311
1.令牌認(rèn)證 311
2.鑒權(quán) 312
3.訪問受限資源 313
11.4 小結(jié) 317

第 12 章 分布式鏈路追蹤
12.1 診斷分布式系統(tǒng)的問題 318
12.1.1 為什么需要分布式鏈路追蹤 318
12.1.2 什么是分布式鏈路追蹤 319
12.1.3 分布式鏈路追蹤規(guī)范:OpenTracing 320
12.1.4 分布式鏈路追蹤的基礎(chǔ)概念 321
12.2 幾種流行的分布式鏈路追蹤組件 323
12.2.1 簡單易上手的 Twitter Zipkin 323
12.2.2 云原生鏈路監(jiān)控組件 Uber Jaeger 324
12.2.3 探針性能低損耗的 SkyWalking 326
12.2.4 鏈路統(tǒng)計(jì)詳細(xì)的 Pinpoint 327
12.2.5 4 種分布式鏈路追蹤組件的指標(biāo)對(duì)比 328
12.3 實(shí)踐案例:應(yīng)用 Zipkin 追蹤 Go 微服務(wù) 329
12.3.1 微服務(wù)中集成 zipkin-go 330
12.3.2 Go-kit 微服務(wù)框架集成 Zipkin 實(shí)現(xiàn)鏈路追蹤 337
1.HTTP 調(diào)用方式的鏈路追蹤 338
2.gRPC 調(diào)用方式的鏈路追蹤 342
12.4 小結(jié) 346

第四篇 綜合實(shí)戰(zhàn)
本部分是商品秒殺系統(tǒng)的實(shí)戰(zhàn)項(xiàng)目,綜合難度相對(duì)較高,我們通過分析業(yè)務(wù)系統(tǒng)的領(lǐng)域 設(shè)計(jì),將系統(tǒng)劃分成具體的微服務(wù),整合各個(gè)微服務(wù)組件,最終實(shí)現(xiàn)一個(gè)高并發(fā)的商品秒殺 系統(tǒng)。
第 13 章 綜合實(shí)戰(zhàn):秒殺系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
13.1 秒殺系統(tǒng)簡介 347
13.2 項(xiàng)目架構(gòu)簡介 350
13.2.1 項(xiàng)目簡述 350
13.2.2 架構(gòu)信息 350
13.2.3 流程簡介 352
13.3 整合升級(jí):各個(gè)微服務(wù)腳手架的組裝 353
13.3.1 服務(wù)注冊和發(fā)現(xiàn) 353
13.3.2 負(fù)載均衡策略 357
13.3.3 RPC 客戶端裝飾器 360
13.3.4 限流 362
13.3.5 Go 語言 Redis 使用簡介 364

13.3.6 Zookeeper 集成 366
13.3.7 Go-kit 開發(fā)利器 Truss 367
13.4 秒殺核心邏輯 368
13.4.1 秒殺業(yè)務(wù)系統(tǒng) 370
13.4.2 秒殺核心系統(tǒng) 380
13.4.3 秒殺管理系統(tǒng) 384
13.5 性能壓測 386
13.5.1 查看服務(wù)的配置文件 386
13.5.2 壓測實(shí)驗(yàn) 387
13.6 小結(jié) 390

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)