热门搜索: 中考 高考 考试 开卷17
服务电话 024-96192/23945006
 

《企业级Go项目开发实战》腾讯云专家多年大型Go项目经验总结,25000+人付费学习并好评,手把手教你零基础开发企业级G

编号:
wx1202798869
销售价:
¥113.52
(市场价: ¥129.00)
赠送积分:
114
数量:
   
商品介绍

(1)作者背景资深:作者是腾讯云技术专家,有超过7年的大型Go项目开发经验。
(2)内容得到验证:初稿源于极客时间专栏,超过25000人付费学习并好评,内容全面升级和补充。
(3)大厂经验总结:手把手教你互联网大厂Go项目开发经验和方法。
(4)内容抽丝剥茧:抽丝剥茧讲解Go项目开发全流程和涉及知识点,涵盖项目的设计、管理、开发、测试、部署全部环节。
(5)蕞佳实践设计:书中涉及大部分Go知识点,知识点都朝着蕞佳实践方向是设计,遵循Go 设计模式、Go 开发规范、Go 蕞佳实践、Go简洁架构,使用业界采纳度蕞高的Go包。
(6)提供项目源码:一个案例贯穿全书,提供可部署、可运行案例源码,可二次开发,可在生产中复用。
(7)知名专家推荐:极客邦科技创始人、腾讯云云原生产品总经理等专家联袂推荐。

这是一本手把手教读者如何零基础快速掌握企业级Go项目全流程开发的实战性著作。内容初稿源于极客时间上的专栏(有超过25000人付费学习),图书内容在专栏的基础上做了全面的更新和大量的补充。
作者是腾讯云的技术专家,有多年的企业级Go项目开发经验。全书围绕一个可部署、可运行的企业级Go应用(附源码,可二次开发)展开,覆盖项目全生命周期的所有环节,不仅将每个环节涉及的原理、步骤讲解得非常详细,而且把项目涉及的Go语言知识点全部娓娓道来。每个知识点都朝着*佳实践方向去设计,采用了业界共识程度*高的Go包、Go设计模式、Go开发规范、Go简洁架构等,不仅能让读者事半功倍地掌握企业级Go项目的开发方法,而且能学到一线大厂的*佳实践。
本书内容翔实,篇幅较大,一共31章,分为六个部分:第一部分是项目开始前的准备工作,包括贯穿全书的实战项目IAM的介绍与部署,以及Go开发环境的搭建;第二至六部分详细讲解了项目的设计、管理、开发、测试、部署等。包含了规范设计、文档编写、开发流程管理、功能设计与实现、项目测试、性能优化、高可用、高安全、水平扩展等方方面面。旨在帮助读者学会如何构建企业级 Go 项目,并解决 Go 项目开发所面临的各类问题。

第一部分  项目准备
第1章  Go开发环境准备2
1.1  机器选择2
1.1.1  开发机选择3
1.1.2  办公机选择3
1.2  Windows终端模拟器安装和配置3
1.3  Linux服务器申请和配置4
1.3.1  Linux服务器申请4
1.3.2  登录Linux服务器5
1.3.3  Linux服务器配置6
1.3.4  依赖安装和配置8
1.4  Go编译环境安装和配置9
1.4.1  Go编译工具安装和配置10
1.4.2  Protobuf编译环境安装11
1.5  Go IDE安装和配置12
1.6  本章总结14
第2章  快速部署IAM系统15
2.1  为什么选择IAM系统作为实战项目15
2.2  IAM系统概述16
2.2.1  IAM资源授权流程16
2.2.2  IAM系统架构介绍17
2.2.3  通过使用流程理解架构18
2.3  下载IAM项目代码20
2.4  安装和配置数据库21
2.4.1  配置scripts/install/environment.sh21
2.4.2  安装和配置MariaDB21
2.4.3  安装和配置Redis22
2.4.4  安装和配置MongoDB22
2.5  安装和配置IAM系统24
2.5.1  准备工作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  测试IAM系统是否安装成功40
2.6  彩蛋:一键安装40
2.7  本章总结41
第二部分  项目设计
第3章  规范设计44
3.1  有哪些地方需要制定规范44
3.2  开源规范45
3.2.1  开源协议概述45
3.2.2  开源协议选择46
3.2.3  开源规范有什么47
3.2.4  开源规范详细内容47
3.2.5  运营开源项目48
3.3  文档规范49
3.3.1  README 文档规范49
3.3.2  项目文档规范50
3.3.3  API文档规范51
3.4  Commit Message规范53
3.4.1  Commit Message规范有哪些53
3.4.2  与Commit Message相关的3个
    重要内容59
