计算机
类型
7.1
豆瓣评分
可以朗读
语音朗读
193千字
字数
2018-10-01
发行日期
展开全部
主编推荐语
本书从架构、研发流程、团队文化三个角度详细介绍了如何构建Cloud Native。
内容简介
作者长期活跃在研发一线,具有丰富的架构设计经验,也曾亲身经历过很多失败的架构设计,如很多团队在实施微服务架构的时候,只强调拆分服务,根本没有理解微服务架构应该怎么做。
全书共分为10章,第1章从整体上描述了Cloud Native 的起源、组成及原则等;从第2章到第7章重点描述了微服务架构、敏捷基础设施及公共基础服务、可用性、可扩展性、性能、一致性等方面的设计实践;第8章介绍了Serverless 和Service Mesh;第9章介绍了如何构建研发流程;第10章介绍了如何建设团队文化。
目录
- 版权信息
- 关于作者
- 推荐序一 云端应用时代之光
- 推荐序二
- 序
- 第1章 综述
- 1.1 Cloud Native的起源
- 1.2 Cloud Native的组成
- 1.3 Cloud Native背后的诉求
- 1.4 如何衡量Cloud Native的能力
- 1.5 Cloud Native的原则
- 第2章 微服务架构
- 2.1 微服务架构的起源
- 2.2 为什么采用微服务架构
- 2.2.1 单体架构与微服务架构
- 2.2.2 什么时候开始微服务架构
- 2.2.3 如何决定微服务架构的拆分粒度
- 2.3 微服务设计原则
- 2.4 微服务架构实施的先决条件
- 2.4.1 研发环境和流程上的转变
- 2.4.2 拆分前先做好解耦
- 2.5 微服务划分模式
- 2.5.1 基于业务复杂度选择服务划分方法
- 2.5.2 基于数据驱动划分服务
- 2.5.3 基于领域驱动划分服务
- 2.5.4 从已有单体架构中逐步划分服务
- 2.5.5 微服务拆分策略
- 2.5.6 如何衡量服务划分的合理性
- 2.6 微服务划分反模式
- 2.7 微服务API设计
- 2.7.1 优秀API的设计原则
- 2.7.2 服务间通信——RPC
- 2.7.3 序列化——Protobuf
- 2.7.4 服务间通信——RESTful
- 2.7.5 通过Swagger实现RESTful
- 2.7.6 通过Spring Boot、Springfox、Swagger实现RESTful
- 2.7.7 HTTP协议的进化——HTTP/2
- 2.7.8 HTTP/2和Protobuf的组合——gRPC
- 2.8 微服务框架
- 2.9 基于Dubbo框架实现微服务
- 2.10 基于Spring Cloud框架实现微服务
- 2.11 服务发现场景下的ZooKeeper与Etcd
- 2.12 微服务部署策略
- 2.12.1 服务独享数据库
- 2.12.2 服务独享虚拟机/容器
- 2.13 为什么总觉得微服务架构很别扭
- 第3章 敏捷基础设施及公共基础服务
- 3.1 传统基础设施面临的挑战
- 3.2 什么是敏捷基础设施
- 3.3 基于容器的敏捷基础设施
- 3.3.1 容器VS虚拟机
- 3.3.2 安装Docker
- 3.3.3 部署私有Docker Registry
- 3.3.4 基于Spring Boot、Maven、Docker构建微服务
- 3.3.5 基于docker-compose管理容器
- 3.4 基于公共基础服务的平台化
- 3.5 监控告警服务
- 3.5.1 监控数据采集
- 3.5.2 监控数据接收模式
- 3.5.3 通过时间序列数据库存储监控数据
- 3.5.4 开源监控系统实现Prometheus
- 3.5.5 通过Prometheus和Grafana监控服务
- 3.6 分布式消息中间件服务
- 3.6.1 分布式消息中间件的作用
- 3.6.2 业界常用的分布式消息中间件
- 3.6.3 Kafka的设计原理
- 3.6.4 为什么Kafka性能高
- 3.6.5 Kafka的数据存储结构
- 3.6.6 如何保证Kafka不丢消息
- 3.6.7 Kafka跨数据中心场景集群部署模式
- 3.7 分布式缓存服务
- 3.7.1 分布式缓存的应用场景
- 3.7.2 业界常用的分布式缓存Memcached
- 3.7.3 业界常用的分布式缓存——Redis
- 3.7.4 Redis常用的分布式缓存集群模式
- 3.7.5 基于Codis实现Redis分布式缓存集群
- 3.8 分布式任务调度服务
- 3.8.1 通过Tbschedule实现分布式任务调度
- 3.8.2 通过Elastic-Job实现分布式任务调度
- 3.9 如何生成分布式ID
- 3.9.1 UUID
- 3.9.2 SnowFlake
- 3.9.3 Ticket Server
- 3.9.4 小结
- 第4章 可用性设计
- 4.1 综述
- 4.1.1 可用性和可靠性的关系
- 4.1.2 可用性的衡量标准
- 4.1.3 什么降低了可用性
- 4.2 逐步切换
- 4.2.1 影子测试
- 4.2.2 蓝绿部署
- 4.2.3 灰度发布/金丝雀发布
- 4.3 容错设计
- 4.3.1 消除单点
- 4.3.2 特性开关
- 4.3.3 服务分级
- 4.3.4 降级设计
- 4.3.5 超时重试
- 4.3.6 隔离策略
- 4.3.7 熔断器
- 4.4 流控设计
- 4.4.1 限流算法
- 4.4.2 流控策略
- 4.4.3 基于Guava限流
- 4.4.4 基于Nginx限流
- 4.5 容量预估
- 4.6 故障演练
- 4.7 数据迁移
- 4.7.1 逻辑分离,物理不分离
- 4.7.2 物理分离
- 第5章 可扩展性设计
- 5.1 加机器能解决问题吗
- 5.2 横向扩展
- 5.3 AKF扩展立方体
- 5.4 如何扩展长连接
- 5.5 如何扩展数据库
- 5.5.1 X轴扩展——主从复制集群
- 5.5.2 Y轴扩展——分库、垂直分表
- 5.5.3 Z轴扩展——分片(sharding)
- 5.5.4 为什么要带拆分键
- 5.5.5 分片后的关联查询问题
- 5.5.6 分片扩容(re-sharding)
- 5.5.7 精选案例
- 5.6 如何扩展数据中心
- 5.6.1 两地三中心和同城多活
- 5.6.2 同城多活
- 5.6.3 异地多活
- 第6章 性能设计
- 6.1 性能指标
- 6.2 如何树立目标
- 6.3 如何寻找平衡点
- 6.4 如何定位瓶颈点
- 6.5 服务通信优化
- 6.5.1 同步转异步
- 6.5.2 阻塞转非阻塞
- 6.5.3 序列化
- 6.6 通过消息中间件提升写性能
- 6.7 通过缓存提升读性能
- 6.7.1 基于ConcurrentHashMap实现本地缓存
- 6.7.2 基于Guava Cache实现本地缓存
- 6.7.3 缓存的常用模式
- 6.7.4 应用缓存的常见问题
- 6.8 数据库优化
- 6.8.1 通过执行计划分析瓶颈点
- 6.8.2 为搜索字段创建索引
- 6.8.3 通过慢查询日志分析瓶颈点
- 6.8.4 通过提升硬件能力优化数据库
- 6.9 简化设计
- 6.9.1 转移复杂度
- 6.9.2 从业务角度优化
- 第7章 一致性设计
- 7.1 问题起源
- 7.2 基础理论
- 7.2.1 什么是分布式事务
- 7.2.2 CAP定理
- 7.2.3 BASE理论
- 7.2.4 Quorum机制(NWR模型)
- 7.2.5 租约机制(Lease)
- 7.2.6 状态机(Replicated State Machine)
- 7.3 分布式系统的一致性分类
- 7.3.1 以数据为中心的一致性模型
- 7.3.2 以用户为中心的一致性模型
- 7.3.3 业界常用的一致性模型
- 7.4 如何实现强一致性
- 7.4.1 两阶段提交
- 7.4.2 三阶段提交(3PC)
- 7.5 如何实现最终一致性
- 7.5.1 重试机制
- 7.5.2 本地记录日志
- 7.5.3 可靠事件模式
- 7.5.4 Saga事务模型
- 7.5.5 TCC事务模型
- 7.6 分布式锁
- 7.6.1 基于数据库实现悲观锁和乐观锁
- 7.6.2 基于ZooKeeper的分布式锁
- 7.6.3 基于Redis实现分布式锁
- 7.7 如何保证幂等性
- 7.7.1 幂等令牌(Idempotency Key)
- 7.7.2 在数据库中实现幂等性
- 第8章 未来值得关注的方向
- 8.1 Serverless
- 8.1.1 什么是Serverless
- 8.1.2 Serverless的现状
- 8.1.3 Serverless的应用场景
- 8.2 Service Mesh
- 8.2.1 什么是Service Mesh
- 8.2.2 为什么需要Service Mesh
- 8.2.3 Service Mesh的现状
- 8.2.4 Istio架构分析
- 第9章 研发流程
- 9.1 十二因子
- 9.2 为什么选择DevOps
- 9.3 自动化测试
- 9.3.1 单元测试
- 9.3.2 TDD
- 9.3.3 提交即意味着可测试
- 9.4 Code Review
- 9.4.1 Code Review的意义
- 9.4.2 Code Review的原则
- 9.4.3 Code Review的过程
- 9.5 流水线
- 9.5.1 持续交付
- 9.5.2 持续部署流水线
- 9.5.3 基于开源打造流水线
- 9.5.4 Amazon的流水线
- 9.5.5 开发人员自服务
- 9.6 为什么需要AIOps
- 9.7 基于数据和反馈持续改进
- 9.8 拥抱变化
- 9.9 代码即设计
- 第10章 团队文化
- 10.1 为什么团队文化如此重要
- 10.2 组织结构
- 10.2.1 团队规模导致的问题
- 10.2.2 康威定律
- 10.2.3 扁平化的组织
- 10.2.4 独裁的管理方式还是民主的管理方式
- 10.2.5 民主的团队如何做决策
- 10.3 环境氛围
- 10.3.1 公开透明的工作环境
- 10.3.2 学习型组织
- 10.3.3 减少正式的汇报
- 10.3.4 高效的会议
- 10.3.5 量化指标致死
- 10.4 管理风格
- 10.4.1 下属请假你会拒绝吗
- 10.4.2 为什么你招不到你想要的人
- 10.4.3 得到了所有人的认可,说明你并不是一个好的管理者
- 10.4.4 尽量避免用自己的权力去做决策
- 10.4.5 一屋不扫也可助你“荡平天下”
- 10.4.6 如何留下你想要的人
- 10.5 经典案例
- 10.5.1 Instagram的团队文化
- 10.5.2 Netflix的团队文化
展开全部
出版方
电子工业出版社
电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。