企業(yè)級(jí)Go項(xiàng)目開發(fā)實(shí)戰(zhàn) 版權(quán)信息
- ISBN:9787111716341
- 條形碼:9787111716341 ; 978-7-111-71634-1
- 裝幀:一般膠版紙
- 冊(cè)數(shù):暫無
- 重量:暫無
- 所屬分類:>
企業(yè)級(jí)Go項(xiàng)目開發(fā)實(shí)戰(zhàn) 本書特色
(1)作者背景資深:作者是騰訊云技術(shù)專家,有超過7年的大型Go項(xiàng)目開發(fā)經(jīng)驗(yàn)。
(2)內(nèi)容得到驗(yàn)證:初稿源于極客時(shí)間專欄,超過25000人付費(fèi)學(xué)習(xí)并好評(píng),內(nèi)容全面升級(jí)和補(bǔ)充。
(3)大廠經(jīng)驗(yàn)總結(jié):手把手教你互聯(lián)網(wǎng)大廠Go項(xiàng)目開發(fā)經(jīng)驗(yàn)和方法。
(4)內(nèi)容抽絲剝繭:抽絲剝繭講解Go項(xiàng)目開發(fā)全流程和涉及知識(shí)點(diǎn),涵蓋項(xiàng)目的設(shè)計(jì)、管理、開發(fā)、測(cè)試、部署全部環(huán)節(jié)。
(5)蕞佳實(shí)踐設(shè)計(jì):書中涉及大部分Go知識(shí)點(diǎn),知識(shí)點(diǎn)都朝著蕞佳實(shí)踐方向是設(shè)計(jì),遵循Go 設(shè)計(jì)模式、Go 開發(fā)規(guī)范、Go 蕞佳實(shí)踐、Go簡(jiǎn)潔架構(gòu),使用業(yè)界采納度蕞高的Go包。
(6)提供項(xiàng)目源碼:一個(gè)案例貫穿全書,提供可部署、可運(yùn)行案例源碼,可二次開發(fā),可在生產(chǎn)中復(fù)用。
(7)知名專家推薦:極客邦科技創(chuàng)始人、騰訊云云原生產(chǎn)品總經(jīng)理等專家聯(lián)袂推薦。
企業(yè)級(jí)Go項(xiàng)目開發(fā)實(shí)戰(zhàn) 內(nèi)容簡(jiǎn)介
這是一本手把手教讀者如何零基礎(chǔ)快速掌握企業(yè)級(jí)Go項(xiàng)目全流程開發(fā)的實(shí)戰(zhàn)性著作。內(nèi)容初稿源于極客時(shí)間上的專欄(有超過25000人付費(fèi)學(xué)習(xí)),圖書內(nèi)容在專欄的基礎(chǔ)上做了全面的更新和大量的補(bǔ)充。
作者是騰訊云的技術(shù)專家,有多年的企業(yè)級(jí)Go項(xiàng)目開發(fā)經(jīng)驗(yàn)。全書圍繞一個(gè)可部署、可運(yùn)行的企業(yè)級(jí)Go應(yīng)用(附源碼,可二次開發(fā))展開,覆蓋項(xiàng)目全生命周期的所有環(huán)節(jié),不僅將每個(gè)環(huán)節(jié)涉及的原理、步驟講解得非常詳細(xì),而且把項(xiàng)目涉及的Go語言知識(shí)點(diǎn)全部娓娓道來。每個(gè)知識(shí)點(diǎn)都朝著*佳實(shí)踐方向去設(shè)計(jì),采用了業(yè)界共識(shí)程度*高的Go包、Go設(shè)計(jì)模式、Go開發(fā)規(guī)范、Go簡(jiǎn)潔架構(gòu)等,不僅能讓讀者事半功倍地掌握企業(yè)級(jí)Go項(xiàng)目的開發(fā)方法,而且能學(xué)到一線大廠的*佳實(shí)踐。
本書內(nèi)容翔實(shí),篇幅較大,一共31章,分為六個(gè)部分:部分是項(xiàng)目開始前的準(zhǔn)備工作,包括貫穿全書的實(shí)戰(zhàn)項(xiàng)目IAM的介紹與部署,以及Go開發(fā)環(huán)境的搭建;第二至六部分詳細(xì)講解了項(xiàng)目的設(shè)計(jì)、管理、開發(fā)、測(cè)試、部署等。包含了規(guī)范設(shè)計(jì)、文檔編寫、開發(fā)流程管理、功能設(shè)計(jì)與實(shí)現(xiàn)、項(xiàng)目測(cè)試、性能優(yōu)化、高可用、高安全、水平擴(kuò)展等方方面面。旨在幫助讀者學(xué)會(huì)如何構(gòu)建企業(yè)級(jí)Go項(xiàng)目,并解決Go項(xiàng)目開發(fā)所面臨的各類問題。
企業(yè)級(jí)Go項(xiàng)目開發(fā)實(shí)戰(zhàn) 目錄
**部分 項(xiàng)目準(zhǔn)備
第1章 Go開發(fā)環(huán)境準(zhǔn)備2
1.1 機(jī)器選擇2
1.1.1 開發(fā)機(jī)選擇3
1.1.2 辦公機(jī)選擇3
1.2 Windows終端模擬器安裝和配置3
1.3 Linux服務(wù)器申請(qǐng)和配置4
1.3.1 Linux服務(wù)器申請(qǐng)4
1.3.2 登錄Linux服務(wù)器5
1.3.3 Linux服務(wù)器配置6
1.3.4 依賴安裝和配置8
1.4 Go編譯環(huán)境安裝和配置9
1.4.1 Go編譯工具安裝和配置10
1.4.2 Protobuf編譯環(huán)境安裝11
1.5 Go IDE安裝和配置12
1.6 本章總結(jié)14
第2章 快速部署IAM系統(tǒng)15
2.1 為什么選擇IAM系統(tǒng)作為實(shí)戰(zhàn)項(xiàng)目15
2.2 IAM系統(tǒng)概述16
2.2.1 IAM資源授權(quán)流程16
2.2.2 IAM系統(tǒng)架構(gòu)介紹17
2.2.3 通過使用流程理解架構(gòu)18
2.3 下載IAM項(xiàng)目代碼20
2.4 安裝和配置數(shù)據(jù)庫(kù)21
2.4.1 配置scripts/install/environment.sh21
2.4.2 安裝和配置MariaDB21
2.4.3 安裝和配置Redis22
2.4.4 安裝和配置MongoDB22
2.5 安裝和配置IAM系統(tǒng)24
2.5.1 準(zhǔn)備工作25
2.5.2 安裝和配置iam-apiserver28
2.5.3 安裝iamctl32
2.5.4 安裝和配置iam-authz-server34
2.5.5 安裝和配置iam-pump36
2.5.6 安裝和配置 iam-watcher38
2.5.7 安裝 man 文件39
2.5.8 測(cè)試IAM系統(tǒng)是否安裝成功40
2.6 彩蛋:一鍵安裝40
2.7 本章總結(jié)41
第二部分 項(xiàng)目設(shè)計(jì)
第3章 規(guī)范設(shè)計(jì)44
3.1 有哪些地方需要制定規(guī)范44
3.2 開源規(guī)范45
3.2.1 開源協(xié)議概述45
3.2.2 開源協(xié)議選擇46
3.2.3 開源規(guī)范有什么47
3.2.4 開源規(guī)范詳細(xì)內(nèi)容47
3.2.5 運(yùn)營(yíng)開源項(xiàng)目48
3.3 文檔規(guī)范49
3.3.1 README 文檔規(guī)范49
3.3.2 項(xiàng)目文檔規(guī)范50
3.3.3 API文檔規(guī)范51
3.4 Commit Message規(guī)范53
3.4.1 Commit Message規(guī)范有哪些53
3.4.2 與Commit Message相關(guān)的3個(gè)
重要內(nèi)容59
3.4.3 Commit Message規(guī)范自動(dòng)化66
3.5 版本規(guī)范67
3.5.1 什么是語義化版本規(guī)范67
3.5.2 語義化版本規(guī)范示例69
3.5.3 如何確定版本號(hào)69
3.6 本章總結(jié)69
第4章 目錄結(jié)構(gòu)設(shè)計(jì)71
4.1 如何規(guī)范目錄71
4.2 平鋪式目錄結(jié)構(gòu)72
4.3 結(jié)構(gòu)化目錄結(jié)構(gòu)73
4.3.1 Go應(yīng)用:主要存放前后端代碼75
4.3.2 Go應(yīng)用:主要存放測(cè)試相關(guān)的
文件和代碼78
4.3.3 Go應(yīng)用:存放與應(yīng)用部署相關(guān)
的文件78
4.3.4 項(xiàng)目管理:存放管理Go項(xiàng)目的
各類文件79
4.3.5 文檔:主要存放項(xiàng)目的各類文檔80
4.3.6 不建議的目錄82
4.4 一些建議82
4.5 本章總結(jié)83
第5章 工作流設(shè)計(jì)84
5.1 集中式工作流84
5.2 功能分支工作流85
5.3 Git Flow工作流88
5.3.1 Git Flow的5種分支88
5.3.2 Git Flow開發(fā)流程88
5.4 Forking工作流91
5.5 本章總結(jié)93
第6章 研發(fā)流程設(shè)計(jì)95
6.1 如何設(shè)計(jì)Go項(xiàng)目的研發(fā)流程95
6.2 在設(shè)計(jì)研發(fā)流程時(shí),需要關(guān)注
哪些點(diǎn)96
6.3 業(yè)界相對(duì)標(biāo)準(zhǔn)的研發(fā)流程96
6.3.1 需求階段96
6.3.2 設(shè)計(jì)階段98
6.3.3 開發(fā)階段98
6.3.4 測(cè)試階段100
6.3.5 發(fā)布階段100
6.3.6 運(yùn)營(yíng)階段102
6.4 角色與分工102
6.5 如何管理應(yīng)用的生命周期104
6.6 應(yīng)用生命周期管理技術(shù)有哪些104
6.7 研發(fā)模式105
6.8 CI/CD:自動(dòng)化構(gòu)建和部署應(yīng)用106
6.8.1 持續(xù)集成107
6.8.2 持續(xù)交付107
6.8.3 持續(xù)部署107
6.9 DevOps:研發(fā)運(yùn)維一體化108
6.9.1 AIOps:智能運(yùn)維108
6.9.2 ChatOps:聊著天就把事情
給辦了109
6.9.3 GitOps:一種實(shí)現(xiàn)云原生的
持續(xù)交付模型109
6.9.4 NoOps:無運(yùn)維110
6.10 如何選擇合適的應(yīng)用生命周期
管理技術(shù)111
6.11 本章總結(jié)111
第7章 如何寫出優(yōu)雅的Go項(xiàng)目112
7.1 優(yōu)雅Go項(xiàng)目實(shí)現(xiàn)思路112
7.2 編寫高質(zhì)量的Go應(yīng)用113
7.2.1 代碼結(jié)構(gòu)114
7.2.2 代碼規(guī)范115
7.2.3 代碼質(zhì)量116
7.2.4 編程哲學(xué)119
7.2.5 軟件設(shè)計(jì)方法124
7.3 高效管理項(xiàng)目125
7.3.1 高效的開發(fā)流程125
7.3.2 使用Makefile管理項(xiàng)目126
7.3.3 自動(dòng)生成代碼126
7.3.4 善于借助工具127
7.3.5 對(duì)接CI/CD127
7.4 編寫高質(zhì)量的項(xiàng)目文檔128
7.5 本章總結(jié)128
第8章 Go語言設(shè)計(jì)模式?130
8.1 創(chuàng)建型模式131
8.1.1 單例模式131
8.1.2 工廠模式133
8.2 行為型模式136
8.2.1 策略模式136
8.2.2 模板模式138
8.3 結(jié)構(gòu)型模式139
8.3.1 代理模式139
8.3.2 選項(xiàng)模式140
8.4 本章總結(jié)144
第三部分 項(xiàng)目管理
第9章 如何編寫Makefile148
9.1 規(guī)劃Makefile要實(shí)現(xiàn)的功能149
9.2 設(shè)計(jì)合理的Makefile結(jié)構(gòu)151
9.3 掌握Makefile編寫技巧153
9.3.1 善用通配符和自動(dòng)變量153
9.3.2 善用函數(shù)153
9.3.3 依賴需要用到的工具154
9.3.4 把常用功能放在/Makefile中,
不常用的放在分類Makefile中154
9.3.5 編寫可擴(kuò)展的Makefile155
9.3.6 將所有輸出存放在一個(gè)目錄下,
方便清理和查找156
9.3.7 使用帶層級(jí)的命名方式156
9.3.8 做好目標(biāo)拆分157
9.3.9 設(shè)置OPTIONS157
9.3.10 定義環(huán)境變量158
9.3.11 自己調(diào)用自己159
9.4 本章總結(jié)159
第10章 IAM項(xiàng)目研發(fā)流程實(shí)戰(zhàn)160
10.1 開發(fā)階段160
10.1.1 代碼開發(fā)160
10.1.2 代碼提交165
10.2 測(cè)試階段167
10.3 IAM項(xiàng)目的Makefile項(xiàng)目管理
技巧168
10.3.1 Makefile help命令自動(dòng)解析169
10.3.2 在options中指定變量值169
10.3.3 自動(dòng)生成CHANGELOG169
10.3.4 自動(dòng)生成版本號(hào)169
10.3.5 保持行為一致170
10.4 本章總結(jié)171
第11章 靜態(tài)代碼檢查172
11.1 為什么選擇golangci-lint做靜態(tài)
代碼檢查172
11.2 golangci-lint命令173
11.3 golangci-lint配置175
11.4 如何使用golangci-lint進(jìn)行靜態(tài)
代碼檢查178
11.5 golangci-lint使用技巧180
11.6 本章總結(jié)182
第12章 生成Swagger API文檔183
12.1 Swagger介紹183
12.2 Swagger和OpenAPI的區(qū)別184
12.3 用go-swagger來生成Swagger API
文檔184
12.3.1 安裝swagger工具185
12.3.2 swagger命令行工具介紹185
12.4 如何使用swagger命令生成
Swagger文檔186
12.4.1 解析注釋生成Swagger文檔186
12.4.2 go-swagger其他常用功能介紹192
12.5 IAM Swagger文檔194
12.6 本章總結(jié)195
第四部分 項(xiàng)目開發(fā)
第13章 錯(cuò)誤處理198
13.1 錯(cuò)誤碼設(shè)計(jì)198
13.1.1 期望錯(cuò)誤碼實(shí)現(xiàn)的功能199
13.1.2 常見的錯(cuò)誤碼實(shí)現(xiàn)方式199
13.1.3 錯(cuò)誤碼設(shè)計(jì)建議201
13.1.4 業(yè)務(wù)Code碼設(shè)計(jì)201
13.1.5 如何設(shè)置HTTP狀態(tài)碼202
13.2 IAM項(xiàng)目錯(cuò)誤碼設(shè)計(jì)規(guī)范203
13.2.1 錯(cuò)誤碼設(shè)計(jì)規(guī)范203
13.2.2 錯(cuò)誤信息規(guī)范說明204
13.2.3 IAM API返回值說明204
13.3 錯(cuò)誤包204
13.3.1 錯(cuò)誤包需要具有哪些功能204
13.3.2 錯(cuò)誤包的實(shí)現(xiàn)208
13.3.3 如何記錄錯(cuò)誤212
13.4 一個(gè)錯(cuò)誤碼的具體實(shí)現(xiàn)215
13.5 錯(cuò)誤碼實(shí)際使用示例218
13.6 本章總結(jié)219
第14章 日志處理220
14.1 如何設(shè)計(jì)日志包220
14.1.1 基礎(chǔ)功能220
14.1.2 高級(jí)功能222
14.1.3 可選功能224
14.1.4 設(shè)計(jì)時(shí)需要關(guān)注的點(diǎn)226
14.2 如何記錄日志226
14.2.1 在何處打印日志227
14.2.2 在哪個(gè)日志級(jí)別打印日志228
14.2.3 如何記錄日志內(nèi)容229
14.2.4 記錄日志的佳實(shí)踐總結(jié)230
14.3 拓展內(nèi)容:分布式日志解決方案
(EFK/ELK)230
14.4 有哪些優(yōu)秀的開源日志包231
14.4.1 標(biāo)準(zhǔn)庫(kù)log包232
14.4.2 glog232
14.4.3 logrus232
14.4.4 zap233
14.4.5 開源日志包選擇233
14.5 從零開始編寫一個(gè)日志包234
14.5.1 定義日志級(jí)別和日志選項(xiàng)234
14.5.2 創(chuàng)建Logger及各級(jí)別日志
打印方法236
14.5.3 將日志記錄到支持的輸出中237
14.5.4 自定義日志輸出格式239
14.5.5 測(cè)試日志包239
14.6 IAM項(xiàng)目日志包設(shè)計(jì)實(shí)戰(zhàn)240
14.7 本章總結(jié)244
第15章 GORM ORM應(yīng)用245
15.1 GORM基礎(chǔ)知識(shí)245
15.2 通過示例學(xué)習(xí)GORM246
15.2.1 自動(dòng)遷移表結(jié)構(gòu)248
15.2.2 插入表記錄248
15.2.3 獲取符合條件的記錄248
15.2.4 更新表記錄248
15.2.5 刪除表記錄249
15.2.6 獲取表記錄列表249
15.3 GORM常用操作講解249
15.3.1 模型定義250
15.3.2 連接數(shù)據(jù)庫(kù)251
15.3.3 創(chuàng)建記錄251
15.3.4 刪除記錄252
15.3.5 更新記錄253
15.3.6 查詢數(shù)據(jù)253
15.3.7 高級(jí)查詢254
15.3.8 原生SQL255
15.3.9 GORM鉤子255
15.4 iam-apiserver中的CURD操作256
15.5 本章總結(jié)260
第16章 Web服務(wù)功能實(shí)現(xiàn)261
16.1 Web服務(wù)的核心功能261
16.1.1 基礎(chǔ)功能262
16.1.2 高級(jí)功能262
16.2 Web框架為什么選擇Gin263
16.3 Gin是如何支持Web服務(wù)的基礎(chǔ)
功能的264
16.3.1 HTTP/HTTPS支持268
16.3.2 JSON數(shù)據(jù)格式支持269
16.3.3 路由匹配270
16.3.4 路由分組270
16.3.5 一進(jìn)程多服務(wù)271
16.3.6 參數(shù)解析、參數(shù)校驗(yàn)、邏輯
處理、返回結(jié)果272
16.4 Gin是如何支持Web服務(wù)的高級(jí)
功能的274
16.4.1 中間件274
16.4.2 認(rèn)證、RequestID、跨域277
16.4.3 優(yōu)雅關(guān)停277
16.5 本章總結(jié)279
第17章 IAM應(yīng)用構(gòu)建280
17.1 如何構(gòu)建應(yīng)用框架280
17.2 應(yīng)用構(gòu)建三劍客281
17.2.1 命令行參數(shù)解析工具:Pflag281
17.2.2 配置解析神器:Viper285
17.2.3 現(xiàn)代化的命令行框架:Cobra291
17.3 構(gòu)建應(yīng)用的基礎(chǔ):應(yīng)用的三大
基本功能297
17.4 iam-apiserver是如何構(gòu)建應(yīng)用
框架的298
17.5 App包的設(shè)計(jì)和實(shí)現(xiàn)300
17.5.1 構(gòu)建應(yīng)用301
17.5.2 命令行程序構(gòu)建301
17.5.3 命令行參數(shù)解析302
17.5.4 配置文件解析305
17.6 IAM應(yīng)用構(gòu)建的優(yōu)秀特性306
17.7 構(gòu)建應(yīng)用的注意事項(xiàng)307
17.8 本章總結(jié)307
第18章 IAM認(rèn)證功能實(shí)現(xiàn)309
18.1 認(rèn)證與授權(quán)的區(qū)別309
18.2 4種基本的認(rèn)證方式310
18.2.1 基礎(chǔ)認(rèn)證310
18.2.2 摘要認(rèn)證311
18.2.3 開放授權(quán)認(rèn)證312
18.2.4 令牌認(rèn)證314
18.3 基于JWT的Token認(rèn)證機(jī)制實(shí)現(xiàn)314
18.3.1 JWT簡(jiǎn)介314
18.3.2 JWT認(rèn)證流程315
18.3.3 JWT格式315
18.4 如何設(shè)計(jì)IAM項(xiàng)目的認(rèn)證功能318
18.5 IAM項(xiàng)目是如何實(shí)現(xiàn)Basic
認(rèn)證的320
18.6 IAM項(xiàng)目是如何實(shí)現(xiàn)Bearer
認(rèn)證的326
18.6.1 iam-authz-server Bearer認(rèn)證
展開全部
企業(yè)級(jí)Go項(xiàng)目開發(fā)實(shí)戰(zhàn) 作者簡(jiǎn)介
孔令飛,騰訊云容器技術(shù)專家,曾就職于聯(lián)想和Red Hat,擁有多年Go項(xiàng)目開發(fā)和管理經(jīng)驗(yàn)。
云計(jì)算技術(shù)專家,在云計(jì)算領(lǐng)域有非常豐富的實(shí)踐經(jīng)驗(yàn)。Kubernetes社區(qū)貢獻(xiàn)者,對(duì)Kubernetes、Docker、Serverless、微服務(wù)等技術(shù)有深入的理解。
騰訊學(xué)院特約講師,極客時(shí)間《Go 語言項(xiàng)目開發(fā)實(shí)戰(zhàn)》專欄作者,掘金《基于 Go 語言構(gòu)建企業(yè)級(jí)的 RESTful API 服務(wù)》專欄作者。