百道网
 您现在的位置:Fun书 > Cloud Native Go:构建基于Go和React的云原生Web应用与微服务
Cloud Native Go:构建基于Go和React的云原生Web应用与微服务


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

作  者:[美]Kevin,Hoffman(凯文·霍夫曼),Dan,Nemeth(丹·内梅斯)

译  者:宋净超 等

出 版 社:电子工业出版社

出版时间:2017年08月

定  价:69.00

I S B N :9787121321092

所属分类: 专业科技  >  计算机/网络  >  程序设计    

标  签:编程语言与程序设计  计算机?网络  

[查看微博评论]

分享到:

TOP好评推荐   [展开]

TOP内容简介

  本书旨在向开发人员展示如何构建适用于大流量、高并发场景下的云原生Web应用。本书从搭建开发测试环境开始,逐步介绍使用Go语言构建微服务的方法,通过引入CI/CD流程和Wercker、Docker等工具将应用推送到云中。结合微服务构建中的后端服务、数据服务、事件溯源和CQRS模式、基于React和Flux的UI设计等,本书最后构建了一个基于Web的RPG游戏WorldofFluxCraft,可以作为使用Go构建云原生Web应用的参考,适合于云计算与Go语言编程从业者们阅读。

 

TOP作者简介

  Kevin Hoffman通过现代化和以多种不同语言构建云原生服务的方式帮助企业将其应用程序引入云端。他10岁时开始编程,从那时起便已经沉迷于构建软件,并花了很多时间学习语言、框架和模式。他已经构建了从遥控摄影无人机、仿生性安全系统、超低延迟金融应用程序到移动应用程序等一系列软件,并且在构建需要与Pivotal Cloud Foundry配合使用的自定义组件时爱上了Go语言。

  Dan Nemeth目前在Pivotal担任咨询解决方案架构师,负责支持Pivotal Cloud Foundry。他从1995年开始从事专业编码,使用ANSI C编写了用于本地ISP的CGI脚本。他职业生涯的大部分时间都是作为独立顾问为金融、制药等各个行业提供解决方案,其间不断使用当时流行的各种语言和框架。Dan最近接受了Go作为自己的“归宿”,其间不断热情地将它用于所有的项目。

 

  译者简介

  宋净超,TalkingData技术运营团队工程师。拥有多年的Hadoop大数据平台运维管理经验,熟悉Hadoop技术、Docker生态系统以及PaaS平台,主导了 TalkingData的Yarn on Docker项目改造和微服务落地,关注开源软件及Docker、Kubernetes的前沿发展,关注Kubernetes和TensorFlow的实践。多次在全球架构师峰会、QCon 、CNUTCon、云栖大会等技术会议上作为讲师进行技术分享,博客地址:http://rootsongjc.github.io/。

 

TOP目录

1  云之道 1

云之道的优点 2

为什么使用Go 8

本章小结 9

2  开始 11

正确的工具 11

配置Git 12

创建Go环境 14

-- 配置Go工作区 14

检查环境 15

本章小结 16

3  Go入门 17

建立Hello cloud 18

使用基本函数 19

使用结构体 22

介绍Go接口 25

向结构体添加方法 25

使用第三方包 28

创建自有包 30

本章小结 34

4  持续交付 35

Docker介绍 36

与Wercker的持续集成 39

读者练习:创建完整的开发管道 51

本章小结 53

5  在Go中构建微服务 55

设计API First的服务 55

架设微服务 59

构建Test First的服务 62

在云端部署和运行 70

本章小结 72

6  运用后端服务 75

设计服务系统 75

测试优先构建依赖服务 77

在服务之间共享结构化数据 87

使用服务捆绑来外部化地址与元数据 90

服务发现 93

读者练习 97

本章小结 98

7  构建数据服务 99

构建MongoDB存储库 100

集成测试一个Mongo-Backed服务 107

在云中运行 115

本章小结 117

8  事件溯源和CQRS 119

现实源自事件 120

拥抱最终一致性 123

CQRS简介 124

事件溯源案例 126

代码示例:管理无人机舰队 128

构建命令处理程序服务 129

构建事件处理器 135

构建查询处理程序服务 140

本章小结 141

9  使用Go构建Web应用程序 143

处理静态文件和asset 143

支持JavaScript客户端 145

使用服务端模板 148

处理表单 150

使用cookie和会话状态 151

使用Wercker构建和部署 153

本章小结 155

10  云安全 157

保护Web应用程序 157

保护微服务 166

隐私和数据安全 170

读者练习 172

本章小结 173

11  使用WebSockets 175

WebSockets解析 175

WebSockets的云原生适应性 178

使用消息服务创建WebSockets应用 180

本章小结 184

12  使用React构建Web视图 185

