基本信息

编辑推荐
结合大量实战案例,全面深入地介绍了Go语言知识、微服务理论,以及Go语言实现微服务模式的方法,手把手带领读者走上Go语言微服务之道。
内容简介
计算机书籍
全书共分21章。分为四篇进行介绍:语言基础篇、语言进阶篇、微服务知识篇、微服务实战篇。
第 一篇包括6章:Go程序基础、基本数据类型、字符串及复合数据类型、函数、方法、接口及反射、并发。通过本篇的开发,可以让不是很熟悉Go语言的工程师掌握语法基础。
第二篇包括3章:Go Web编程、并发编程模式、分布式系统。通过本篇的学习可以让读者了解使用Go语言如何进行Web开发、Go并发模式如何设计、分布式系统使用Go如何设计。
第三篇包括5章:微服务介绍、Linux基础、Docker、Kubernetes、Go常用微服务框架。本篇是用Go进行微服务开发的基本知识储备,知识面教光,避免读者查阅多本资料,整篇学习完就可以达到微服务开发的技能入门水平。
第四篇包括7章:生产环境Docker及Kubernetes安装、基于Docker及Goland的开发测试环境搭建、测试驱动开发和IM系统核心功能的微服务化、持续化交付、事件驱动架构、日志和监控、安全。本篇是微服务实战,以IM系统为例,从系统安装、如何测试、如何迭代、如何运维都进行了介绍。
目录
第一部分 Go语言基础
第1章 Go语言程序基础 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 选择和循环 12
1.5 垃圾回收 13
1.6 小结 15
第2章 基本数据类型 16
2.1 整型 17
2.1.1 整型取值范围 17
2.1.2 运算符 18
2.2 浮点型 19
2.3 复数和布尔类型 21
2.4 格式化说明符 22
2.5 小结 22
前言
本书对使用Go语言进行微服务开发做了全面细致的介绍,包括微服务的基础知识、微服务的拆分、微服务进程间通信(IPC)、微服务的分布式事务管理、领域驱动设计(DDD)、微服务中的测试、基于ES-CQRS的微服务实践、微服务生产环境和持续交付等。本书比较全面地对微服务进行了介绍,而且对于每个知识点都给出了技术实现和实例代码,比如微服务进程间通信部分重点介绍了gRPC,ES-CQRS部分则给出了Go语言的具体实现。在介绍完知识点之后,本书给出了一些综合性的案例,比如第10章、第22章等,并通过GitHub提供了完整的可运行的代码,可帮助有基本Go语言语法知识的读者尽快了解、掌握微服务模式。
不同的语言对于微服务的实现都不相同。为了让读者更深入地了解Go语言的微服务实现模式,本书前6章深入介绍了Go语言的语法知识,包括Go语言程序基础,基本数据类型,字符串与复合数据类型,函数、方法、接口和反射,并发编程,包和代码测试等。对于已经熟练掌握Go语言的读者来说,前6章可以略过,或者快速浏览一遍。
本书目的
本书是为Go语言开发者和希望进入Go微服务开发领域的读者准备的,它不是一本仅介绍微服务的书,有一半的篇幅是在介绍Go语言的知识,所以特别适合有Java、Python等其他编程基础而希望转到Go语言编程的读者阅读。
本书除了详细地介绍相应的理论知识以外,还配备了示例代码,所有代码均已在GitHub上开源,读者可以边读书边实践。希望通过这种方式让更多的工程师受益,帮助他们将所学知识尽快转化为生产力。
本书内容
本书分为四个部分,完整涵盖了从Go语言到微服务的各个方面。每一部分都提供了示例代码或实战项目,读者可以边学习边动手练习。
第一部分是Go语言基础(第1~7章),包括Go语言的基础语法、Go语言的基本特性和Go语言的实战项目。Go语言的基础语法部分包括变量、基本数据类型、垃圾回收机制、字符串和复合类型等。对于字符串的介绍,重点讲解了Go语言字符串的特点及存储方式。另外,第一部分还介绍了Go语言里的slice如何存储、如何操作。Go语言对slice的使用非常频繁,而struct是在Go语言没有类的情况下对封装的具体体现,struct是数据类型的核心。Go语言的基本特性部分包括Go语言的基本函数、方法、接口、反射及并发等内容。Go语言没有类,它如何实现面向对象的诸多特性呢?比如封装、多态等。函数和goroutine相结合又会出现什么情况?读者学习本部分内容后对Go语言的灵活性会有所理解。Go语言的并发通过goroutine和channel实现,语法很简单,但理论知识需要清楚理解。Go语言的实战项目部分主要介绍了Go语言自带的测试工具和一个实战项目。这个模拟项目对本部分前面的知识进行了总结和复习。
第二部分是Go语言进阶(第8~10章),主要内容是Go语言的并发编程进阶、Go语言的Web编程以及综合实战。并发编程进阶及Web编程部分分别介绍了可以承担高负载的线程池实现以及Go语言里的Web编程。Go语言的并发性能非常强,只要把goroutine用好,结合设计模式,就可以设计出优秀的高并发服务。而Go语言的Web编程就更为方便,甚至只使用标准模块就可以写出Web程序。另外,本部分还会介绍一个综合案例,不仅对第一部分及第二部分所学的知识进行总结和复习,同时还介绍了Web编程常用的gin框架。
第三部分是微服务理论(第11~18章),主要内容包括微服务模式的理论基础、微服务的进程间通信、微服务的分布式事务管理、领域驱动设计(DDD)、微服务测试、Docker及ES-CQRS策略。在微服务模式的理论基础部分,详细介绍了各种模式的演变,并且给出了具体的示例代码。进程间通信部分主要介绍了Go语言中的常用进程通信方式—protobuf、gRPC和consul,是微服务的技术入门。在微服务的分布式事务管理部分对分布式事务管理的方式进行了探讨,对不同拆分方式的优缺点进行了对比,其中重点介绍了Saga,并且给出了代码实现。领域驱动设计(DDD)部分介绍了其在Go语言中的实现,并给出了相关的概念,比如聚合、聚合的模式,此外,还展示了一个模拟实现。微服务测试部分介绍了测试的基本方法,建议结合第一部分中Go代码测试进行阅读。Docker部分重点介绍了Docker的基本原理及使用方法。Docker一般是由运维人员操作的,不过工程师也需要对Docker有一定的了解,以便于开发微服务。最后,本部分介绍了微服务中的知名策略—ES-CQRS在Go语言中的实现。
第四部分是微服务实战(第19~22章),包括微服务的生产环境、日志和监控、持续交付、实战项目。生产环境部分重点介绍了生产环境的安全,以及应用、运维和外部安全等内容,这是工程师在实战中必须了解的知识。日志和监控是微服务开发必须关注的内容,一旦微服务处于运行状态,工程师就可以通过日志和监控工具来诊断服务。持续交付,或者说DevOps,是微服务开发和部署过程中必不可少的知识领域,它是一个非常大的话题,本书站在Go语言的角度对其进行了介绍,并给出了实践案例,目的是让开发人员更好地理解持续交付。实战项目使用Go kit框架进行模拟。Go kit框架是Go语言领域非常著名的框架,所以本书选择结合此框架对前面介绍的知识进行实战应用。
本书适合的读者
本书适合有其他语言编程经验或者Go编程基础的读者阅读,如果完全没有编程基础,建议首先阅读D&K的The Go Programming Language(《Go程序设计语言》)。
本书有助于有其他语言编程基础(比如Java、Python、C++)的工程师转到Go语言的微服务实现项目中。
此外,对于对Go语言和微服务感兴趣的在读大学生来说,本书也是不错的选择,书中丰富的案例不仅能帮助学生学习知识,也能让学生提前了解工程项目的代码架构、测试工具等。
代码约定规范
为了读者阅读方便,特规定书中的代码格式如下:
book/chapter0/sample.go
1. package main
媒体评论
本书的主要内容和特色
面向所有工程师,即便是没有Go语言基础的Java、PHP、Python工程师也可以直接上手使用,书中对Go语言进行了全面精炼的介绍。“给小白的Go语言微服务实战书籍”是本书贯穿始终的写作目的,书中代码注释详细、理论解释形象。
对于微服务模式,书中并未直接给出框架,而是从理论层面入手进行了探讨,让读者“知其然,知其所以然”。
包含大量案例,对于重要的内容都给出了案例及相关分析,且每一部分都有一个案例从0开始分析、构建,指导读者从使用的角度去思考如何活学活用,并在GitHub上提供了可运行的完整代码。
本书自始至终都围绕Go语言、微服务和实战这三大特色,全书从Go语言的基础引入,到Go语言的进阶、微服务的理论,再到最后的微服务实战,都给出了技术实现和实例代码,让有编程基础的读者可以深入浅出地学习和实践。