展开全部

主编推荐语

本书从架构、研发流程、团队文化三个角度详细介绍了如何构建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月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。