JavaScript的形势\u2028 186

为什么选择React 186

React应用程序剖析 189

构建简单的React应用程序 192

测试React应用程序 200

进一步阅读 200

本章小结\u2028 201

13  使用Flux构建可扩展的UI 203

Flux介绍 203

创建Flux应用程序 206

本章小结 215

14  创建完整应用World of FluxCraft 217

World of FluxCraft介绍 218

架构概览 219

Flux GUI 222

命令处理 225

事件处理 226

维持现实服务的状态 227

地图管理 227

自动验收测试 228

本章小结 230

15  结论 231

我们学到了什么 231

下一步 233

附录A  云应用的故障排查 235

 

TOP书摘

  推荐序1

  作为一个在IT行业摸爬滚打20余年的老程序员,我一直认为程序员的工作不仅仅是进行代码编写。很多情况下,程序员的工作和作家类似,都是在进行创作。很多非常出色的程序员同时也是出色的作家,比如程序员王小波除了是一个C语言和汇编语言高手,同时还创作了《时代三部曲》,进而成为知名的作家。当然,大部分程序员没有王小波那份驾驭文字的功力,没办法跨界写小说。不过,总结日常的一些技术点滴使其成为文章或者翻译国外的博客、技术书籍,这些对于大部分程序员来讲还是不难做到的,因此这也成为我们团队所有程序员的OKR。

  最近几个月的周六,我经常看到宋净超同学静坐在自己的工位上,或若有所思,或埋头打字,屏幕上闪烁的不是编程的IDE,倒像是码字的word文档。经过几个月的辛苦努力,终于,由宋净超、吴迎松、徐蓓、马超几位技术运营团队的同学翻译的这本《CloudNativeGo:构建基于Go和React的云原生Web应用与微服务》摆在了我的面前。

  CloudNative的概念来自Pivotal的MattStine,是面向现代DevOps、微服务、持续集成等技术的一种思想,其本身并不是某一种具体的技术。顾名思义,这本书就是将这种思想利用Go语言进行实践和落地。结合我们技术运营团队过去两年的工作,我深刻地理解他们为什么要翻译这本书,因为这本书中的很多思想正是我们技术运营团队在过去两年中一直践行的。对于在实践的路上苦苦前行的程序员来讲,看到一本与自己的技术理念非常一致的书,内心的激动可想而知,我相信这也是他们要加班加点将这本书翻译出来并介绍给国内广大同行的重要原因。

  从一个经常阅读技术书籍的读者角度来看,本书是一本很贴近实战的技术书籍。对于没有Go语言开发经验的读者来讲,这本书介绍了Go语言的基础知识,并且指导读者去实践,从而为掌握书中的其他内容打下基础。不过,这毕竟不是一本Go语言专著,如果想了解更多Go语言的特性和高级用法,还需要查阅专门讲解Go语言的书籍或访问Go语言技术社区。既然这本书是面向CloudNative的,那么关于CloudNative的概念无疑才是本书的核心内容。在这本书中,大家除了可以了解到持续交付、测试优先、微服务、服务治理、数据服务、CQRS、云安全等概念,同时还可以通过书中的示例一步步地实践,最终完成一个真实的WorldofFluxCraft项目。一本优秀的技术书籍应该能够在理念上给人以启迪,让人产生思考和共鸣,同时又能够真正落到实地,让技术人员可以亲自去探索和验证,而这本书无疑是优秀书籍的代表。

  工作多年,我阅读过很多由国内技术人员翻译的计算机方面的书籍,体验不尽相同。很多技术书籍的翻译水准欠佳,且不说能否达到信、达、雅的境界,能够满足没有常识性错误和语句通顺这两个基本要求就已经很难得了,因此,有的时候我宁愿去读英文原版。刚刚拿到这本书的翻译稿时,老实讲,我十分担心翻译质量,在这个AI逐渐取代人类工作的时代,如果翻译质量不高,不如使用谷歌翻译更为合适。然而通篇读下来,整本书的翻译质量出乎我的意料!虽然是翻译稿,但是整本书的语言风格非常本土化,并且能看出译者的文字功底非常深厚。无数个周末的无休,只是为了能够给大家带来一部高质量的技术书籍,也不枉原作者辛苦创作,我觉得技术运营团队的同学们的这种态度非常难得!

  由于负责TalkingData的主要线上业务和数据业务的技术研发工作,因此我每天都会面临着如何能够使线上系统在并发压力和数据规模持续增加的情况下还能保证稳定和快速迭代的挑战。为了应对这些挑战,我们在几年前就开始尝试将DevOps的理念引入团队中,开发并开源监控报警系统OWL,这让我们能够全天候、多通道地支持系统报警。同时我们也将微服务化、灰度上线、端到端自动测试等应用于日常工作中。

  这本书中的很多理念给了我深刻启发,也让我坚信我们正走在一条正确的路上。相信国内和我们面临同样挑战的团队还有很多,这本书无疑可以给面临类似问题的团队带来很大的帮助。同时,我也衷心希望我们的技术团队未来能够将自己的经验和教训积累下来,出版我们自己的原创技术书籍。

  阎志涛

  TalkingData副总裁

  2016年6月

  推荐序2

  很多年以前,我便听说过Go语言的大名,因为它的创始人中有大名鼎鼎的KenThompson以及RobPike。年轻一代的程序员或许不了解这两位“爷爷”辈的程序员,但在我学习计算机的年代,这两位大师非常受人崇敬,他们参与开发的Unix、Plan9、UTF-8等也都是可以载入史册的伟大产品。尤其是Thompson,他早在1983年就因对Unix以及C语言做出卓越贡献而获得了图灵奖。不过当我第一次听到Go这个新的程序语言时,多少还是有些怀疑,Go究竟能不能被程序员所接受呢?毕竟现在的开发者可以选择的语言工具已经极其丰富,无论在哪一种场景下,都已经存在太多的选择。

  几年过去了,随着Docker的大热,我才突然意识到其背后的开发语言竟然就是这个新生不久的Go。随之而来的是,越来越多的企业和产品开发项目开始采用Go。这个名单很长,其中包括Kubernetes、OpenShift、CoreOS、MongoDB、Twitch以及Uber等。尤其让我感到惊讶的是,以全面采用Python语言著称的Dropbox居然也将核心的组件从Python迁移到了Go上面,原因在于程序语言的性能不同。受到这个事件的影响,我开始将Go语言加入到我的学习清单里面。

  众所周知,云计算已经成为了这个时代中IT技术发展最重要的方向,同时因为我所任职的企业AWS在云计算领域拥有巨大的影响力,于是我就会特别留心一切与云计算开发相关的话题。自从2015年AWS发布了针对Go语言的SDK,越来越多的开发者开始了Go语言的云计算开发之旅。我相信许多开发者在学习的过程中需要的不仅仅是一门讲解程序语言语法的教程,他们更希望的是拥有一本针对云计算的Go实践开发手册。《CloudNativeGo:构建基于Go和React的云原生Web应用与微服务》应该就是这样的一本书,书中的一切内容都围绕着云计算的实践来展开,当中每一段代码示例都可以被应用到实践中。

  写一本书是很辛苦的,而高质量的翻译无疑是使这样一本书能够被广泛接受的关键所在。感谢作者和译者们为此而付出的辛苦努力,也希望所有开发者能够在云计算的时代因此而受益。

  古人云:理无专在,而学无止境也。是以为记。

  费良宏

  AWS首席布道师

  2017年6月

  译者序

  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语言和云原生技术的好书。

  CloudNativeGo是一本很好的云原生应用实践手册,全书基于微服务理念编写,书中有丰富的示例和代码,这些代码托管在GitHub上,读者可以很轻松地获取到。另外,书中还介绍了很多不错的工具的最佳实践,这些工具都是免费的,不需要绑定信用卡,大家可以放心使用。而且,原作者风趣幽默的行文非常有吸引力,不会让大家阅读时感到乏味。

  这本书涉及的内容非常广泛,读完本书,读者会对云原生应用的构建规则、微服务划分、测试驱动开发、CQRS和事件溯源、持续发布流程、安全、故障排查等整个软件开发生命周期中的重要环节有一个较好的了解,也会对前端开发、前端框架、UI设计有一定的认识,从而在实际的程序开发过程中更加得心应手。

  当然,这本书不是一本专门讲解Go语言的书籍,它适用于有一定Go语言基础的读者。阅读关于创建Web应用的部分时,还需要读者对Web应用开发流程有所了解,这对于长期从事后端开发的读者来说可能会比较困难。

  除我以外,还有三位TalkingData的同事徐蓓、马超、吴迎松参与了本书的翻译。其中,徐蓓翻译了1~5章,马超翻译了6~8章,吴迎松翻译了9~12章,其余的章节由我翻译,同时我也承担了全书译文的审校工作。

  本书能够顺利出版并及时与读者见面,要感谢很多人的帮助。感谢公司的大力支持;感谢电子工业出版社的编辑孙奇俏对本书的大力协助和专业指导;感谢在本书的翻译过程中所有通过朋友圈和https://rootsongjc.github.io/cloud-native-go/网站关注和支持我们的朋友们;最后再次感谢所有译者。希望每一位读者都能从本书中获得想要的知识,希望你们喜欢这本书,衷心感谢大家!

  宋净超

  2017年6月

  ……

 

TOP 其它信息

开  本:16开

加载页面用时:166.4837