3.4.3  Commit Message规范自动化66
3.5  版本规范67
3.5.1  什么是语义化版本规范67
3.5.2  语义化版本规范示例69
3.5.3  如何确定版本号69
3.6  本章总结69
第4章  目录结构设计71
4.1  如何规范目录71
4.2  平铺式目录结构72
4.3  结构化目录结构73
4.3.1  Go应用:主要存放前后端代码75
4.3.2  Go应用:主要存放测试相关的
    文件和代码78
4.3.3  Go应用:存放与应用部署相关
    的文件78
4.3.4  项目管理:存放管理Go项目的
    各类文件79
4.3.5  文档:主要存放项目的各类文档80
4.3.6  不建议的目录82
4.4  一些建议82
4.5  本章总结83
第5章  工作流设计84
5.1  集中式工作流84
5.2  功能分支工作流85
5.3  Git Flow工作流88
5.3.1  Git Flow的5种分支88
5.3.2  Git Flow开发流程88
5.4  Forking工作流91
5.5  本章总结93
第6章  研发流程设计95
6.1  如何设计Go项目的研发流程95
6.2  在设计研发流程时,需要关注
     哪些点96
6.3  业界相对标准的研发流程96
6.3.1  需求阶段96
6.3.2  设计阶段98
6.3.3  开发阶段98
6.3.4  测试阶段100
6.3.5  发布阶段100
6.3.6  运营阶段102
6.4  角色与分工102
6.5  如何管理应用的生命周期104
6.6  应用生命周期管理技术有哪些104
6.7  研发模式105
6.8  CI/CD:自动化构建和部署应用106
6.8.1  持续集成107
6.8.2  持续交付107
6.8.3  持续部署107
6.9  DevOps:研发运维一体化108
6.9.1  AIOps:智能运维108
6.9.2  ChatOps:聊着天就把事情
    给办了109
6.9.3  GitOps:一种实现云原生的
    持续交付模型109
6.9.4  NoOps:无运维110
6.10  如何选择合适的应用生命周期
    管理技术111
6.11  本章总结111
第7章  如何写出优雅的Go项目112
7.1  优雅Go项目实现思路112
7.2  编写高质量的Go应用113
7.2.1  代码结构114
7.2.2  代码规范115
7.2.3  代码质量116
7.2.4  编程哲学119
7.2.5  软件设计方法124
7.3  高效管理项目125
7.3.1  高效的开发流程125
7.3.2  使用Makefile管理项目126
7.3.3  自动生成代码126
7.3.4  善于借助工具127
7.3.5  对接CI/CD127
7.4  编写高质量的项目文档128
7.5  本章总结128
第8章  Go语言设计模式?130
8.1  创建型模式131
8.1.1  单例模式131
8.1.2  工厂模式133
8.2  行为型模式136
8.2.1  策略模式136
8.2.2  模板模式138
8.3  结构型模式139
8.3.1  代理模式139
8.3.2  选项模式140
8.4  本章总结144
第三部分  项目管理
第9章  如何编写Makefile148
9.1  规划Makefile要实现的功能149
9.2  设计合理的Makefile结构151
9.3  掌握Makefile编写技巧153
9.3.1  善用通配符和自动变量153
9.3.2  善用函数153
9.3.3  依赖需要用到的工具154
9.3.4  把常用功能放在/Makefile中,
    不常用的放在分类Makefile中154
