架构演变实战:从单体到微服务再到中台
  • 推荐1
  • 收藏3
  • 浏览423

架构演变实战:从单体到微服务再到中台

潘志伟 (作者)  张国霞 (责任编辑)

  • 书  号:978-7-121-43612-3
  • 出版日期:2022-07-01
  • 页  数:420
  • 开  本:16(185*235)
  • 出版状态:正在印刷
  • 维护人:张国霞
本书从搭建单体架构遇到的瓶颈开始,通过真实案例介绍从单体架构转型为微服务架构及中台架构过程中遇到的困难、问题与具体解决方法。全书共计9章,前3章以案例和原理为基础,介绍微服务的优劣势及其使用场景;第4~6章描述如何基于单体架构搭建和优化微服务架构;第7~8章介绍如何掌握测试、部署交付流程等软件工程中的各个关键环节和核心要素;第9章讲解在多元化业务场景下如何构建中台架构,以实现通用能力的下沉,从而形成共享服务,达到资源利用率的最大化。
本书适合技术管理者、架构师和有一定开发基础的技术人员阅读,尤其适合已进入或即将进入微服务架构和中台架构领域的相关人员阅读。希望本书能够为读者提供一些技术路线上的启发和指引,帮助其少走弯路。
详细解密从单体到微服务再到中台的架构演进之路,有实际案例支撑,有详尽原理及技术讲解,超实用
潘志伟

某科技公司技术总监,阿里云MVP、QCon演讲嘉宾,拥有十多年的软件架构设计经验,擅长分布式架构与微服务架构设计及中台规划,目前带领研发团队承担系统的分析、架构设计、实施、演进,以及团队管理和培训等工作,有独到的团队建设和管理经验。
——————本书概要——————
如今,各行业都在步入数字化经济时代,并通过数字化技术与实体经济深度融合,以现代信息网络为重要载体,不断提高传统产业数字化、智能化的水平,随之而来的是注册用户量、用户数据等信息也处于井喷式增长趋势,企业信息系统架构也由单体架构纷纷向分布式架构转型。但是,大部分企业架构师缺乏分布式架构的设计能力,其潜意识中认为引入目前流行的微服务开发框架就能完成分布式架构的设计。企业架构师对引入分布式架构给整个研发体系带来的挑战预估不足,以致产品在开发、测试、上线阶段出现前所未有的种种问题,其结果是研发效率和产品质量不升反降,企业的数字化转型之路异常艰辛。

——————本书结构——————
第1章以企业一次失败的从单体架构转型为分布式架构事件为蓝本,以真实案例的方式介绍在单体应用遇到性能瓶颈后通过快速优化升级来暂时解决当前问题,以及匆忙转型微服务架构后最终失败的原因。
第2章首先通过复盘分析架构转型失败的原因,明确企业在转型为微服务架构前需要先在技术及组织架构上做出改变;其次在服务拆分环节通过介绍多个实用方法来说明如何正确地拆分服务;最后介绍如何利用工具来保障拆分后每个工程结构的一致性,且命名符合规范。
第3章介绍服务治理的概念,并结合常用的RPC框架,以Dubbo为例,从原理开始,到核心代码分析,最后结合实际案例介绍在项目中如何使用该框架。
第4章、第5章重点介绍如何将单体应用一步一步地转型为微服务架构。例如,如何将单体项目平滑迁移到微服务架构并实现流量无损上线,在架构升级过程中如何使用多级缓存、消息队列、并行调用机制、熔断与降级等技术手段来保障接口的高并发和低延迟特性。
第6章介绍微服务的统一入口API网关,从零开始介绍如何搭建高性能API网关。API网关在微服务架构中起着至关重要的作用,本章介绍如何采用异步模式来提高API网关的吞吐量,并集成熔断与降级功能来实现API资源隔离及接口的高可用。
第7章介绍对微服务架构下的企业应用该如何高效地测试。通过讲述测试模型的迭代过程来引出契约测试平台的需求,并介绍如何搭建满足要求的契约测试平台。为了提高系统的稳定性,简单的业务功能测试肯定不能满足要求。因此,在最后的测试环节又引入了混沌实验来模拟各种异常场景。
第8章介绍比较容易被忽视的系统容量预估和服务上线的流程。在面向终端用户的互联网产品上线后,通常应尽可能地避免产生线上问题。本章介绍如何在产品发布环节引入灰度发布机制来提前发现和解决问题,在容量预估环节采用了目前比较成熟的全链路压测方案来预估线上系统的实际处理能力。
第9章介绍企业在面临多业务线同时运营时,如何把业务线中共性、可复用的能力下沉,形成通用能力来给外部系统调用,减少重复造轮子的工作。本章以实际案例为出发点,讲解如何自顶向下地创建业务中台,包括如何识别共性需求、如何创建中台团队等。万事有利必有弊,中台的确对具备多业务线的企业有利,但是弊端也很明显。本章最后讲解了企业在推行中台建设过程中存在的弊端。
希望读者能通过本书快速地对微服务架构所涉及的方方面面有一个基本认识,理解其优点和不足,并进一步试用和评估。

