注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機(jī)/網(wǎng)絡(luò)家庭與辦公軟件Go微服務(wù)實戰(zhàn)

Go微服務(wù)實戰(zhàn)

Go微服務(wù)實戰(zhàn)

定 價:¥89.00

作 者: 劉金亮 著
出版社: 機(jī)械工業(yè)出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787111674122 出版時間: 2021-03-01 包裝: 平裝
開本: 16開 頁數(shù): 396 字?jǐn)?shù):  

內(nèi)容簡介

  本書針對Go語言進(jìn)行微服務(wù)開發(fā)做了全面細(xì)致的介紹,書中內(nèi)容包括四大部分。 第①部分為Go語言基礎(chǔ)(第1~7章),包括Go語言基礎(chǔ)語法、Go語言基本特性和Go語言實戰(zhàn)項目等內(nèi)容。第②部分為Go語言進(jìn)階(第8~10章),主要介紹Go語言的并發(fā)編程進(jìn)階、Go語言Web編程以及綜合實戰(zhàn)。第③部分為微服務(wù)理論(第11~18章),包括微服務(wù)模式的理論基礎(chǔ)、微服務(wù)的進(jìn)程間通信、微服務(wù)的分布式事務(wù)管理、領(lǐng)域驅(qū)動設(shè)計(DDD)、微服務(wù)測試、Docker及ES-CQRS策略。其中,微服務(wù)進(jìn)程間通信重點介紹了gRPC,ES-CQRS策略部分給出了Go語言的實現(xiàn)。第④部分為微服務(wù)實戰(zhàn)(第19~22章),這一部分通過實戰(zhàn)項目講解了微服務(wù)的生產(chǎn)環(huán)境、日志和監(jiān)控、持續(xù)部署等內(nèi)容。書中每一部分都提供了示例代碼或?qū)崙?zhàn)項目,供讀者邊學(xué)習(xí)邊動手實踐,盡量做到讓有Go語言基礎(chǔ)的人盡快了解、掌握微服務(wù)模式。

作者簡介

  劉金亮研究生畢業(yè)于北京大學(xué),現(xiàn)任用友集團(tuán)架構(gòu)師。曾經(jīng)參與IBM、Accenture、Capgemini的軟件系統(tǒng)咨詢和開發(fā)項目,對復(fù)雜業(yè)務(wù)系統(tǒng)的架構(gòu)和設(shè)計有豐富的經(jīng)驗,著有《Odoo快速入門與實戰(zhàn)》。

圖書目錄