9.3.5  编写可扩展的Makefile155
9.3.6  将所有输出存放在一个目录下,
    方便清理和查找156
9.3.7  使用带层级的命名方式156
9.3.8  做好目标拆分157
9.3.9  设置OPTIONS157
9.3.10  定义环境变量158
9.3.11  自己调用自己159
9.4  本章总结159
第10章  IAM项目研发流程实战160
10.1  开发阶段160
10.1.1  代码开发160
10.1.2  代码提交165
10.2  测试阶段167
10.3  IAM项目的Makefile项目管理
    技巧168
10.3.1  Makefile help命令自动解析169
10.3.2  在options中指定变量值169
10.3.3  自动生成CHANGELOG169
10.3.4  自动生成版本号169
10.3.5  保持行为一致170
10.4  本章总结171
第11章  静态代码检查172
11.1  为什么选择golangci-lint做静态
     代码检查172
11.2  golangci-lint命令173
11.3  golangci-lint配置175
11.4  如何使用golangci-lint进行静态
     代码检查178
11.5  golangci-lint使用技巧180
11.6  本章总结182
第12章  生成Swagger API文档183
12.1  Swagger介绍183
12.2  Swagger和OpenAPI的区别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  本章总结195
第四部分  项目开发
第13章  错误处理198
13.1  错误码设计198
13.1.1  期望错误码实现的功能199
13.1.2  常见的错误码实现方式199
13.1.3  错误码设计建议201
13.1.4  业务Code码设计201
13.1.5  如何设置HTTP状态码202
13.2  IAM项目错误码设计规范203
13.2.1  错误码设计规范203
13.2.2  错误信息规范说明204
13.2.3  IAM API返回值说明204
13.3  错误包204
13.3.1  错误包需要具有哪些功能204
13.3.2  错误包的实现208
13.3.3  如何记录错误212
13.4  一个错误码的具体实现215
13.5  错误码实际使用示例218
13.6  本章总结219
第14章  日志处理220
14.1  如何设计日志包220
14.1.1  基础功能220
14.1.2  高级功能222
14.1.3  可选功能224
14.1.4  设计时需要关注的点226
14.2  如何记录日志226
14.2.1  在何处打印日志227
14.2.2  在哪个日志级别打印日志228
14.2.3  如何记录日志内容229
14.2.4  记录日志的佳实践总结230
14.3  拓展内容:分布式日志解决方案
    (EFK/ELK)230
14.4  有哪些优秀的开源日志包231
14.4.1  标准库log包232
14.4.2  glog232
14.4.3  logrus232
14.4.4  zap233
14.4.5  开源日志包选择233
14.5  从零开始编写一个日志包234
14.5.1  定义日志级别和日志选项234
14.5.2  创建Logger及各级别日志
    打印方法236
14.5.3  将日志记录到支持的输出中237
14.5.4  自定义日志输出格式239
14.5.5  测试日志包239
14.6  IAM项目日志包设计实战240
14.7  本章总结244
第15章  GORM ORM应用245
15.1  GORM基础知识245
15.2  通过示例学习GORM246
15.2.1  自动迁移表结构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  连接数据库251
15.3.3  创建记录251
15.3.4  删除记录252
15.3.5  更新记录253
15.3.6  查询数据253
15.3.7  高级查询254
15.3.8  原生SQL255
15.3.9  GORM钩子255
15.4  iam-apiserver中的CURD操作256
15.5  本章总结260
第16章  Web服务功能实现261
16.1  Web服务的核心功能261
16.1.1  基础功能262
16.1.2  高级功能262
16.2  Web框架为什么选择Gin263
16.3  Gin是如何支持Web服务的基础
    功能的264
16.3.1  HTTP/HTTPS支持268
16.3.2  JSON数据格式支持269
16.3.3  路由匹配270
16.3.4  路由分组270
16.3.5  一进程多服务271
16.3.6  参数解析、参数校验、逻辑
    处理、返回结果272