——————本书读者对象——————
本书适合技术管理者、架构师和有一定开发基础的技术人员阅读,尤其适合已进入或即将进入微服务架构和中台架构领域的相关人员阅读。希望本书能够为读者提供一些技术路线上的启发和指引,帮助其少走弯路。

——————致 谢——————
本书的写作持续了两年多,基本上是利用平时的晚间,以及包括周末在内的节假日进行的。在此感谢我的家人,是他们所给予的包容和全力支持让我得以专心写作。
感谢博文视点的虾米编辑(张国霞)、李云静编辑和相关工作人员为本书的出版所付出的努力。

目录

》》》第1章 从单体架构开始 1《《《
1.1 单体应用优化之路 2
1.1.1 应用无状态 3
1.1.2 数据读/写分离 4
1.1.3 分库分表 5
1.2 比性能更可怕的问题 7
1.3 微服务框架选型 8
1.3.1 总体架构对比 9
1.3.2 编程方式对比 10
1.4 第一次失败的微服务重构 10

》》》第2章 服务拆分与工程划分 14《《《
2.1 实施微服务架构的前置条件 15
2.1.1 思想统一 15
2.1.2 充分培训 16
2.1.3 标准化的工程 17
2.1.4 自动化部署 18
2.2 服务拆分的角度和原则 19
2.2.1 服务拆分的角度 20
2.2.2 服务拆分的原则 21
2.3 服务拆分案例剖析 23
2.4 项目框架自动化 26
2.5 微服务的数据请求模型 31
2.6 日志收集和控制 33

》》》第3章 微服务模式开发 39《《《
3.1 服务治理的核心概念 40
3.1.1 分布式系统 40
3.1.2 RPC框架 43
3.1.3 服务治理 44
3.2 注册中心简介 47
3.2.1 ZooKeeper 47
3.2.2 Nacos 51
3.3 Provider的配置与发布 53
3.4 Consumer的配置 56
3.5 对负载均衡策略的选择 58
3.6 Dubbo的常用特性 64
3.6.1 服务的多版本管理 65
3.6.2 上下文信息 66
3.6.3 隐式传参 67
3.7 SPI原理介绍 67
3.7.1 Java SPI的执行流程 68
3.7.2 Dubbo SPI的执行流程 70
3.7.3 Dubbo SPI原理解析 74
3.8 Filter的扩展使用场景 77
3.8.1 Dubbo Filter的执行过程 77
3.8.2 Dubbo Filter的使用场景 81
3.9 Dubbo服务发布和调用分析 85
3.9.1 标签解析 87
3.9.2 服务注册和发布流程 88
3.9.3 服务引用流程和服务调用流程 91

》》》第4章 实施微服务架构的全过程 94《《《
4.1 前后端分离 95
4.2 服务无状态化 96
4.3 统一认证服务 97
4.3.1 令牌方式 98
4.3.2 JWT方式 100
4.4 微服务设计模式 105
4.5 微服务实战详解 106
4.5.1 需求背景 107
4.5.2 技术选型 108
4.5.3 设计数据库表 110
4.5.4 代码结构模型 114
4.5.5 服务发布上线 120
4.6 线上问题及解决方案 122
4.6.1 服务线程池满 122
4.6.2 数据库的CPU占用率飙高 124
4.6.3 无止境的循环依赖 125

