《云原生:运用容器 函数计算和数据构建下一代应用》PDF电子书免费下载

作者:  [美]鲍里斯·肖勒(Boris Scholl) 特伦特·斯旺森(Trent Swa

出版社: 机械工业出版社

出版年: 2020年05月

ISBN: 9787111653240

~~滚到底部有网盘下载链接~~

内容简介

目录

前言1
第1章 云原生简介5
1.1 分布式系统5
1.1.1 分布式系统的误区5
1.1.2 CAP定理8
1.2 十二要素应用8
1.3 可用性和服务等级协议11
1.4 本章小结12
第2章 云原生基础13
2.1 容器13
2.1.1 容器隔离等级15
2.1.2 容器编排16
2.1.3 Kubernetes概述17
2.1.4 Kubernetes和容器20
2.2 无服务器架构21
2.3 函数计算22
2.4 从虚拟机到云原生23
2.4.1 提升和转变23
2.4.2 应用的现代化改造24
2.4.3 应用的优化26
2.5 微服务26
2.5.1 微服务架构的优势27
2.5.2 微服务架构带来的挑战29
2.6 本章小结31
第3章 云原生应用的设计33
3.1 云原生应用的基础33
3.1.1 精益运营33
3.1.2 安全性35
3.1.3 可靠性与可用性36
3.1.4 可扩展性与成本37
3.2 云原生与传统架构的对比37
3.3 函数计算与服务41
3.3.1 函数计算的使用场景42
3.3.2 使用函数计算的考虑因素42
3.3.3 函数与服务的组合运用43
3.4 API设计与版本控制45
3.4.1 API的前后兼容46
3.4.2 语义版本号47
3.5 服务间的通信48
3.5.1 通信协议48
3.5.2 消息协议50
3.5.3 序列化的考虑因素50
3.5.4 幂等性51
3.5.5 请求与响应52
3.5.6 发布者与订阅者53
3.5.7 发布者/订阅者模式与请求/响应模式间的选择55
3.5.8 同步与异步56
3.6 网关56
3.6.1 路由57
3.6.2 聚合58
3.6.3 卸载59
3.6.4 网关的实现60
3.7 出口网关60
3.8 服务网格60
3.9 架构示例69
3.10 本章小结73
第4章 数据处理75
4.1 数据存储系统76
4.1.1 对象、文件和磁盘77
4.1.2 数据库78
4.1.3 流和队列80
4.1.4 区块链81
4.1.5 数据存储的选择81
4.2 多数据存储下的数据84
4.2.1 捕获数据更改85
4.2.2 将更改作为事件写入更改日志87
4.2.3 事务监管88
4.2.4 事务回滚90
4.2.5 提取、转换和加载90
4.2.6 微服务和数据湖91
4.3 客户端访问数据94
4.3.1 受限的客户令牌(代客密钥)94
4.3.2 细粒度访问控制的数据库服务95
4.3.3 GraphQL数据服务96
4.4 可快速伸缩的数据97
4.4.1 数据分片98
4.4.2 数据缓存98
4.4.3 内容分发网络99
4.5 数据分析101
4.5.1 数据流101
4.5.2 批处理101
4.5.3 对象存储上的数据湖102
4.5.4 数据湖和数据仓库102
4.5.5 分布式查询引擎103
4.6 Kubernetes中的数据库104
4.6.1 存储卷104
4.6.2 StatefulSet106
4.6.3 DaemonSet107
4.7 本章小结107
第5章 DevOps109
5.1 什么是DevOps109
5.1.1 协作109
5.1.2 自动化110
5.1.3 精益原则和流程110
5.1.4 度量111
5.1.5 分享111
5.2 测试112
5.2.1 测试替身113
5.2.2 自动化测试金字塔113
5.2.3 不同测试类型的适用时机118
5.2.4 测试节奏119
5.2.5 在生产环境中测试120
5.3 开发环境和工具122
5.3.1 开发工具123
5.3.2 开发环境126
5.3.3 本地开发环境126
5.3.4 本地开发环境结合远端集群127
5.3.5 Skaffold开发工作流127
5.3.6 将远端集群路由到本地开发环境129
5.3.7 云端开发环境129
5.4 持续集成/持续交付130
5.4.1 源代码管理131
5.4.2 构建阶段132
5.4.3 测试阶段132
5.4.4 部署阶段134
5.4.5 发布阶段136
5.4.6 发布后阶段137
5.5 监控137
5.5.1 收集指标139
5.5.2 服务的可观测性145
5.6 配置管理149
5.6.1 单一环境变量151
5.6.2 多环境变量151
5.6.3 将配置数据放入存储卷中152
5.6.4 密钥保存152
5.6.5 部署配置154
5.7 持续集成/持续交付流程示例156
5.8 本章小结159
第6章 实践161
6.1 迈向云原生161
6.1.1 找个合理的理由打破巨石应用161
6.1.2 先解耦简单的服务162
6.1.3 学会小规模的运维162
6.1.4 使用防损层模式162
6.1.5 使用刀砍模式162
6.1.6 准备一个数据迁移策略164
6.1.7 重写所有模板代码164
6.1.8 重新考虑框架、语言、数据结构和数据存储164
6.1.9 淘汰老代码164
6.2 确保弹性164
6.2.1 用重试来解决瞬时故障165
6.2.2 使用有限次的重试165
6.2.3 用断路器来处理非瞬时故障166
6.2.4 优雅地降级166
6.2.5 使用隔离模式166
6.2.6 实现健康及就绪检查166
6.2.7 为容器设定CPU和内存限制166
6.2.8 实现限速和限流167
6.3 确保安全性167
6.3.1 安全性需求同其他需求一样重要167
6.3.2 在设计时就考虑安全性167
6.3.3 授予小访问权限167
6.3.4 使用独立的账号、订阅和租客167
6.3.5 安全地存储所有密钥168
6.3.6 模糊化数据168
6.3.7 传输数据加密168
6.3.8 使用联合身份管理168
6.3.9 使用基于角色的访问控制168
6.3.10 Kubernetes pod的隔离169
6.4 处理数据169
6.4.1 使用托管数据库和数据分析服务169
6.4.2 使用符合数据需求的存储169
6.4.3 将数据保存在多个地域或可用区中170
6.4.4 使用数据分区和复制以提高扩展性170
6.4.5 避免过度获取及频繁的I/O操作170
6.4.6 不要把业务逻辑放在数据库中执行170
6.4.7 使用类生产环境数据来测试170
6.4.8 处理瞬时故障171
6.5 性能和伸缩性171
6.5.1 设计可扩展的无状态服务171
6.5.2 使用平台的自动伸缩功能171
6.5.3 使用缓存172
6.5.4 用分区来实现超出服务限制的扩容1
显示部分信息

下载价格:免费
立即下载
登入/注册
知识就是力量
没有账号? 忘记密码?