16.4  Gin是如何支持Web服务的高级
    功能的274
16.4.1  中间件274
16.4.2  认证、RequestID、跨域277
16.4.3  优雅关停277
16.5  本章总结279
第17章  IAM应用构建280
17.1  如何构建应用框架280
17.2  应用构建三剑客281
17.2.1  命令行参数解析工具:Pflag281
17.2.2  配置解析利器:Viper285
17.2.3  现代化的命令行框架:Cobra291
17.3  构建应用的基础:应用的三大
    基本功能297
17.4  iam-apiserver是如何构建应用
    框架的298
17.5  App包的设计和实现300
17.5.1  构建应用301
17.5.2  命令行程序构建301
17.5.3  命令行参数解析302
17.5.4  配置文件解析305
17.6  IAM应用构建的优秀特性306
17.7  构建应用的注意事项307
17.8  本章总结307
第18章  IAM认证功能实现309
18.1  认证与授权的区别309
18.2  4种基本的认证方式310
18.2.1  基础认证310
18.2.2  摘要认证311
18.2.3  开放授权认证312
18.2.4  令牌认证314
18.3  基于JWT的Token认证机制实现314
18.3.1  JWT简介314
18.3.2  JWT认证流程315
18.3.3  JWT格式315
18.4  如何设计IAM项目的认证功能318
18.5  IAM项目是如何实现Basic
    认证的320
18.6  IAM项目是如何实现Bearer
    认证的326
18.6.1  iam-authz-server Bearer认证
    实现326
18.6.2  iam-apiserver Bearer认证
    实现330
18.7  IAM项目认证功能设计技巧333
18.8  本章总结334
第19章  IAM API服务构建335
19.1  RESTful API介绍335
19.1.1  什么是RESTful API336
19.1.2  RESTful API设计原则337
19.1.3  RESTful API示例341
19.2  RPC API介绍341
19.2.1  什么是RPC 341
19.2.2  gRPC简介342
19.2.3  Protocol Buffers介绍343
19.2.4  gRPC示例344
19.3  REST与gRPC351
19.4  iam-apiserver服务介绍352
19.4.1  iam-apiserver功能介绍352
19.4.2  iam-apiserver使用方法介绍353
19.5  iam-apiserver代码实现357
19.5.1  iam-apiserver配置处理357
19.5.2  iam-apiserver启动流程359
19.5.3  iam-apiserver的RESTful API
    请求处理流程360
19.5.4  iam-apiserver代码架构361
19.6  iam-apiserver服务核心功能实现
    讲解369
19.6.1  与应用框架相关的特性369
19.6.2  与编程规范相关的特性375
19.6.3  其他特性383
19.7  本章总结387
第20章  IAM Authz服务构建388
20.1  权限基础知识介绍388
20.1.1  权限相关术语介绍389
20.1.2  权限模型介绍389
20.1.3  相关开源项目395
20.1.4  开源项目选择建议396
20.2  iam-authz-server的功能介绍396
20.2.1  github.com/ory/ladon包介绍396
20.2.2  iam-authz-server使用方法
        介绍399
20.3  iam-authz-server的代码实现401
20.3.1  iam-authz-server的配置处理401
20.3.2  iam-authz-server启动流程402
20.3.3  iam-authz-server的RESTful
    API请求处理流程402
20.3.4  iam-authz-server的代码架构403
20.4  iam-authz-server关键代码分析404
20.4.1  资源授权404
20.4.2  缓存设计406
20.4.3  数据一致性412
20.5  本章总结412
第21章  IAM Pump服务构建414
21.1  数据采集方式的分类414
21.2  数据采集系统设计415
21.2.1  设计时需要解决的核心问题415
21.2.2  数据上报功能设计416
21.2.3  数据采集功能设计416
21.2.4  数据采集应用模型417
21.3  数据采集系统落地项目:
    iam-authz-server+iam-pump417
21.3.1  iam-authz-server:数据上报
    设计417