》》》第5章 微服务进阶优化 126《《《
5.1 缓存分类 127
5.1.1 CDN缓存 128
5.1.2 本地缓存 129
5.1.3 分布式缓存 135
5.2 微服务缓存优化 137
5.2.1 单级缓存 137
5.2.2 多级缓存 138
5.2.3 缓存管理策略 140
5.3 串行转并行 144
5.3.1 串行、并行的概念 144
5.3.2 将串行调用转为并行调用的方法 145
5.3.3 案例实战 147
5.4 服务的熔断与降级 150
5.4.1 熔断器的工作原理 150
5.4.2 服务降级的原理 152
5.4.3 Hystrix详解 153
5.4.4 Sentinel详解 158
5.4.5 熔断器与Dubbo的集成 165
5.4.6 状态监控 168
5.5 限流 170
5.5.1 限流算法 170
5.5.2 如何进行限流 171
5.5.3 单机限流 171
5.5.4 分布式限流 172
5.5.5 混合限流 174
5.6 接口的幂等性 174
5.6.1 为什么需要幂等性 175
5.6.2 如何保证接口的幂等性 175
5.6.3 幂等实战 179
5.7 配置中心 180
5.7.1 常见的配置方式 180
5.7.2 配置中心概述 181
5.7.3 案例实战 182
5.7.4 案例说明 183
5.8 消息队列 183
5.8.1 为什么使用消息队列 183
5.8.2 消息队列的使用场景 185
5.9 分布式事务 189
5.9.1 事务的特性 189
5.9.2 分布式事务方案 191

》》》第6章 亿级流量网关开发实战 200《《《
6.1 为什么使用网关 201
6.1.1 网关的职责和工作原理 202
6.1.2 核心功能 203
6.2 网关的高可用性设计 207
6.2.1 高可用性的衡量标准 207
6.2.2 影响系统高可用性的因素 209
6.2.3 提升系统可用性的常用方法 209
6.3 从零开始自研高性能异步网关 211
6.3.1 API协议的制定 211
6.3.2 API的注册与发布 211
6.3.3 异步化请求 215
6.3.4 泛化调用 220
6.3.5 功能插件化 223
6.3.6 请求快照 226
6.3.7 API生命周期 227
6.4 网关优化 228
6.4.1 资源隔离 228
6.4.2 业务线程分离 230
6.4.3 Epoll加速 231
6.4.4 高速缓存 232
6.4.5 自恢复能力 234
6.5 自研网关所遇到的难题 234
6.5.1 网关找不到服务提供者 235
6.5.2 多余的class字段 236
6.5.3 错误传值 236
6.5.4 日期格式异常 237
6.5.5 自定义异常失效 238
6.5.6 源码修改如何集成 239

》》》第7章 微服务之服务测试的演进 242《《《
7.1 测试模型的演进 243
7.1.1 倒三角测试模型 243
7.1.2 金字塔测试模型 244
7.1.3 橄榄球测试模型 245
7.1.4 契约测试模型 246
7.2 微服务架构的测试流程 247
7.2.1 测试策略 247
7.2.2 单元测试 249
7.2.3 API测试 252
7.2.4 服务框架测试 254
7.3 构建契约测试平台 255
7.3.1 测试面临的阻碍 255
7.3.2 契约测试的核心思想 258
7.3.3 自研契约测试平台 260
7.3.4 数据采集流程 264
7.3.5 契约测试的核心代码 269
7.3.6 契约验证流程 277
7.4 混沌工程 280
7.4.1 理解混沌工程 281
7.4.2 如何实施混沌实验 283
7.4.3 CPU满载实验 284
7.4.4 磁盘写满实验 285
7.4.5 内存负载实验 286
7.4.6 数据库调用延时实验 286
7.4.7 Redis调用延时实验 287
7.4.8 Dubbo服务延时实验 288
7.4.9 Dubbo线程池满实验 289
7.4.10 混沌实验的可视化 290

》》》第8章 容量预估与服务上线 291《《《
8.1 持续集成和持续交付 292
8.1.1 为什么需要持续集成和持续交付 292
8.1.2 持续集成和持续交付的流程 296
8.1.3 搭建持续集成平台 301
8.1.4 持续集成项目实战 324
8.2 灰度发布 337
8.2.1 灰度发布介绍 338
8.2.2 灰度发布的流程 340
8.2.3 灰度发布实战 343
8.3 搭建全链路压测平台 348
8.3.1 实施全链路压测的原则 349
8.3.2 流量染色与数据隔离 351
8.3.3 如何生成压测流量 353
8.3.4 全链路压测实战 355
8.4 生产环境容量预估 367
8.4.1 容量预估的参考指标 368
8.4.2 硬件选型 370
8.4.3 容量预估实战 371

