GO語言高并發(fā)與微服務(wù)實戰(zhàn) 版權(quán)信息
- ISBN:9787113266622
- 條形碼:9787113266622 ; 978-7-113-26662-2
- 裝幀:平裝-膠訂
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>
GO語言高并發(fā)與微服務(wù)實戰(zhàn) 本書特色
近年來云原生技術(shù)發(fā)展迅猛,幫助開發(fā)者在云上快速和頻繁地構(gòu)建、發(fā)布和部署應(yīng)用,以提高開發(fā)效率和快速定位故障。 微服務(wù)作為開展云原生技術(shù)落地的核心,它將復(fù)雜的單體應(yīng)用按照業(yè)務(wù)劃分并進行有效地拆分,每個微服務(wù)都可以進行獨立部署和開發(fā),大大提升了應(yīng)用開發(fā)效率。Go語言作為新生代的編譯型編程語言,具備語法簡單、高并發(fā)性能良好和編譯速度快等特點,是微服務(wù)架構(gòu)落地實踐的絕妙利器。
GO語言高并發(fā)與微服務(wù)實戰(zhàn) 內(nèi)容簡介
深入Go語言和微服務(wù)框架,提供高并發(fā)場景下Go微服務(wù)應(yīng)用實戰(zhàn)案例
GO語言高并發(fā)與微服務(wù)實戰(zhàn) 目錄
**篇 云原生與微服務(wù)
云原生與微服務(wù)分別是什么,它們之間有什么關(guān)系呢?本部分圍繞云原生與微服務(wù)的概 念展開介紹,我們透過云計算的歷史和系統(tǒng)架構(gòu)的演進,具體了解這兩個概念的意義及其背 后的技術(shù)發(fā)展。
第 1 章 云原生架構(gòu)
1.1 云計算的歷史 1
1.1.1 云計算的基礎(chǔ):虛擬化技術(shù) 1
1.1.2 基于虛擬機的云計算 3
1.1.3 容器的橫空出世和容器編排大戰(zhàn) 5
1.1.4 云計算演進總結(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)的演進 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è)計的六大原則 27
1.高內(nèi)聚,低耦合 27
2.高度自治 27
3.以業(yè)務(wù)為中心 28
4.彈性設(shè)計 28
5.日志與監(jiān)控 28
6.自動化 28
2.4 領(lǐng)域驅(qū)動設(shè)計 28
2.4.1 設(shè)計微服務(wù)的困境 28
2.4.2 解困之法:領(lǐng)域驅(qū)動設(shè)計(DDD) 29
2.4.3 DDD 的應(yīng)用領(lǐng)域 30
2.4.4 DDD 領(lǐng)域劃分 31
2.4.5 微服務(wù)架構(gòu)中的團隊組織和管理 33
2.5 小結(jié) 34
第二篇 Go 語法基礎(chǔ)與特性功能
在正式進入微服務(wù)組件的學(xué)習(xí)之前,我們要鞏固一下 Go 語言的基礎(chǔ),包括容器、原生 數(shù)據(jù)類型、函數(shù)與接口、結(jié)構(gòu)體和方法等常用的語法基礎(chǔ);其次是 Go 語言的特性功能:反 射與并發(fā)模型,介紹 Go 語言協(xié)程、通道、多路復(fù)用和同步的具體實踐;*后是 Golang Web 的相關(guān)介紹,一起構(gòu)建一個完整的 Go Web 服務(wù)器。
第 3 章 Go 語言基礎(chǔ)
3.1 Go 語言介紹 35
3.2 環(huán)境安裝 36
3.2.1 Go 開發(fā)包安裝 36
3.2.2 **個 Go 語言程序 38
3.2.3 編譯工具 40
3.3 基本語法 41
3.3.1 變量的聲明與初始化 41
3.3.2 原生數(shù)據(jù)類型 43
【實例 3-1】分別以 byte 和 rune 的方式遍歷字符串 44
3.3.3 指針 45
【實例 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
【實例 3-3】切片的動態(tài)擴容 53
3.4.3 列表與字典 54
3.4.4 容器遍歷 57
【實例 3-4】對給出的數(shù)組 nums、切片 slis 和字典 tmpMap 分別進行遍歷 57
3.5 函數(shù)與接口 58
3.5.1 函數(shù)聲明和參數(shù)傳遞 58
3.5.2 匿名函數(shù)和閉包 59
【實例 3-5】使用回調(diào)函數(shù)處理字符串 59
【實例 3-6】用閉包的特性實現(xiàn)一個簡單的計數(shù)器 60
3.5.3 接口聲明和嵌套 61
3.5.4 函數(shù)體實現(xiàn)接口 62
3.6 結(jié)構(gòu)體和方法 62
3.6.1 結(jié)構(gòu)體的定義 63
3.6.2 結(jié)構(gòu)體的實例化和初始化 63
3.6.3 方法與接收器 64
【實例 3-7】為 Person 結(jié)構(gòu)體添加修改姓名和輸出個人信息兩個方法 65
3.6.4 結(jié)構(gòu)體實現(xiàn)接口 66
【實例 3-8】使用一個結(jié)構(gòu)體同時實現(xiàn) Cat 和 Dog 接口 66
3.6.5 內(nèi)嵌和組合 67
【實例 3-9】內(nèi)嵌不同結(jié)構(gòu)體表現(xiàn)不同行為 68
3.7 小結(jié) 69
第 4 章 進階——Go 語言高級特性
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 類型對象 74
4.2.2 類型對象 reflect.StructField 和 reflect.Method 76
4.2.3 reflect.Value 反射值對象 78
【實例 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ā)實踐 87
4.4.1 協(xié)程 goroutine 87
4.4.2 通道 channel 89
【實例 4-2】協(xié)程使用 channel 發(fā)送和接收數(shù)據(jù) 90
【實例 4-3】使用帶緩沖區(qū)的 channel 91
【實例 4-4】使用 switch 從多個 channel 中讀取數(shù)據(jù) 92
4.4.3 sync 同步包 94
【實例 4-5】使用 sync.Mutex 控制多 goroutine 串行執(zhí)行 94
【實例 4-6】sync.RWMutex 允許多讀和單寫 95
【實例 4-7】sync.WaitGroup 阻塞主 goroutine 直到其他 goroutine 執(zhí)行結(jié)束 97
【實例 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 站點的過程 103
5.2 使用 Go 語言構(gòu)建服務(wù)器 104
【實例 5-1】快速搭建一個 Go Web 服務(wù)器 104
5.3 接收和處理請求 105
5.3.1 Web 工作的幾個概念 106
5.3.2 處理器處理請求 107
5.3.3 解析請求體 109
【實例 5-2】Go Web 請求體解析 109
5.3.4 返回響應(yīng)體 111
【實例 5-3】返回響應(yīng)體實踐 112
5.4 實踐案例:Golang Web 框架 Gin 實踐 113
5.5 服務(wù)端數(shù)據(jù)存儲 116
5.5.1 內(nèi)存存儲 116
【實例 5-4】服務(wù)端基于內(nèi)存的存儲方式實踐 116
5.5.2 database/sql 接口 118
5.5.3 關(guān)系數(shù)據(jù)庫存儲(MySQL) 118
【實例 5-5】服務(wù)端基于 MySQL 的存儲方式實踐 119
5.5.4 Nosql 數(shù)據(jù)庫存儲(MongoDB) 120
【實例 5-6】服務(wù)端基于 MongoDB 的存儲方式實踐 121
5.6 Golang ORM 框架 beego 實踐 122
5.7 小結(jié) 125
第三篇 微服務(wù)核心組件
本部分是全書的核心,介紹微服務(wù)中各個核心組件的原理和實踐應(yīng)用,包括分布式配置 中心、服務(wù)注冊與發(fā)現(xiàn)、微服務(wù)網(wǎng)關(guān)、微服務(wù)的容錯、微服務(wù)中的通信與負(fù)載均衡、統(tǒng)一認(rèn) 證與授權(quán)、微服務(wù)中的鏈路追蹤。通過組件原理的介紹、組件的選型對比以及組件的實踐應(yīng) 用,吃透每一個微服務(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ù)實例注冊服務(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 存儲組件 Etcd 130
6.2.3 重量級一致性服務(wù)組件 Zookeeper 131
6.2.4 服務(wù)注冊與發(fā)現(xiàn)組件的對比與選型 132
6.3 Consul 安裝和接口定義 133
6.3.1 Consul 的安裝與啟動 133
6.3.2 Go-kit 項目結(jié)構(gòu) 134
6.3.3 服務(wù)注冊與發(fā)現(xiàn)接口 135
6.3.4 項目的總體結(jié)構(gòu) 135
6.4 實踐案例:直接使用 HTTP 的方式和 Consul 交互 140
6.4.1 服務(wù)注冊與健康檢查 142
6.4.2 服務(wù)注銷 144
6.4.3 服務(wù)發(fā)現(xiàn) 146
6.5 實踐案例:借助 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ù)實例信息緩存 150
6.5.5 MyDiscoverClient 和 KitDiscoverClient 的比較 153
6.6 實踐案例:基于服務(wù)注冊與發(fā)現(xiàn)的 string-service 153
6.6.1 項目結(jié)構(gòu) 153
6.6.2 各層構(gòu)建 154
6.7 小結(jié) 162
第 7 章 遠(yuǎn)程過程調(diào)用 RPC
7.1 RPC 機制和實現(xiàn)過程 164
7.1.1 RPC 機制 164
7.1.2 傳遞參數(shù) 167
7.1.3 通信協(xié)議制定 168
7.1.4 出錯和超時處理 170
7.1.5 通用 RPC 接口 171
7.2 簡易的 Go 語言原生 RPC 172
7.2.1 實踐案例:Go 語言 RPC 過程調(diào)用實踐 172
7.2.2 服務(wù)端注冊實現(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 實踐案例:gRPC 過程調(diào)用實踐 190
7.3.3 流式編程 193
【實例 7-1】gRPC 流式請求 193
7.4 便捷的 Go-kit RPC 196
7.4.1 Go-kit 簡介 196
7.4.2 實踐案例:Go-kit 過程調(diào)用實踐 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 分布式配置中心的對比 210
8.3 應(yīng)用 Spring Cloud Config 統(tǒng)一管理配置 210
8.3.1 搭建 Spring Cloud Config Server 210
8.3.2 Viper 介紹 213
【實例 8-1】Viper 實現(xiàn)讀取本地配置信息 214
8.3.3 實戰(zhàn)案例:動手實現(xiàn) Spring Cloud Config 的 Go 語言客戶端 216
8.4 實踐案例:實現(xiàn)配置的熱更新 219
8.4.1 如何實現(xiàn)熱更新 219
8.4.2 Go 語言客戶端改進 220
8.4.3 結(jié)果驗證 223
8.5 配置信息的加密解密 224
8.5.1 JCE 環(huán)境安裝 225
8.5.2 對稱加密與解密 225
8.5.3 非對稱加密與解密 226
8.6 小結(jié) 227
第 9 章 微服務(wù)網(wǎng)關(guān)
9.1 微服務(wù)網(wǎng)關(guān)介紹與功能特性 228
9.2 實踐案例:自己動手實現(xiàn)一個網(wǎng)關(guān) 231
9.2.1 實現(xiàn)思路 231
9.2.2 編寫反向代理方法 232
9.2.3 編寫入口方法 233
9.2.4 運行 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)對比 240
9.4 Kong 接入 240
9.4.1 為什么使用 Kong 240
9.4.2 Kong 安裝實踐 241
【實例 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 跨域身份驗證:JWT 認(rèn)證插件 246
9.5.2 系統(tǒng)監(jiān)控報警:Prometheus 可視化監(jiān)控插件 248
9.5.3 實時鏈路數(shù)據(jù)追蹤:Zipkin 插件 250
9.5.4 進階應(yīng)用:自定義 Kong 插件 252
【實例 9-2】自定義鑒權(quán)插件 token-auth 252
9.6 小結(jié) 257
第 10 章 微服務(wù)的容錯處理與負(fù)載均衡
10.1 服務(wù)熔斷 258
10.1.1 分布式系統(tǒng)中的服務(wù)雪崩 258
10.1.2 服務(wù)熔斷保障系統(tǒng)可用性 260
10.1.3 斷路器 261
展開全部
GO語言高并發(fā)與微服務(wù)實戰(zhàn) 作者簡介
朱榮鑫軟件工程碩士,微服務(wù)早期實踐者,微服務(wù)方面技術(shù)專家,對高并發(fā)、分布式有多年深入的實踐經(jīng)驗。掘金優(yōu)秀作者,CSDN博客專家。公眾號“aoho求索”的作者。黃迪璇 畢業(yè)于南京大學(xué),目前就職于國內(nèi)一線互聯(lián)網(wǎng)公司,曾就職于字節(jié)跳動、騰訊,具有多年服務(wù)端開發(fā)經(jīng)驗,技術(shù)極客,熱衷于新技術(shù)的研究和實踐。張?zhí)?服務(wù)端技術(shù)專家,精耕于微服務(wù)、分布式、數(shù)據(jù)庫和性能調(diào)優(yōu)等后端開發(fā)領(lǐng)域。著有《Spring Cloud微服務(wù)架構(gòu)進階》,CSDN博客專家。公眾號“程序員歷小冰”的作者。