图书介绍
持续演进的Cloud Native 云原生架构下微服务最佳实践PDF|Epub|txt|kindle电子书版本网盘下载
![持续演进的Cloud Native 云原生架构下微服务最佳实践](https://www.shukui.net/cover/16/31397019.jpg)
- 王启军著 著
- 出版社: 北京:电子工业出版社
- ISBN:9787121351204
- 出版时间:2018
- 标注页数:295页
- 文件大小:103MB
- 文件页数:313页
- 主题词:程序语言-程序设计
PDF下载
下载说明
持续演进的Cloud Native 云原生架构下微服务最佳实践PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 综述1
1.1 Cloud Native的起源1
1.2 Cloud Native的组成4
1.3 Cloud Native背后的诉求5
1.4 如何衡量Cloud Native的能力5
1.5 Cloud Native的原则6
第2章 微服务架构11
2.1 微服务架构的起源11
2.2 为什么采用微服务架构12
2.2.1 单体架构与微服务架构12
2.2.2 什么时候开始微服务架构14
2.2.3 如何决定微服务架构的拆分粒度14
2.3 微服务设计原则15
2.4 微服务架构实施的先决条件17
2.4.1 研发环境和流程上的转变17
2.4.2 拆分前先做好解耦18
2.5 微服务划分模式20
2.5.1 基于业务复杂度选择服务划分方法20
2.5.2 基于数据驱动划分服务21
2.5.3 基于领域驱动划分服务22
2.5.4 从已有单体架构中逐步划分服务23
2.5.5 微服务拆分策略24
2.5.6 如何衡量服务划分的合理性25
2.6 微服务划分反模式26
2.7 微服务API设计28
2.7.1 优秀API的设计原则28
2.7.2 服务间通信——RPC28
2.7.3 序列化——Protobuf30
2.7.4 服务间通信——RESTful33
2.7.5 通过Swagger实现RESTful36
2.7.6 通过SpringBoot、Springfox、Swagger实现RESTful41
2.7.7 HTTP协议的进化——HTTP/246
2.7.8 HTTP/2和Protobuf的组合——gRPC48
2.8 微服务框架53
2.9 基于Dubbo框架实现微服务54
2.10 基于Spring Cloud框架实现微服务58
2.11 服务发现场景下的ZooKeeper与Etcd67
2.12 微服务部署策略68
2.12.1 服务独享数据库69
2.12.2 服务独享虚拟机/容器70
2.13 为什么总觉得微服务架构很别扭70
第3章 敏捷基础设施及公共基础服务73
3.1 传统基础设施面临的挑战73
3.2 什么是敏捷基础设施74
3.3 基于容器的敏捷基础设施75
3.3.1 容器VS虚拟机76
3.3.2 安装Docker77
3.3.3 部署私有DockerRegistry79
3.3.4 基于Spring BootMaven、Docker构建微服务79
3.3.5 基于docker-compose管理容器84
3.4 基于公共基础服务的平台化85
3.5 监控告警服务86
3.5.1 监控数据采集87
3.5.2 监控数据接收模式87
3.5.3 通过时间序列数据库存储监控数据88
3.5.4 开源监控系统实现Prometheus88
3.5.5 通过Prometheus和Grafana监控服务90
3.6 分布式消息中间件服务96
3.6.1 分布式消息中间件的作用97
3.6.2 业界常用的分布式消息中间件98
3.6.3 Kafka的设计原理99
3.6.4 为什么Kafka性能高100
3.6.5 Kafka的数据存储结构102
3.6.6 如何保证 Kafka不丢消息104
3.6.7 Kafka跨数据中心场景集群部署模式106
3.7 分布式缓存服务108
3.7.1 分布式缓存的应用场景109
3.7.2 业界常用的分布式缓存Memcache d110
3.7.3 业界常用的分布式缓存——Redis111
3.7.4 Redis常用的分布式缓存集群模式112
3.7.5 基于Codis实现Redis分布式缓存集群116
3.8 分布式任务调度服务118
3.8.1 通过Tbschedule实现分布式任务调度119
3.8.2 通过Elastic-Job实现分布式任务调度123
3.9 如何生成分布式ID126
3.9.1 UUID126
3.9.2 SnowFlake127
3.9.3 Ticket Server128
3.9.4 小结129
第4章 可用性设计130
4.1 综述130
4.1.1 可用性和可靠性的关系130
4.1.2 可用性的衡量标准131
4.1.3 什么降低了可用性131
4.2 逐步切换132
4.2.1 影子测试132
4.2.2 蓝绿部署133
4.2.3 灰度发布/金丝雀发布134
4.3 容错设计135
4.3.1 消除单点136
4.3.2 特性开关136
4.3.3 服务分级137
4.3.4 降级设计138
4.3.5 超时重试139
4.3.6 隔离策略152
4.3.7 熔断器153
4.4 流控设计157
4.4.1 限流算法157
4.4.2 流控策略159
4.4.3 基于Guava限流160
4.4.4 基于Nginx限流162
4.5 容量预估163
4.6 故障演练164
4.7 数据迁移165
4.7.1 逻辑分离,物理不分离166
4.7.2 物理分离166
第5章 可扩展性设计168
5.1 加机器能解决问题吗168
5.2 横向扩展169
5.3 AKF扩展立方体170
5.4 如何扩展长连接172
5.5 如何扩展数据库175
5.5.1 X轴扩展——主从复制集群175
5.5.2 Y轴扩展——分库、垂直分表176
5.5.3 Z轴扩展——分片(sharding)177
5.5.4 为什么要带拆分键182
5.5.5 分片后的关联查询问题183
5.5.6 分片扩容(re-sharding)184
5.5.7 精选案例187
5.6 如何扩展数据中心190
5.6.1 两地三中心和同城多活190
5.6.2 同城多活191
5.6.3 异地多活192
第6章 性能设计194
6.1 性能指标195
6.2 如何树立目标195
6.3 如何寻找平衡点196
6.4 如何定位瓶颈点197
6.5 服务通信优化198
6.5.1 同步转异步198
6.5.2 阻塞转非阻塞199
6.5.3 序列化200
6.6 通过消息中间件提升写性能201
6.7 通过缓存提升读性能202
6.7.1 基于ConcurrentHashMap实现本地缓存203
6.7.2 基于Guava Cache实现本地缓存204
6.7.3 缓存的常用模式205
6.7.4 应用缓存的常见问题207
6.8 数据库优化208
6.8.1 通过执行计划分析瓶颈点208
6.8.2 为搜索字段创建索引209
6.8.3 通过慢查询日志分析瓶颈点210
6.8.4 通过提升硬件能力优化数据库211
6.9 简化设计212
6.9.1 转移复杂度212
6.9.2 从业务角度优化212
第7章 一致性设计214
7.1 问题起源214
7.2 基础理论215
7.2.1 什么是分布式事务216
7.2.2 CAP定理218
7.2.3 BASE理论219
7.2.4 Quorum机制(NWR模型)219
7.2.5 租约机制(Lease)220
7.2.6 状态机(Replicated State Machine)221
7.3 分布式系统的一致性分类222
7.3.1 以数据为中心的一致性模型223
7.3.2 以用户为中心的一致性模型226
7.3.3 业界常用的一致性模型229
7.4 如何实现强一致性230
7.4.1 两阶段提交230
7.4.2 三阶段提交(3PC)231
7.5 如何实现最终一致性232
7.5.1 重试机制232
7.5.2 本地记录日志233
7.5.3 可靠事件模式233
7.5.4 Saga事务模型235
7.5.5 TCC事务模型237
7.6 分布式锁238
7.6.1 基于数据库实现悲观锁和乐观锁239
7.6.2 基于ZooKeeper的分布式锁241
7.6.3 基于Redis实现分布式锁242
7.7 如何保证幂等性244
7.7.1 幂等令牌(Idempotency Key)244
7.7.2 在数据库中实现幂等性246
第8章 未来值得关注的方向247
8.1 Serverless247
8.1.1 什么是Serverless247
8.1.2 Serverless的现状248
8.1.3 Serverless的应用场景249
8.2 Service Mesh250
8.2.1 什么是Service Mesh250
8.2.2 为什么需要Service Mesh252
8.2.3 Service Mesh的现状253
8.2.4 Istio架构分析255
第9章 研发流程258
9.1 十二因子258
9.2 为什么选择DevOps261
9.3 自动化测试263
9.3.1 单元测试263
9.3.2 TDD264
9.3.3 提交即意味着可测试265
9.4 Code Review265
9.4.1 Code Review的意义265
9.4.2 Code Review的原则266
9.4.3 Code Review的过程267
9.5 流水线267
9.5.1 持续交付267
9.5.2 持续部署流水线268
9.5.3 基于开源打造流水线268
9.5.4 Amazon的流水线271
9.5.5 开发人员自服务271
9.6 为什么需要AIOps272
9.7 基于数据和反馈持续改进273
9.8 拥抱变化274
9.9 代码即设计274
第10章 团队文化276
10.1 为什么团队文化如此重要276
10.2 组织结构278
10.2.1 团队规模导致的问题278
10.2.2 康威定律278
10.2.3 扁平化的组织279
10.2.4 独裁的管理方式还是民主的管理方式280
10.2.5 民主的团队如何做决策282
10.3 环境氛围282
10.3.1 公开透明的工作环境282
10.3.2 学习型组织283
10.3.3 减少正式的汇报284
10.3.4 高效的会议284
10.3.5 量化指标致死286
10.4 管理风格287
10.4.1 下属请假你会拒绝吗287
10.4.2 为什么你招不到你想要的人288
10.4.3 得到了所有人的认可,说明你并不是一个好的管理者291
10.4.4 尽量避免用自己的权力去做决策291
10.4.5 一屋不扫也可助你“荡平天下”292
10.4.6 如何留下你想要的人293
10.5 经典案例294
10.5.1 Instagram的团队文化294
10.5.2 Netflix的团队文化294