》》》第9章 中台架构设计 376《《《
9.1 什么是中台 377
9.1.1 研发乱象 377
9.1.2 中台的定义 379
9.1.3 中台的分类 380
9.1.4 企业是否需要中台 381
9.1.5 中台对企业的价值 382
9.2 业务中台的搭建步骤 382
9.2.1 高管的介入决定成败 382
9.2.2 独立中台的产品经理 385
9.2.3 独立中台的技术团队 389
9.2.4 需求边界管理 390
9.2.5 业务中台的架构设计 391
9.3 业务中台实战 392
9.3.1 需求分析 393
9.3.2 架构实现 395
9.3.3 业务流程 396
9.3.4 业务线接入 399
9.4 中台的绩效考核标准 401
9.5 中台的弊端 403
9.5.1 不同业务线的需求不具备共性 403
9.5.2 需求的优先级被降低 403
9.5.3 项目组沟通难 404
9.5.4 业务线被动升级 405
9.6 实战总结 406

读者评论

图书类别

相关博文

  • 不要再说微服务可以解决一切问题了!

    不要再说微服务可以解决一切问题了!

    博文小编 2022-07-11

    【本文原创:潘志伟】 微服务架构提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,形成分布式调用,为用户提供最终价值。 因此无论是创业型公司还是互联网独角兽企业,都将微服务架构当成一把利刃,用它解决项目在开发中所...

    博文小编 2022-07-11
    110 0 0 0
  • 采用Dubbo?还是Spring Cloud?

    采用Dubbo?还是Spring Cloud?

    博文小编 2022-07-18

    实施微服务的首要条件就是选择适合团队的微服务框架。 目前市场上微服务的框架,不管是开源的还是收费的,都有很多,比如Dubbo、Spring Cloud、Tars、Helidon、SOFAStack、gRPC、Thrift、Brpc、...

    博文小编 2022-07-18
    44 0 0 0
  • 一文理解分布式开发中的服务治理

    一文理解分布式开发中的服务治理

    博文小编 2022-07-22

    【本文原创:潘志伟】 我们在分布式开发中经常听到的一个词就是“服务治理”。在理解“服务治理”的概念之前让我们先理解什么是分布式系统,分布式系统之间如何通过RPC(Remote Procedure Call,远程过程调用)方式通信,以...

    博文小编 2022-07-22
    66 0 0 0

推荐用户

相关图书

互联网大厂晋升指南:从P5到P9的升级攻略

李运华 (作者)

本书主要介绍了一套系统的晋升方法论,涵盖“理解晋升→准备晋升→参与晋升→获得晋升”这条完整的晋升链条,深入剖析了晋升背后的规则、“潜规则”、技巧和套路,帮助读者...

¥118.00

Offer来了:Java面试核心知识点精讲(第2版)

王磊 (作者)

本书讲解Java面试中常被问及的核心知识点,涉及Java基础、Java并发编程、JVM、Java高并发网络编程、Spring基础、Netflix的原理及应用、S...

 

期货交易——日内投机常用技巧与实战

李俊峰 (作者)

本书主要讲解日内投机交易的各种常用技巧。第1章讲解日内投机操作的基础知识,让投资者详细地了解日内投机交易的特点、流程、风险性等。第2章讲解如何确定交易方向,以及...

¥69.00

基金定投——投资小白盈利指南

于佳蓉 (作者)

随着国内外投资市场环境的变化,投资者的风险偏好也发生了巨大变化,无论是对个人投资者来说,还是对专业投资机构来说,投资难度均有所加大,对投资小白来说更是如此。他们...

¥69.80

Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)

龚正 吴治辉 闫健勇 (作者)

Kubernetes是由谷歌开源的容器集群管理系统,为容器化应用提供了资源调度、部署运行、服务发现、扩缩容等一整套功能。Kubernetes也是将“一切以服务(...

 

小马白话期权3——交易新手入门指南(全彩)

随着更多商品期权品种的上市,越来越多的投资者开始关注期权。本书讲解期权的基础知识、交易策略、操作方法和风险控制等,最后提供了期权的实际操作案例,书中的每个案例几...

¥79.00