●章 云原生 1 1.1 互联网架构变迁 2 1.1.1 互联网架构的核心问题 2 1.1.2 从集中式架构到分布式架构 5 1.1.3 从分布式架构到云原生架构 10 1.2 什么是云原生 15 1.2.1 概述 15 1.2.2 云原生与十二要素 16 1.2.3 十二要素进阶 23 1.2.4 云原生与CNCF 24 第2章 远程通信 41 2.1 通信方式 41 2.1.1 通信协议 42 2.1.2 I/O模型 51 2.1.3 Java中的I/O 53 2.2 序列化 66 2.2.1 文本序列化 67 2.2.2 二进制Java序列化 68 2.2.3 二进制异构语言序列化 71 2.3 远程调用 78 2.3.1 核心概念 78 2.3.2 Java远程方法调用 79 2.3.3 异构语言RPC框架gRPC 82 第3章 配置 89 3.1 本地配置 89 3.2 配置集中化 90 3.3 配置中心和注册中心 91 3.4 读性能 92 3.5 变更实时性 93 3.6 可用性 94 3.7 数据一致性 96 第4章 服务治理 97 4.1 服务发现 97 4.1.1 服务发现概述 97 4.1.2 ZooKeeper 100 4.1.3 Eureka 109 4.2 负载均衡 112 4.2.1 服务端负载均衡 112 4.2.2 客户端负载均衡 115 4.3 限流 118 4.3.1 限流算法 119 4.3.2 限流实现方案 121 4.3.3 限流的维度与粒度 129 4.4 熔断 131 4.4.1 概述 131 4.4.2 熔断器模式 132 4.4.3 Hystrix 133 第5章 观察分布式服务 135 5.1 层次划分 136 5.2 核心概念 136 5.3 分布式追踪 138 5.3.1 概述 138 5.3.2 常见的开源解决方案 139 5.4 应用性能管理与可观察性平台 140 5.5 Apache SkyWalking 142 5.5.1 项目定位 142 5.5.2 SkyWalking 5核心架构 143 5.5.3 SkyWalking 5公开案例 146 5.5.4 SkyWalking 6可观察性分析平台 147 第6章 侵入式服务治理方案 157 6.1 Dubbo 157 6.1.1 Dubbo概述 158 6.1.2 核心流程 160 6.1.3 注册中心 160 6.1.4 负载均衡 162 6.1.5 远程通信 163 6.1.6 限流 164 6.1.7 治理中心 165 6.1.8 监控中心 165 6.1.9 DubboX的扩展 166 6.2 Spring Cloud 168 6.2.1 概述 168 6.2.2 开发脚手架Spring Boot 172 6.2.3 服务发现 174 6.2.4 负载均衡 176 6.2.5 熔断 178 6.2.6 远程通信 179 第7章 云原生生态的基石Kubernetes 181 7.1 Kubernetes架构 182 7.2 分层设计理念及架构模型 183 7.3 设计哲学 184 7.4 Kubernetes中的原语 185 7.4.1 Kubernetes中的对象 185 7.4.2 对象的期望状态与实际状态 186 7.4.3 描述Kubernetes对象 187 7.4.4 服务发现与负载均衡 188 7.4.5 安全性与权限管理 189 7.4.6 Sidecar设计模式 190 7.5 应用Kubernetes 190 7.6 Kubernetes与云原生生态 192 7.6.1 下一代云计算标准 192 7.6.2 当前存在的问题 192 7.6.3 未来趋势 193 第8章 跨语言服务治理方案Service Mesh 195 8.1 Service Mesh概述 195 8.1.1 Service Mesh的由来 195 8.1.2 Service Mesh的定义 196 8.1.3 Service Mesh详解 197 8.2 Service Mesh演进历程 200 8.2.1 远古时代的案例 200 8.2.2 微服务时代的现状 201 8.2.3 侵入式框架的痛点 202 8.2.4 解决问题的思路 206 8.2.5 Proxy模式的探索 207 8.2.6 Sidecar模式的出现 208 8.2.7 代Service Mesh 209 8.2.8 第二代Service Mesh 210 8.3 Service Mesh市场竞争 212 8.3.1 Service Mesh的萌芽期 212 8.3.2 急转直下的Linkerd 212 8.3.3 波澜不惊的Envoy 214 8.3.4 背负使命的Istio 214 8.3.5 背水一战的Buoyant 215 8.3.6 其他参与者 217 8.3.7 Service Mesh的国内发展情况 219 8.4 Istio 220 8.4.1 Istio概述 220 8.4.2 架构和核心组件 222 第9章 云原生数据架构 232 9.1 关系型数据库尚能饭否 232 9.1.1 优势 233 9.1.2 不足 234 9.2 未达预期的NoSQL 235 9.2.1 键值数据库 235 9.2.2 文档数据库 236 9.2.3 列族数据库 236 9.3 冉冉升起的NewSQL 237 9.3.1 新架构 238 9.3.2 透明化分片中间件 238 9.3.3 云数据库 239 9.4 云原生数据库中间件的核心功能 239 9.4.1 数据分片 239 9.4.2 分布式事务 258 9.4.3 数据库治理 265 0章 分布式数据库中间件生态圈ShardingSphere 267 10.1 缘起 267 10.1.1 内部应用框架 268 10.1.2 开源历程 269 10.2 核心功能 271 10.2.1 数据分片 272 10.2.2 分布式事务 301 10.2.3 数据库治理 307 10.3 Sharding-JDBC 310 10.3.1 概述 310 10.3.2 使用说明 311 10.4 Sharding-Proxy 316 10.4.1 概述 316 10.4.2 使用说明 317 10.5 Database Mesh 317 10.5.1 概述 317 10.5.2 Service Mesh回顾 318 10.5.3 Database Mesh与Service Mesh的异同 319 10.5.4 Sharding-Sidecar 320 10.6 未来规划 321
内容简介
互联网架构不断演化,经历了从集中式架构到分布式架构,再到云原生架构的过程。云原生因能解决传统应用升级缓慢、架构臃肿、不能快速迭代等问题而成为未来云端应用的目标。本书首先介绍了架构演化过程及云原生的概念,让读者对基础概念能有一个准确的了解。接着阐述分布式、服务化、Observability、容器调度、Service Mesh、云数据库等体系及其原理,并介绍了与其相关的Dubbo、Spring Cloud、SkyWalking、Kubernetes、Istio开源解决方案。很后深度揭秘开源分布式数据库生态圈Sharding-Sphere的设计与实现。
"序 一次诚挚的写书邀约,一个深思熟虑后的决定,一番夜以继日的付出,以及一些“曲折离奇”的经历——《未来架构:从服务化到云原生》诞生了! 2015年年底,当时我还在当当网担任架构师,从事业务系统架构设计与内部应用框架研发方面的工作,处于事业上升期。在一次技术分享的会场,我偶遇电子工业出版社博文视点的编辑孙奇俏老师,她向我发出写书邀约。虽然当时我自认资历尚浅,并未接受这份邀约,但这件事却像一颗种子一样深深扎根在我的心中。 在那之后,我在互联网架构这个圈子里不断拓宽视野,积累经验,产生了越来越多的热情和新鲜想法,也深深受到周围那些具有真才实学又意气风发的挚友和同僚们的感染。这些点点滴滴让我觉得,我也要做点事情来传递多年以来在这个行业中沉淀的经验,分享我眺望到的未来架构的前沿思潮。倘若这些想法和经验能够帮助或影响到更多的朋友,或能让我自己与更多朋友结识、交流、碰撞出新的想法,那该......
评论晒单