21.3.2  启动数据上报服务420
21.3.3  异步上报授权日志422
21.3.4  优雅关停数据上报423
21.4  iam-pump:数据采集设计423
21.4.1  数据采集插件定义424
21.4.2  初始化数据采集插件425
21.4.3  健康检查426
21.4.4  定期消费Redis数据426
21.4.5  优雅关停数据采集服务428
21.4.6  使用分布式锁机制,避免
    重复消费428
21.5  本章总结429
第22章  分布式作业系统设计与实现430
22.1  任务分类430
22.2  作业系统的常见实现431
22.3  IAM作业系统设计与实现434
22.3.1  IAM作业系统实现所使用的
     Go包435
22.3.2  IAM作业系统特点437
22.3.3  IAM作业系统实现438
22.3.4  IAM作业系统实现解读440
22.4  本章总结441
第23章  IAM SDK设计与实现442
23.1  什么是SDK442
23.2  SDK设计要点443
23.2.1  如何给SDK命名443
23.2.2  SDK的目录结构443
23.2.3  SDK的设计方法444
23.3  公有云厂商采用的SDK设计
    方式445
23.3.1  API层:创建客户端实例446
23.3.2  基础层:构建并执行HTTP
    请求447
23.4  marmotedu-sdk-go客户端设计与
     创建451
23.4.1  marmotedu-sdk-go客户端
    设计453
23.4.2  项目级别客户端创建455
23.4.3  应用级别客户端创建455
23.4.4  服务级别客户端创建456
23.5  marmotedu-sdk-go的实现456
23.5.1  RESTClient客户端实现457
23.5.2  Request模块实现459
23.5.3  请求认证463
23.6  本章总结464
第24章  IAM客户端工具构建465
24.1  常见客户端介绍465
24.2  大型系统客户端的特点466
24.3  iamctl的核心实现468
24.3.1  iamctl的功能468
24.3.2  iamctl代码结构468
24.3.3  iamctl命令行选项469
24.3.4  iamctl配置文件解析469
24.4  iamctl中子命令是如何构建的470
24.4.1  如何优雅地构建一个命令470
24.4.2  自动生成命令471
24.4.3  命令自动补全472
24.4.4  更友好的输出473
24.5  iamctl是如何调用API的473
24.5.1  客户端配置文件474
24.5.2  SDK调用475
24.5.3  RESTful API调用475
24.6  本章总结475
第五部分  项目测试
第25章  代码测试478
25.1  如何测试Go代码478
25.2  测试命名规范479
25.2.1  测试文件的命名规范479
25.2.2  测试包的命名规范479
25.2.3  测试函数的命名规范480
25.2.4  测试变量的命名规范480
25.3  4种基本测试类型481
25.3.1  单元测试481
25.3.2  性能测试486
25.3.3  模糊测试489
25.3.4  示例测试490
25.4  Go语言其他测试类型493
25.4.1  TestMain函数493
25.4.2  Mock测试494
25.4.3  Fake测试499
25.5  何时编写和执行单元测试用例499
25.5.1  编码前:TDD测试500
25.5.2  编码中:增量测试500
25.5.3  编码后:存量测试500
25.6  测试覆盖率500
25.7  IAM项目测试实战502
25.7.1  IAM项目是如何执行测试
    用例的502
25.7.2  IAM项目测试案例分享504
25.8  其他测试工具和包507
25.9  本章总结507
第26章  性能分析509
26.1  生成性能数据文件509
26.1.1  通过命令行生成性能数据
     文件509
26.1.2  通过代码生成性能数据文件510
26.1.3  通过net/http/pprof生成
        性能数据文件511
26.2  生成IAM测试用例的性能数据513
26.3  CPU性能分析513
26.4  内存性能分析521
26.5  本章总结523
第27章  API Server性能测试和
    调优524
27.1  API性能测试指标524
27.2  API性能测试方法525
27.2.1  Wrk的安装方法525
27.2.2  Wrk的使用方法526
27.3  API Server性能测试实践527
27.3.1  性能测试脚本介绍528
27.3.2  关闭Debug配置选项530
27.3.3  使用wrktest.sh测试IAM API
    性能530
