Cloud Native Go:构建基于Go和React的云原生Web应用与微服务
  • 推荐0
  • 收藏1
  • 浏览2.1K

Cloud Native Go:构建基于Go和React的云原生Web应用与微服务

Kevin Hoffman (作者)  宋净超 (译者)

  • 书  号:978-7-121-32109-2
  • 出版日期:2017-07-14
  • 页  数:262
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 原书名: Cloud Native Go: Building Web Applications and Microservices for the Cloud with Go and React
  • 原书号:9780672337796
  • 维护人:张春雨
纸质版 ¥69.00
本书旨在向开发人员展示如何构建适用于大流量、高并发场景下的云原生Web应用。本书从搭建开发测试环境开始,逐步介绍使用Go语言构建微服务的方法,通过引入CI/CD流程和Wercker、Docker等工具将应用推送到云中。结合微服务构建中的后端服务、数据服务、事件溯源和CQRS模式、基于React和Flux的UI设计等,本书最后构建了一个基于Web的RPG游戏World of FluxCraft,可以作为使用Go构建云原生Web应用的参考,适合于云计算与Go语言编程从业者们阅读。
云原生持续领航云计算时代:
敏捷、可靠、高弹性、故障隔离,轻松应对强需求架构场景,动态扩展大规模用户流量。完美给出传统应用升级缓慢、架构臃肿、迭代迟缓等问题的终极解决方案!
译者序
Go语言起源于Google,集中进入大家视线是由于一款革命性的产品——Docker的发布。从Go开始流行,直到其位列TIOBE榜单的前20名,我们都一直关注着这门语言的发展。近两年来,一批批优秀的基于Go语言的开源软件涌现出来,例如etcd、Kubernetes、Prometheus等,这些开源软件被广泛应用于我们的生产环境中。
因为Go语言非常简洁且功能强大,加之其能够充分利用系统的多个核心组件,实现高性能的网络服务,因此我们于2014年将Go语言引入了我们的公司TalkingData,并使用它构建了自己的开源监控系统——OWL(https://github.com/ TalkingData/owl),也基于它实现了对Hadoop集群虚拟化的探索magpie(https://github.com/rootosngjc/ magpie)。
刚开始接触到本书时,我们看到书中提到的那些熟悉的技术和理念后感到非常兴奋,通过这本书,我们可以有机会用一种体系化、结构化的方式与大家交流书中的知识和技术。因此我们决定翻译这本书,并且牺牲了许多工作之余的时间来研究书中的内容和细节,除了出于对技术分享始终保有热情,更是因为想要让各位读者早日看到这本关于Go语言和云原生技术的好书。
Cloud Native Go是一本很好的云原生应用实践手册,全书基于微服务理念编写,书中有丰富的示例和代码,这些代码托管在GitHub上,读者可以很轻松地获取到。另外,书中还介绍了很多不错的工具的最佳实践,这些工具都是免费的,不需要绑定信用卡,大家可以放心使用。而且,原作者风趣幽默的行文非常有吸引力,不会让大家阅读时感到乏味。
这本书涉及的内容非常广泛,读完本书,读者会对云原生应用的构建规则、微服务划分、测试驱动开发、CQRS和事件溯源、持续发布流程、安全、故障排查等整个软件开发生命周期中的重要环节有一个较好的了解,也会对前端开发、前端框架、UI设计有一定的认识,从而在实际的程序开发过程中更加得心应手。
当然,这本书不是一本专门讲解Go语言的书籍,它适用于有一定Go语言基础的读者。阅读关于创建Web应用的部分时,还需要读者对Web应用开发流程有所了解,这对于长期从事后端开发的读者来说可能会比较困难。
除我以外,还有三位TalkingData的同事徐蓓、马超、吴迎松参与了本书的翻译。其中,徐蓓翻译了1~5章,马超翻译了6~8章,吴迎松翻译了9~12章,其余的章节由我翻译,同时我也承担了全书译文的审校工作。
本书能够顺利出版并及时与读者见面,要感谢很多人的帮助。感谢公司的大力支持;感谢电子工业出版社的编辑孙奇俏对本书的大力协助和专业指导;感谢在本书的翻译过程中所有通过朋友圈和https://rootsongjc.github.io/cloud-native-go/网站关注和支持我们的朋友们;最后再次感谢所有译者。希望每一位读者都能从本书中获得想要的知识,希望你们喜欢这本书,衷心感谢大家!

前言
当Dan和我开始写这本书时,我们不希望它成为一本参考书或“一本语法书”。相反,我们希望能够充分利用自己为Pivotal客户构建云原生解决方案的经验,以及近一生的综合经验来为各种规模、形态和行业的公司构建软件。
这本书从一个哲学章节“云之道”开始,因为我们坚信构建良好软件的秘诀在于开发人员的心态和纪律,而不是工具或语言。
在本书中,我们将按照测试驱动和高度自动化的方式逐步实现云之道,通过一系列章节提高大家在Go中构建云原生服务的能力。本书涵盖构建服务的基本原理,中间件技术,Git、Docker和Wercker等工具的使用,还包括云基础设施的相关内容,如基于环境的配置、服务发现以及基于响应和推送式的应用程序。本书涵盖了事件溯源和CQRS等模式,书中的所有内容组合成最终的示例,相信可以为大家的项目构建提供灵感。
我们始终秉承着一个坚定的信念——构建软件应该像使用它一样有趣(或更有趣)。如果没有乐趣,那么一定是你做错了。我们希望在使用Go构建服务时获得的快乐可以感染读者,希望你在阅读本书时能像我们在写作它时一样,获得更多的乐趣。

目录

1 云之道 1
云之道的优点 2
遵循简单 2
测试优先,测试一切 3
尽早发布,频繁发布 5
自动化一切 6
建立服务生态系统 7
为什么使用Go 8
简单 8
开源 8
易于自动化和IDE自由化 8
本章小结 9
2 开始 11
正确的工具 11
配置Git 12
安装Homebrew 12
安装Git客户端 13
安装Mercurial和Bazaar 13
创建GitHub账户 14
创建Go环境 14
配置Go工作区 14
检查环境 15
本章小结 16
3 Go入门 17
建立Hello cloud 18
使用基本函数 19
使用结构体 22
介绍Go接口 25
向结构体添加方法 25
Go中的接口动态类型检查 26
使用第三方包 28
创建自有包 30
导出函数和数据 31
创建包 31
本章小结 34
4 持续交付 35
Docker介绍 36
为什么要使用Docker 36
安装Docker 36
运行Docker镜像 38
与Wercker的持续集成 39
持续集成的最佳实践 39
为什么使用Wercker 40
创建Wercker应用程序 41
安装Wercker CLI 42
创建Wercker配置文件 43
使用Wercker进行构建 48
部署到Docker Hub 50
读者练习:创建完整的开发管道 51
高级挑战:集成第三方库 53
本章小结 53
5 在Go中构建微服务 55
设计API First的服务 55
设计match API 56
创建API Blueprint 56
通过Apiary测试和发布文档 58
架设微服务 59
构建Test First的服务 62
创建第一个失败测试 63
测试Location Header 66
壮丽的蒙太奇:迭代测试 67
在云端部署和运行 70
创建PWS账户 70
配置PCF开发环境 70
提交到Cloud Foundry 71
本章小结 72
6 运用后端服务 75
设计服务系统 75
测试优先构建依赖服务 77
构建fulfillment服务 78
构建catalog服务 81
在服务之间共享结构化数据 87
客户端引用服务端包 88
客户端复制服务端结构 88
客户端与服务端引用共享包 89
使用服务捆绑来外部化地址与元数据 90
服务发现 93
动态服务发现 94
Netflix的服务发现系统Eureka 94
读者练习 97
进阶操作 97
本章小结 98
7 构建数据服务 99
构建MongoDB存储库 100
为什么选择MongoDB 100
更新存储库模型 100
通过Go来操作MongoDB 101
以Test-First方式编写MongoDB存储库 102
集成测试一个Mongo-Backed服务 107
集成临时MongoDB数据库 108
编写一个集成测试 110
在云中运行 115
后端服务的配置 115
本章小结 117
8 事件溯源和CQRS 119
现实源自事件 120
幂等 121
隔离 121
可测试 122
可再现,可恢复 123
大数据 123
拥抱最终一致性 123
CQRS简介 124
事件溯源案例 126
天气监测 126
互联网汽车 127
社交媒体消息处理 127
代码示例:管理无人机舰队 128
构建命令处理程序服务 129
RabbitMQ介绍 129
构建命令处理器服务 133
构建事件处理器 135
对事件处理器进行集成测试 140
构建查询处理程序服务 140
本章小结 141
9 使用Go构建Web应用程序 143
处理静态文件和asset 143
支持JavaScript客户端 145
使用服务端模板 148
处理表单 150
使用cookie和会话状态 151
写入cookie 152
读取cookie 153
使用Wercker构建和部署 153
本章小结 155
10 云安全 157
保护Web应用程序 157
应用程序安全性选项 158
设置Auth0账户 159
构建一个OAuth安全的Web应用程序 160
运行安全的Web应用程序 164
保护微服务 166
客户端凭据模式概述 166
使用客户端凭据保护微服务 168
关于SSL的注意事项 169
隐私和数据安全 170
黑客不能得到你没有的 170
读者练习 172
本章小结 173
11 使用WebSockets 175
WebSockets解析 175
WebSockets如何工作 176
WebSockets与服务器发送事件对比 177
设计WebSockets服务器? 177
WebSockets的云原生适应性 178
使用消息服务创建WebSockets应用 180
关于JavaScript框架 183
运行WebSockets示例 183
本章小结 184
12 使用React构建Web视图 185
JavaScript的形势? 186
为什么选择React 186
虚拟DOM 187
组件组合 187
响应式数据流 188
集中焦点 188
使用的便利性 189
React应用程序剖析 189
package.json文件 189
Webpack.config.js文件 191
.babelrc文件 191
理解JSX和Webpack 191
React组件 192
构建简单的React应用程序 192
不赞成的做法 199
测试React应用程序 200
进一步阅读 200
React网站 200
React书籍 201
其他资料? 201
本章小结? 201
13 使用Flux构建可扩展的UI 203
Flux介绍 203
dispatcher 204
store 204
view 205
action 205
source 205
Flux的复杂性 205
创建Flux应用程序 206
本章小结 215
14 创建完整应用World of FluxCraft 217
World of FluxCraft介绍 218
架构概览 219
独立扩展、版本控制和部署 221
数据库不是集成层 221
单向不可变数据流 221
Flux GUI 222
Go UI宿主服务 223
玩家移动时序图 224
命令处理 225
事件处理 226
维持现实服务的状态 227
地图管理 227
自动验收测试 228
本章小结 230
15 结论 231
我们学到了什么 231
Go不是小众语言 231
微服务应该有多“微” 232
持续交付和部署 232
测试一切 232
尽早发布,频繁发布 232
事件溯源、CQRS和更多首字母缩略词 233
下一步 233
附录A 云应用的故障排查 235

本书勘误

印次
  • 页码:30  •  行数:6  •  印次: 2

    第6行代最后的}
    改为
    ,

    jackm 提交于 2018/6/11 13:23:03
    张春雨 确认于 2018/8/21 16:11:22

读者评论

  • 对于本书每个章节的完整范例源代码,书的最后一页是提示到informit.com/register网站上去下载,但是登录这个国外网站时访问非常慢,最后进入后也没有看到有该书每个章节对应的完整源代码下载。麻烦博文提供下本书各章节对应的完整的范例代码下载,我的邮箱是 heyitang@qq.com, 麻烦看到信息后及时回复邮件发给我下,麻烦提供本书各章节对应的完整源代码,以方便读者更好的学习和理解,谢谢!

    heyitang发表于 2020/5/31 23:33:48
  • 好书!

    marcus发表于 2017/8/12 9:47:51
    • 感谢评论

      孙奇俏发表于 2018/6/11 14:11:13

相关博文

  • 云原生:云计算时代命题之终极解决方案

    云原生:云计算时代命题之终极解决方案

    管理员账号 2017-08-17

    Cloud Native?云原生?很多人一看到这个词就懵了,到底什么是云原生? 云原生这个词其实由来已久,IT行业永远也不缺乏新概念。2015 年,Pivotal公司的Matt Stine提出Cloud Native这一概念,并结...

    管理员账号 2017-08-17
    1053 0 0 0