前言
第一部分 Go語言基礎(chǔ)
第1章 Go語言程序基礎(chǔ) 2
1.1 Hello,World! 2
1.2 變量、指針及賦值 5
1.2.1 變量和常量 5
1.2.2 指針 8
1.2.3 賦值 9
1.3 包及作用域 10
1.4 選擇和循環(huán) 12
1.5 垃圾回收 13
1.6 小結(jié) 15
第2章 基本數(shù)據(jù)類型 16
2.1 整型 17
2.1.1 整型取值范圍 17
2.1.2 運(yùn)算符 18
2.2 浮點型 19
2.3 復(fù)數(shù)和布爾類型 21
2.4 格式化說明符 22
2.5 小結(jié) 22
第3章 字符串與復(fù)合數(shù)據(jù)類型 23
3.1 字符串和數(shù)組 23
3.1.1 字符串 24
3.1.2 數(shù)組 26
3.2 slice 27
3.2.1 結(jié)構(gòu)定義 27
3.2.2 基本操作 28
3.2.3 append 30
3.2.4 copy 31
3.2.5 其他 32
3.3 map 33
3.3.1 定義 33
3.3.2 基本操作 33
3.4 struct 35
3.4.1 結(jié)構(gòu)定義 36
3.4.2 基本操作 37
3.4.3 組合 38
3.5 JSON 40
3.6 小結(jié) 40
第4章 函數(shù)、方法、接口和反射 41
4.1 函數(shù) 41
4.1.1 函數(shù)的定義 41
4.1.2 閉包 42
4.1.3 作用域 43
4.1.4 多返回值及變長參數(shù) 45
4.1.5 defer關(guān)鍵字 46
4.2 方法 46
4.3 接口 50
4.4 反射 54
4.5 小結(jié) 57
第5章 并發(fā)編程 59
5.1 協(xié)程 59
5.1.1 核心概念 60
5.1.2 goroutine的基本使用 60
5.1.3 sync.WaitGroup 62
5.2 通道 64
5.2.1 channel寫入數(shù)據(jù) 64
5.2.2 channel接收數(shù)據(jù) 65
5.2.3 以channel作為函數(shù)參數(shù) 66
5.2.4 緩存channel 67
5.2.5 select 70
5.2.6 超時檢查 71
5.3 pipeline 74
5.4 小結(jié) 76
第6章 包和代碼測試 77
6.1 包及Go工具 77
6.1.1 包導(dǎo)入 78
6.1.2 Go工具 79
6.2 代碼優(yōu)化 84
6.2.1 Go代碼的優(yōu)化 84
6.2.2 性能分析 84
6.3 測試 90
6.3.1 功能測試函數(shù) 91
6.3.2 基準(zhǔn)測試函數(shù) 93
6.3.3 示例函數(shù) 96
6.4 小結(jié) 98
第7章 綜合實戰(zhàn)案例 99
7.1 案例需求 99
7.2 通信協(xié)議 100
7.3 服務(wù)器端 104
7.4 客戶端 109
7.5 小結(jié) 116
第二部分 Go語言進(jìn)階
第8章 并發(fā)編程進(jìn)階 118
8.1 競態(tài)與并發(fā)模式 118
8.1.1 數(shù)據(jù)競態(tài) 118
8.1.2 并發(fā)原理 123
8.2 sync包 126
8.2.1 sync.Mutex互斥鎖 126
8.2.2 sync.RWMutex多讀寫鎖 128
8.2.3 sync.Once 130
8.2.4 sync.Cond 131
8.2.5 sync.Pool 134
8.2.6 sync.Map 136
8.3 context包 138
8.3.1 應(yīng)用場景 138
8.3.2 定義 139
8.3.3 繼承 141
8.3.4 示例 142
8.4 工作池 145
8.5 小結(jié) 151
第9章 Go Web編程 152
9.1 net/http包 152
9.1.1 Go Web工作的基本原理 152
9.1.2 http詳解 156
9.2 Web框架 162
9.2.1 選擇框架 162
9.2.2 httprouter框架 163
9.3 Web底層服務(wù) 165
9.3.1 Scoket簡介 165
9.3.2 TCP Socket 166
9.3.3 UDP Socket 169
9.3.4 WebSocket 171
9.4 中間件 174
9.4.1 基本用法 174
9.4.2 進(jìn)階用法 176
9.5 數(shù)據(jù)庫訪問 179
9.5.1 database/sql接口 180
9.5.2 sqlx 182
9.6 小結(jié) 183
第10章 綜合案例 184
10.1 案例需求 184
10.2 項目代碼布局 186
10.3 配置和日志 187
10.3.1 配置 188
10.3.2 日志 190
10.4 模型 191
10.5 gin框架 193
10.6 小結(jié) 196
第三部分 微服務(wù)理論
第11章 微服務(wù) 198
11.1 微服務(wù)簡介 198
11.1.1 什么是微服務(wù) 198
11.1.2 微服務(wù)的由來 198
11.1.3 微服務(wù)與微服務(wù)架構(gòu) 199
11.2 系統(tǒng)架構(gòu)的演進(jìn) 199
11.2.1 單體架構(gòu) 200
11.2.2 垂直架構(gòu) 201
11.2.3 SOA 201
11.2.4 微服務(wù)架構(gòu) 202
11.3 小結(jié) 205
第12章 微服務(wù)化策略 206
12.1 微服務(wù)架構(gòu)風(fēng)格 206
12.1.1 每個服務(wù)都擁有獨立的數(shù)據(jù)庫 206
12.1.2 基于API的模塊化 207
12.2 微服務(wù)化進(jìn)程中的重點問題 207
12.2.1 微服務(wù)的通信 207
12.2.2 事務(wù)管理的一致性 208
12.2.3 微服務(wù)數(shù)據(jù)查詢 208
12.2.4 微服務(wù)部署 208
12.2.5 微服務(wù)生產(chǎn)環(huán)境監(jiān)控 209
12.2.6 微服務(wù)的自動化測試 209
12.3 微服務(wù)的拆分 209
12.3.1 拆分的指導(dǎo)原則 210
12.3.2 依據(jù)業(yè)務(wù)能力拆分 210
12.3.3 依據(jù)領(lǐng)域驅(qū)動設(shè)計拆分 211
12.3.4 服務(wù)API的定義 213
12.4 小結(jié) 214
第13章 微服務(wù)中的進(jìn)程間通信 215
13.1 微服務(wù)中的進(jìn)程間通信概述 215
13.1.1 交互模式 215
13.1.2 API定義 217
13.2 protobuf格式 217
13.2.1 protobuf簡介 217
13.2.2 protobuf的簡單使用 217
13.3 gRPC包 219
13.3.1 net/rpc包 219
13.3.2 gRPC簡介 221
13.3.3 Go語言實現(xiàn)gRPC調(diào)用 222
13.4 微服務(wù)發(fā)現(xiàn):consul 224
13.5 小結(jié) 226
第14章 微服務(wù)中的分布式事務(wù)管理 227
14.1 微服務(wù)下的事務(wù)管理 227
14.1.1 面臨的難題 227
14.1.2 SRP的折衷 228
14.2 微服務(wù)中處理事務(wù)的幾種方式 229
14.2.1 避免跨微服務(wù)的事務(wù) 229
14.2.2 基于XA協(xié)議的兩階段提交協(xié)議 229
14.2.3 最終一致性和補(bǔ)償 231
14.3 Saga模式 234
14.3.1 Saga模式介紹 234
14.3.2 編排模式 235
14.3.3 編配模式 237
14.4 Saga模式的Go語言示例 238
14.4.1 Saga對象的Go語言實現(xiàn) 238
14.4.2 中央?yún)f(xié)調(diào)器的Go語言實現(xiàn) 239
14.5 小結(jié) 243
第15章 領(lǐng)域驅(qū)動設(shè)計的Go語言實現(xiàn) 244
15.1 聚合模式介紹 244
15.2 使用聚合模式 247
15.2.1 聚合擁有明確的邊界 247
15.2.2 聚合的規(guī)則 248
15.2.3 聚合顆粒度 250
15.2.4 使用聚合設(shè)計業(yè)務(wù)邏輯 250
15.3 領(lǐng)域事件 251
15.4 Go語言領(lǐng)域模型的模擬實現(xiàn) 252
15.4.1 聚合 253
15.4.2 實體和值對象 253
15.4.3 服務(wù) 255
15.5 小結(jié) 257
第16章 微服務(wù)中的測試 258
16.1 測試金字塔 258
16.2 單元測試 260
16.3 依賴注入和mock測試 263
16.4 行為驅(qū)動開發(fā) 266
16.5 使用Docker Compose測試 272
16.6 小結(jié) 275
第17章 微服務(wù)運(yùn)行環(huán)境:Docker 276
17.1 Docker介紹 276
17.1.1 Docker引擎 276
17.1.2 守護(hù)進(jìn)程 277
17.1.3 鏡像及容器 277
17.1.4 倉庫 278
17.1.5 數(shù)據(jù)卷 278
17.2 運(yùn)行第一個Docker容器 279
17.2.1 Docker安裝 279
17.2.2 HelloWorld程序示例 279
17.2.3 運(yùn)行復(fù)雜一點的容器 280
17.3 Docker數(shù)據(jù)持久化 282
17.3.1 數(shù)據(jù)卷 282
17.3.2 bind mount 284
17.4 Docker網(wǎng)絡(luò) 285
17.4.1 橋接驅(qū)動及自定義bridge 285
17.4.2 Host模式、Overlay模式及None模式 288
17.5 小結(jié) 289
第18章 Go語言基于ES-CQRS的微服務(wù)實踐 290
18.1 理論介紹 290
18.1.1 事件溯源 290
18.1.2 命令查詢職責(zé)分離 291
18.2 ES-CQRS在Go語言中的實現(xiàn)示例 292
18.2.1 需求 293
18.2.2 分析與設(shè)計 293
18.2.3 核心實現(xiàn) 296
18.3 小結(jié) 299
第四部分 微服務(wù)實戰(zhàn)
第19章 生產(chǎn)環(huán)境的微服務(wù)安全 302
19.1 加密和簽名 302
19.1.1 對稱密鑰加密 302
19.1.2 公鑰密碼 303
19.1.3 X.509數(shù)字證書 303
19.1.4 TLS/SSL 304
19.2 外部安全 304
19.2.1 防火墻 304
19.2.2 頁面應(yīng)用的防火墻 305
19.2.3 API網(wǎng)關(guān) 305
19.2.4 DDoS保護(hù) 306
19.3 應(yīng)用安全 307
19.3.1 攻擊者如何繞過防火墻 308
19.3.2 輸入校驗 308
19.3.3 TLS 310
19.3.4 在rest中進(jìn)行數(shù)據(jù)保護(hù) 313
19.3.5 JWT 314
19.3.6 大消息的非對稱加密 315
19.4 運(yùn)維安全 316
19.4.1 修補(bǔ)容器 316
19.4.2 軟件更新 317
19.4.3 修補(bǔ)應(yīng)用程序代碼 317
19.4.4 日志 317
19.5 小結(jié) 317
第20章 日志和監(jiān)控 318
20.1 日志最佳實踐 319
20.2 指標(biāo) 319
20.2.1 指標(biāo)數(shù)據(jù)類型 320
20.2.2 命名約定 320
20.2.3 存儲和查詢 322
20.2.4 Grafana 323
20.3 日志記錄 326
20.3.1 具有關(guān)聯(lián)ID的分布式跟蹤 326
20.3.2 ElasticSearch、Logstash和Kibana 327
20.3.3 Kibana 328
20.4 異常 330
20.5 小結(jié) 332
第21章 持續(xù)交付 333
21.1 持續(xù)交付簡介 333
21.1.1 手動部署 334
21.1.2 持續(xù)交付的好處 334
21.1.3 持續(xù)交付面面觀 335
21.1.4 持續(xù)交付的過程 337
21.2 容器編排的選項和基礎(chǔ)架構(gòu) 338
21.3 Terraform 339
21.3.1 提供者 340
21.3.2 Terraform配置入口點 341
21.3.3 VPC模塊 342
21.3.4 輸出變量 346
21.3.5 創(chuàng)建基礎(chǔ)架構(gòu) 348
21.4 應(yīng)用范例 348
21.4.1 持續(xù)部署的工作流程 349
21.4.2 構(gòu)建 352
21.4.3 測試 353
21.4.4 基準(zhǔn)測試 354
21.4.5 靜態(tài)代碼測試 354
21.4.6 集成測試 355
21.4.7 部署 356
21.4.8 冒煙測試 357
21.4.9 監(jiān)控和預(yù)警 357
21.5 小結(jié) 359
第22章 使用Go kit框架構(gòu)建微服務(wù) 360
22.1 創(chuàng)建服務(wù) 361
22.1.1 測試 361
22.1.2 Go語言中的構(gòu)造函數(shù) 362
22.1.3 使用bcrypt進(jìn)行Hash處理并驗證密碼 363
22.2 使用請求和響應(yīng)對方法調(diào)用進(jìn)行建模 364
22.2.1 Go kit中的端點 365
22.2.2 為服務(wù)方法設(shè)定終點 366
22.2.3 不同級別的錯誤 366
22.2.4 將端點包裝到服務(wù)實現(xiàn)中 367
22.3 使用Go kit實現(xiàn)一個HTTP服務(wù)器 368
22.4 Go kit中的gRPC服務(wù)器 368
22.5 創(chuàng)建服務(wù)器命令 371
22.5.1 使用Go kit端點 373
22.5.2 運(yùn)行HTTP服務(wù)器 373
22.5.3 運(yùn)行g(shù)RPC服務(wù)器 373
22.5.4 防止main函數(shù)突然終止 374
22.5.5 通過HTTP使用服務(wù) 374
22.6 構(gòu)建一個gRPC客戶端 375
22.6.1 使用服務(wù)的命令行工具 376
22.6.2 在CLI中解析參數(shù) 377
22.7 服務(wù)中間件的速率限制 378
22.7.1 Go kit中的中間件 378
22.7.2 速率限制 380
22.8 小結(jié) 380
附錄 Go語言中的關(guān)鍵字 381

本目錄推薦

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