27.4  API Server性能分析533
27.5  API Server性能测试注意事项536
27.6  本章总结537
第六部分  项目部署
第28章  基于虚拟机部署IAM系统540
28.1  部署方案540
28.2  Nginx安装和配置542
28.2.1  Nginx功能简介542
28.2.2  Nginx安装和配置步骤544
28.2.3  Nginx常用命令544
28.3  Keepalived安装和配置545
28.3.1  Keepalived介绍545
28.3.2  Keepalived安装步骤546
28.3.3  Keepalived配置文件解析546
28.4  部署IAM系统549
28.4.1  部署IAM系统中的服务549
28.4.2  配置Nginx作为反向代理550
28.4.3  配置Nginx处理负载均衡552
28.4.4  配置Keepalived556
28.5  IAM系统安全性加固564
28.5.1  iptables简介564
28.5.2  网络数据包处理流程565
28.5.3  iptables工具的使用566
28.5.4  IAM安全加固(内网不
     安全)569
28.5.5  IAM安全加固(内网安全)573
28.6  弹性伸缩574
28.6.1  系统扩容575
28.6.2  系统缩容575
28.7  本章总结575
第29章  IAM容器化部署576
29.1  Docker镜像的构建原理和方式576
29.1.1  通过docker commit命令
    构建镜像576
29.1.2  通过Dockerfile来构建镜像577
29.1.3  其他镜像构建方式579
29.2  编写Dockerfile文件580
29.2.1  Dockerfile指令介绍580
29.2.2  Dockerfile佳实践581
29.3  编写Kubernetes资源定义文件582
29.3.1  为什么选择YAML格式来
    定义Kubernetes资源582
29.3.2  Kubernetes资源定义概述584
29.3.3  常用的Kubernetes资源定义586
29.3.4  YAML文件编写技巧593
29.3.5  使用Kubernetes YAML时的
     一些推荐工具594
29.4  Kubernetes部署实战:部署准备
    工作596
29.4.1  开通腾讯云容器服务镜像
    仓库596
29.4.2  安装Docker599
29.4.3  准备一个Kubernetes集群601
29.5  Kubernetes部署实战:安装IAM
    系统602
29.6  Kubernetes部署实战:测试IAM
    系统605
29.7  Kubernetes部署实战:销毁
    Serverless集群及其资源605
29.8  本章总结606
第30章  Helm应用部署607
30.1  Helm基础知识介绍607
30.1.1  Helm是什么607
30.1.2  Helm中的三大基本概念608
30.1.3  我们为什么要使用Helm609
30.2  Helm基本操作实战611
30.2.1  安装Helm611
30.2.2  Helm快速入门611
30.2.3  Helm命令616
30.3  使用Helm部署IAM系统617
30.3.1  制作IAM Chart包618
30.3.2  IAM Chart包部署621
30.3.3  多环境部署IAM系统624
30.4  本章总结624
第31章  基于GitHub Actions的CI
    实战625
31.1  GitHub Actions的基础知识625
31.1.1  GitHub Actions的基本概念626
31.1.2  工作流程文件介绍626
31.2  GitHub Actions的进阶用法629
31.2.1  为工作流加一个Badge标记629
31.2.2  构建矩阵630
31.2.3  使用密钥630
31.2.4  使用Artifact保存构建产物631
31.3  GitHub Actions实战632
31.4  IAM GitHub Actions实战636
31.5  本章总结639

商品参数
基本信息
出版社 机械工业出版社
ISBN 9787111716341
条码 9787111716341
编者 孔令飞 著
译者 --
出版年月 2023-01-01 00:00:00.0
开本 16开
装帧 平装
页数 642
字数 897
版次 1
印次 1
纸张 一般胶版纸
商品评论

暂无商品评论信息 [发表商品评论]

商品咨询

暂无商品咨询信息 [发表商品咨询]