![]()
作者简介 凯文·霍夫曼,通过现代化和以多种不同语言构建云原生服务的方式帮助企业将其应用程序引入云端。他10岁时开始编程,从那时起便已经沉迷于构建软件,并花了很多时间学习语言、框架和模式。他已经构建了从遥控摄影无人机、仿生性安全系统、超低延迟金融应用程序到移动应用程序等一系列软件,并且在构建需要与Pivotal Cloud Foundry配合使用的自定义组件时爱上了Go语言。 丹·内梅斯,目前在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、云栖大会等技术会议上作为讲师进行技术分享。 目录 1云之道1 云之道的优点2 遵循简单2 测试优先,测试一切3 尽早发布,频繁发布5 自动化一切6 建立服务生态系统7 为什么使用Go8 简单8 开源8 易于自动化和IDE自由化8 本章小结9 2开始11 正确的工具11 配置Git12 安装Homebrew12 安装Git客户端13 安装Mercurial和Bazaar13 创建GitHub账户14 创建Go环境14 配置Go工作区14 检查环境15 本章小结16 3Go入门17 建立Hellocloud18 使用基本函数19 使用结构体22 介绍Go接口25 向结构体添加方法25 Go中的接口动态类型检查26 使用第三方包28 创建自有包30 导出函数和数据31 创建包31 本章小结34 4持续交付35 Docker介绍36 为什么要使用Docker36 安装Docker36 运行Docker镜像38 与Wercker的持续集成39 持续集成的最佳实践39 为什么使用Wercker40 创建Wercker应用程序41 安装WerckerCLI42 创建Wercker配置文件43 使用Wercker进行构建48 部署到DockerHub50 读者练习:创建完整的开发管道51 不错挑战:集成第三方库53 本章小结53 5在Go中构建微服务55 设计APIFirst的服务55 设计matchAPI56 创建APIBlueprint56 通过Apiary测试和发布文档58 架设微服务59 构建TestFirst的服务62 创建个失败测试63 测试LocationHeader66 壮丽的蒙太奇:迭代测试67 在云端部署和运行70 创建PWS账户70 配置PCF开发环境70 提交到CloudFoundry71 本章小结72 6运用后端服务75 设计服务系统75 测试优先构建依赖服务77 构建fulfillment服务78 构建catalog服务81 在服务之间共享结构化数据87 客户端引用服务端包88 客户端复制服务端结构88 客户端与服务端引用共享包89 使用服务捆绑来外部化地址与元数据90 服务发现93 动态服务发现94 Netflix的服务发现系统Eureka94 读者练习97 进阶操作97 本章小结98 7构建数据服务99 构建MongoDB存储库100 为什么选择MongoDB100 更新存储库模型100 通过Go来操作MongoDB101 以Test-First方式编写MongoDB存储库102 集成测试一个Mongo-Backed服务107 集成临时MongoDB数据库108 编写一个集成测试110 在云中运行115 后端服务的配置115 本章小结117 8事件溯源和CQRS119 现实源自事件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 处理静态文件和asset143 支持JavaScript客户端145 使用服务端模板148 处理表单150 使用cookie和会话状态151 写入cookie152 读取cookie153 使用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使用WebSockets175 WebSockets解析175 WebSockets如何工作176 WebSockets与服务器发送事件对比177 设计WebSockets服务器?177 WebSockets的云原生适应性178 使用消息服务创建WebSockets应用180 关于JavaScript框架183 运行WebSockets示例183 本章小结184 12使用React构建Web视图185 JavaScript的形势?186 为什么选择React186 虚拟DOM187 组件组合187 响应式数据流188 集中焦点188 使用的便利性189 React应用程序剖析189 package.json文件189 Webpack.config.js文件191 .babelrc文件191 理解JSX和Webpack191 React组件192 构建简单的React应用程序192 不赞成的做法199 测试React应用程序200 进一步阅读200 React网站200 React书籍201 其他资料?201 本章小结?201 13使用Flux构建可扩展的UI203 Flux介绍203 dispatcher204 store204 view205 action205 source205 Flux的复杂性205 创建Flux应用程序206 本章小结215 14创建完整应用WorldofFluxCraft217 WorldofFluxCraft介绍218 架构概览219 独立扩展、版本控制和部署221 数据库不是集成层221 单向不可变数据流221 FluxGUI222 GoUI宿主服务223 玩家移动时序图224 命令处理225 事件处理226 维持现实服务的状态227 地图管理227 自动验收测试228 本章小结230 15结论231 我们学到了什么231 Go不是小众语言231 微服务应该有多“微”232 持续交付和部署232 测试一切232 尽早发布,频繁发布232 事件溯源、CQRS和更多首字母缩略词233 下一步233 附录A云应用的故障排查235 内容推荐 Cloud Native Go旨在向Go语言开发人员展示如何构建大规模云基础应用。本书从基础的Go入门,带领大家构建了一个完整的应用:World of FluxCraft。本书由浅入深,通过具体案例对组件的使用方法进行了清晰的说明。从基础的程序开发到服务和架构设计,本书以连贯的场景和细致的 |