架构解密:从分布式到微服务+从零开始学架构+架构之美+软件架构设计+架构修炼之道pdf下载

架构解密:从分布式到微服务+从零开始学架构+架构之美+软件架构设计+架构修炼之道百度网盘pdf下载

作者:
简介:架构解密:从分布式到微服务+从零开始学架构+架构之美+软件架构设计+架构修炼之道
出版社:
出版时间:
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍


9787121347917   9787121338076  9787121356032  9787121360374 9787121388354

基本信息

商品名:架构解密:从分布式到微服务(第2版)

ISBN:9787121388354

定价:89

出版社:电子工业出版社

作者:吴治辉

出版时间:2020-06-01

印刷时间:2020-06-01

包装:平装

用纸:胶版纸

编辑推荐

《Kubernetes□□指南》作者、Mycat发起人吴治辉新作。

对分布式、微服务、云原生、K8s、Service Mesh等发展脉络和原理进行深度解密。

不论你是有十几年研发经验及架构经验的IT老手,还是刚入门系统架构的IT新手,本书都能对你理解分布式架构和微服务架构大有助益。

□□章讲解分布式的基础——网络,对国际互联网、NIO、AIO、网络传输中的对象序列化问题、HTTP的前世今生、TCP/IP、从CDN到SD-WAN等知识进行深入讲解。

第2章讲解分布式系统的经典理论,涉及分布式系统的设计理念、一致性原理;ZooKeeper的使用场景;CAP理论的前世今生;BASE准则;分布式事务的原理。

第3章从RPC开始,讲解分布式服务治理框架的起源与原理,并讲解ZeroC Ice的原理和微服务架构实战。

第4~6章以专题形式讲解内存、分布式文件存储和分布式计算,对每个专题都讲解相关的重要理论、产品、开源项目及经验等。

第7章深入讲解全文检索与消息队列中间件的原理及用法。

第8章讲解以Kubernetes为代表的微服务架构解决了传统架构的哪些痛点;Service Mesh解决了微服务架构的哪些问题,以及如何理解它的原理和核心内容。

第9章分享作者的架构实践经验:公益项目wuhansun实践、身边购平台实践、DIY一个有难度的分布式集□。

《Kubernetes□□指南》作者龚正、《Offer来了》作者王磊、《可伸缩服务架构》《分布式服务架构》作者杨彪力赞!

内容简介

微服务、云原生、Kubernetes、Service Mesh是分布式领域的热点技术,它们并不是凭空出现的,一定继承了某些“前辈”的优点。我们不仅要了解这些技术,还要深入理解其发展脉络、原理等,才能游刃有余地将其用于现有的项目开发或老系统改造中。

本书总计9章。□□章讲解分布式的基础——网络,对国际互联网、NIO、AIO、网络传输中的对象序列化问题、HTTP的前世今生、TCP/IP、从CDN到SD-WAN等知识进行深入讲解。第2章讲解分布式系统的经典理论,涉及分布式系统的设计理念、一致性原理;ZooKeeper的使用场景;CAP理论的前世今生;BASE准则;分布式事务的原理。第3章从RPC开始,讲解分布式服务治理框架的起源与原理,并讲解ZeroC Ice的原理和微服务架构实战。第4~6章以专题形式讲解内存、分布式文件存储和分布式计算,对每个专题都讲解相关的重要理论、产品、开源项目及经验等。第7章深入讲解全文检索与消息队列中间件的原理及用法。第8章讲解以Kubernetes为代表的微服务架构解决了传统架构的哪些痛点;Service Mesh解决了微服务架构的哪些问题,以及如何理解它的原理和核心内容。第9章分享作者的架构实践经验。

不论你是有十几年研发经验及架构经验的IT老手,还是刚入门系统架构的IT新手,本书都能对你理解分布式架构和微服务架构大有助益。

目录

□□章  深入理解网络 1

1.1  从国际互联网开始      1

1.2  NIO,一本难念的经   7

1.2.1  难懂的ByteBuffer     7

1.2.2  晦涩的“非阻塞”    15

1.2.3  复杂的Reactor模型  18

1.3  AIO,大道至简的设计与苦涩的现实       21

1.4  网络传输中的对象序列化问题   26

1.5  HTTP的前世今生       30

1.5.1  HTTP的设计思路    31

1.5.2  HTTP如何保持状态 32

1.5.3  Session的秘密   34

1.5.4  再谈Token 36

1.5.5  分布式Session   39

1.5.6  HTTP与Service Mesh      40

1.6  分布式系统的基石:TCP/IP      42

1.7  从CDN到SD-WAN    45

1.7.1  互联互不通的运营商网络       45

1.7.2  双线机房的出现       45

1.7.3  CDN的作用      46

1.7.4  SD-WAN技术的诞生       47

 

第2章  分布式系统的经典理论 48

2.1  从分布式系统的设计理念说起   48

2.2  分布式系统的一致性原理   50

2.3  分布式系统的基石之ZooKeeper 53

2.3.1  ZooKeeper的原理与功能 53

2.3.2  ZooKeeper的应用场景案例分析     57

2.4  经典的CAP理论 61

2.5  BASE准则,一个影响深远的指导思想   63

2.6  重新认识分布式事务   64

2.6.1  数据库单机事务的实现原理    64

2.6.2  经典的X/OpenDTP事务模型  66

2.6.3  互联网中的分布式事务解决方案    68

 

第3章  聊聊RPC       73

3.1  从IPC通信说起   73

3.2  古老又有生命力的RPC      75

3.3  从RPC到服务治理框架     81

3.4  基于ZeroC Ice的微服务架构指南     84

3.4.1  ZeroC Ice的前世今生      84

3.4.2  ZeroC Ice微服务架构指南      86

3.4.3  微服务架构概述       93

 

第4章  深入浅析内存  99

4.1  你所不知道的内存知识      99

4.1.1  复杂的CPU与单纯的内存      99

4.1.2  多核CPU与内存共享问题      101

4.1.3  著名的Cache伪共享问题 105

4.1.4  深入理解不一致性内存    107

4.2  内存计算技术的前世今生   110

4.3  内存缓存技术分析      115

4.3.1  缓存概述    115

4.3.2  缓存实现的几种方式       117

4.3.3  Memcache的内存管理技术     119

4.3.4  Redis的独特之处      121

4.4  内存计算产品分析      122

4.4.1  SAP HANA 123

4.4.2  Hazelcast    125

4.4.3  VoltDB       127

 

第5章  深入解析分布式文件存储    130

5.1  数据存储进化史   130

5.2  经典的网络文件系统NFS  137

5.3  高性能计算领域的分布式文件系统   140

5.4  企业级分布式文件系统GlusterFS     142

5.5  创新的Linux分布式存储系统——Ceph   145

5.6  星际文件系统IPFS     151

5.7  软件定义存储      155

 

第6章  聊聊分布式计算    161

6.1  不得不说的Actor模型       161

6.2  Actor原理与实践 165

6.3  初识Akka     172

6.4  适用面很广的Storm    179

6.5  MapReduce及其引发的新世界   187

 

第7章  全文检索与消息队列中间件 194

7.1  全文检索      194

7.1.1  Lucene 195

7.1.2  Solr     199

7.1.3  ElasticSearch      202

7.2  消息队列      210

7.2.1  JEE专属的JMS  214

7.2.2  生生不息的ActiveMQ      219

7.2.3  RabbitMQ   223

7.2.4  Kafka  230

 

第8章  微服务架构    236

8.1  微服务架构概述   236

8.1.1  微服务架构兴起的原因    237

8.1.2  不得不提的容器技术       238

8.1.3  如何全面理解微服务架构       241

8.2  几种常见的微服务架构方案      245

8.2.1  ZeroC IceGrid微服务架构       245

8.2.2  Spring Cloud微服务架构  248

8.2.3  基于消息队列的微服务架构    250

8.2.4  Docker Swarm微服务架构      251

8.3  深入Kubernetes微服务平台      253

8.3.1  Kubernetes的概念与功能  253

8.3.2  Kubernetes的组成与原理  258

8.3.3  基于Kubernetes的PaaS平台  262

8.4  从微服务到Service Mesh    280

8.4.1  Service Mesh之再见架构 280

8.4.2  Envoy核心实践入门 282

8.4.3  Istio背后的技术       286

8.4.4  Istio的架构演变       293

第9章  架构实践 297

9.1  公益项目wuhansun实践     297

9.2  身边购平台实践   306

9.3  DIY一个有难度的分布式集群   312

作者简介

吴治辉 

HPE资深架构师,拥有近20年软件研发经验,专注于电信软件和云计算方面的软件研发,拥有丰富的大型项目架构设计经验,是业界少有的具备很强Coding能力的资深架构师,也是《ZeroC Ice□□指南》《Kubernetes□□指南》《区块链轻松上手》等书作者。

精彩书评

以Kubernetes为核心的容器技术正在被大多数企业接受,业务系统开发也在逐渐向微服务化架构演进,如何对大规模企业级应用系统进行科学、先进的架构设计,成为系统架构师的主要挑战。

本书集理论与实践于一身,对网络通信、RPC、内存、文件系统、计算、消息队列等核心分布式架构组件进行详细介绍,对分布式架构理论和先进的微服务架构进行阐述,同时将作者多年的大型企业级IT系统架构经验与真实应用案例相结合,对架构设计进行深度解密。本书深入浅出、图文并茂,是系统架构师不可多得的专业参考书。

——龚正 《Kubernetes□□指南》作者、HPE高级顾问 

 

分布式架构和微服务架构是互联网架构的核心。我们通常理解分布式架构都是从常用的分布式软件开始的,比如Spring Cloud、Kafka、ZooKeeper、HBase等,这些都离不开分布式网络架构、分布式存储和分布式计算等基础理论。本书从更高的视角看待分布式架构,为我们详细阐述了分布式架构的底层原理和设计思路,以及操作系统的底层原理,具体知识点包括分布式网络架构、一致性理论、RPC、内存、分布式文件、消息中间件和微服务架构等,是互联网开发与设计方面的优秀参考书。

——王磊 《Offer来了》作者

本书凝聚了吴治辉老师的多年架构经验,内容覆盖网络、分布式、微服务、存储、计算等。它深入浅出地讲解了云原生、Kubernetes和Service Mesh等热门技术,并详细剖析其原理,值得每个IT人士阅读。

——杨彪 《可伸缩服务架构》《分布式服务架构》作者、美团高级架构师

基本信息

书名:从零开始学架构:照着做,你也能成为架构师

作者:李运华 (作者)  

书 号:9787121347917

出版日期:2018-09-21

页 数:324

开 本:16(185*235)

定价 99元

目录.

1部分 概念和基础

1章 架构基础

1.1 “架构”到底指什么

1.1.1 系统与子系统

1.1.2 模块与组件

1.1.3 框架与架构

1.1.4 重新定义架构

1.2 架构设计的目的

1.2.1 架构设计的误区

1.2.2 以史为鉴

1.2.3 架构设计的真正目的

1.3 复杂度来源

1.3.1 高性能

1.3.2 高可用

1.3.3 可扩展性

1.3.4 低成本

1.3.5 安全

1.3.6 规模

1.4 本章小结

2章 架构设计原则

2.1 合适原则

2.2 简单原则

2.3 演化原则

2.4 本章小结

3章 架构设计流程

3.1 有的放矢—识别复杂度

3.2 按图索骥—设计备选方案

3.3 深思熟虑—评估和选择备选方案

3.3.1 业务背景

3.3.2 备选方案设计

3.3.3 备选方案360度环评

3.4 精雕细琢—详细方案设计

3.5 本章小结

2部分 高性能架构模式

4章 存储高性能

4.1 关系数据库

4.1.1 读写分离

4.1.2 分库分表

4.1.3 实现方法

4.2 NoSQL

4.2.1 K-V存储

4.2.2 文档数据库

4.2.3 列式数据库

4.2.4 全文搜索引擎

4.3 缓存

4.3.1 缓存穿透

4.3.2 缓存雪崩

4.3.3 缓存热点

4.4 本章小结

5章 计算高性能

5.1 单服务器高性能

5.1.1 PPC

5.1.2 prefork

5.1.3 TPC

5.1.4 prethread

5.1.5 Reactor

5.1.6 Proactor

5.2 集群高性能

5.2.1 负载均衡分类

5.2.2 负载均衡架构

5.2.3 负载均衡的算法

5.3 本章小结

3部分 高可用架构模式

6章 CAP

6.1 CAP理论

6.1.1 一致性(Consistency)

6.1.2 可用性

6.1.3 分区容忍性(Partition Tolerance)

6.2 CAP应用

6.2.1 CP—Consistency/Partition Tolerance

6.2.2 AP—Availability/Partition Tolerance

6.3 CAP细节

6.4 ACID、BASE

6.4.1 ACID

6.4.2 BASE

6.5 本章小结

7章 FMEA

7.1 FMEA介绍

7.2 FMEA方法

7.3 FMEA实战

7.4 本章小结

8章 存储高可用

8.1 主备复制

8.1.1 基本实现

8.1.2 优缺点分析

8.2 主从复制

8.2.1 基本实现

8.2.2 优缺点分析

8.3 主备倒换与主从倒换

8.3.1 设计关键

8.3.2 常见架构

8.4 主主复制

8.5 数据集群

8.5.1 数据集中集群

8.5.2 数据分散集群

8.5.3 分布式事务算法

8.5.4 分布式一致性算法

8.6 数据分区

8.6.1 数据量

8.6.2 分区规则

8.6.3 复制规则

8.7 本章小结

9章 计算高可用

9.1 主备

9.2 主从

9.3 对称集群

9.4 非对称集群

9.5 本章小结

10章 业务高可用

10.1 异地多活

10.1.1 异地多活架构

10.1.2 异地多活设计技巧

10.1.3 异地多活设计步骤

10.2 接口级的故障应对方案

10.2.1 降级

10.2.2 熔断

10.2.3 限流

10.2.4 排队

10.3 本章小结

4部分 可扩展架构模式

11章 可扩展模式

11.1 可扩展概述

11.2 可扩展的基本思想

11.3 可扩展方式

11.4 本章小结

12章 分层架构

12.1 分层架构类型

12.2 分层架构详解

12.3 本章小结

13章 SOA架构

13.1 SOA历史

13.2 SOA详解

13.3 本章小结

14章 微服务

14.1 微服务历史

14.2 微服务与SOA的关系

14.3 微服务的陷阱

14.4 微服务佳实践

14.4.1 服务粒度

14.4.2 拆分方法

14.4.3 基础设施

14.5 本章小结

15章 微内核架构

15.1 基本概念

15.2 设计关键点

15.3 OSGi架构简析

15.4 规则引擎架构简析

15.5 本章小结

5部分 架构实战

16章 消息队列设计实战

16.1 需求

16.2 设计流程

16.2.1 识别复杂度

16.2.2 设计备选方案

16.2.3 评估和选择备选方案

16.2.4 细化方案

16.3 本章小结

17章 互联网架构演进

17.1 技术演进

17.1.1 技术演进的动力

17.1.2 淘宝

17.1.3 手机QQ

17.1.4 微信

17.2 技术演进的模式

17.3 互联网业务发展

17.3.1 业务复杂性

17.3.2 用户规模

17.3.3 量变到质变

17.4 本章小结

18章 互联网架构模板

18.1 总体结构

18.2 存储层技术

18.2.1 SQL

18.2.2 NoSQL

18.2.3 小文件存储

18.2.4 大文件存储

18.3 开发层技术

18.3.1 开发框架

18.3.2 Web服务器

18.3.3 容器

18.4 服务层技术

18.4.1 配置中心

18.4.2 服务中心

18.4.3 消息队列

18.5 网络层技术

18.5.1 负载均衡

18.5.2 CDN

18.5.3 多机房

18.5.4 多中心

18.6 用户层技术

18.6.1 用户管理

18.6.2 消息推送

18.6.3 存储云与图片云

18.7 业务层技术

18.8 平台技术

18.8.1 运维平台

18.8.2 测试平台

18.8.3 数据平台

18.8.4 管理平台

18.9 本章小结

19章 架构重构

19.1 有的放矢

19.2 合纵连横

19.2.1 合纵

19.2.2 连横

19.3 运筹帷幄

19.4 文武双全—项目管理+技术能力

19.5 本章小结

20章 开源系统

20.1 选:如何选择一个开源项目

20.1.1 聚焦是否满足业务

20.1.2 聚焦是否成熟

20.1.3 聚焦运维能力

20.2 用:如何使用开源方案

20.2.1 深入研究,仔细测试

20.2.2 小心应用,灰度发布

20.2.3 做好应急,以防万一

20.3 改:如何基于开源项目做二次开发

20.3.1 保持纯洁,加以包装

20.3.2 发明你要的轮子

20.4 本章小结

内容简介

本书的内容主要包含以下几部分:1) 架构设计基础,包括架构设计相关概念、历史、原则、基本方法,让架构设计不再神秘;2) 架构设计流程,通过一个虚拟的案例,描述了一个通用的架构设计流程,让架构设计不再依赖天才的创作,而是有章可循;3) 架构设计专题:包括高性能架构设计、高可用架构设计、可扩展架构设计,这些模式可以直接参考和应用;4) 架构设计实战,包括重构、开源方案引入、架构发展路径、互联网架构模板等

基本信息

书名: 架构之美-行业思想揭秘软件设计之美(评注版)

定价: 89.00元

出版社名称: 电子工业出版社

出版时间: 2018年6月

作者: (美)Diomidis,Spinellis(迪奥米德斯·斯宾耐立思)

译者: 张逸

开本: 16开

ISBN: 9787121338076

 目录.

序 xix

Stephen J. Mellor

前言 xxiii

1 部分 论架构

1 章 何谓架构 3

John Klein 与David Weiss

简介 3

创建软件架构 10

架构结构 14

好的架构 19

美丽架构 20

致谢 23

参考文献 23

2 章 两个系统的故事:摩登时代的软件神话 25

Pete Goodliffe

混乱大都市 26

设计之城 33

然后呢 41

轮到你了 41

参考文献 42

2 部分 企业应用架构

3 章 可伸缩架构 45

Jim Waldo

简介 45

上下文 47

架构 51

对架构的思考 57

4 章 记忆留存 63

Michael Nygard

功能与约束 64

工作流 65

架构要素 66

用户反应 87

结论 88

参考文献 88

5 章 面向资源架构:在Web 之中 89

Brian Sletten

简介 89

传统的Web 服务 90

Web 92

面向资源架构 98

数据驱动应用 102

运用面向资源架构 103

结论 109

6 章 数据增长:Facebook 平台的架构 111

Dave Fetterman

简介 111

创建社交Web 服务 117

创建社交数据查询服务 124

创建社交Web 门户:FBML 133

系统的支持功能 146

总结 151

3 部分 系统架构

7 章 XEN 与虚拟化之美 155

Derek Murray 与Keir Fraser

简介 155

Xenoservers 156

虚拟化的挑战 159

半虚拟化 159

Xen 的变化 163

变化中的硬件,变化中的Xen 169

前车之鉴 172

延伸阅读 173

8 章 Guardian:一个容错操作系统环境 175

Greg Lehey

Tandem/16:未来所有计算机都将像这样构建 176

硬件 176

机械设计 178

处理器架构 179

处理器间总线 184

输入/输出 184

进程结构 185

消息系统 186

文件系统 190

逸闻趣事 195

弊端 195

后继者 197

延伸阅读 198

9 章 JPC:纯Java 的X86 PC 模拟器 199

Rhys Newman 与Christopher Dennis

简介 200

概念验证 202

PC 架构 205

Java 性能技巧 206

4GB 放入4GB:这不会奏效 207

保护模式的危险 210

屡败屡战 214

劫持JVM 217

灵活性 229

性 231

吃一堑长一智 232

10 章 元循环虚拟机的力量:Jikes RVM 235

Ian Rogers 与Dave Grove

背景 236

运行时环境之谜 237

Jikes RVM 简史 240

自部署运行时的自举 241

运行时组件 246

前车之鉴 259

参考文献 259

4 部分 终端用户应用架构

11 章 GNU Emacs:滋生的特性为其优势 263

Jim Blandy

Emacs 在使用 264

Emacs 的架构 266

滋生的特性 272

另外两个架构 275

12 章 当集市开始构建教堂 279

Till Adam 与Mirko Boehm

简介 279

KDE 项目的历史与架构 282

Akonadi 287

ThreadWeaver 303

5 部分 语言与架构

13 章 软件架构:面向对象 vs. 面向函数 315

Bertrand Meyer

概览 315

函数式示例 318

评估函数式解决方案的模块化 321

面向对象视图 330

评估和改进面向对象的模块化 336

代理:将操作包裹到对象中 341

致谢 345

参考文献 346

14 章 重读经典 349

Panagiotis Louridas

万物皆对象 353

类型被隐式定义 361

问题 367

土木建筑架构 372

参考文献 380

跋 383

William J. Mitchell

贡献者 387

 内容简介

这是荟萃了软件架构领域各位思想真知灼见的经典之作,内容覆盖了软件架构的方方面面,包括架构理论、企业架构、系统架构、应用架构等。这些架构大师们用简洁的文本、真实的案例向读者勾勒出美丽架构的模样,并由此提出设计美丽架构的原则、实践与演进过程。


基本信息

书名:软件架构设计 大型网站技术架构与业务架构融合之道

作  者:余春龙 著

定  价:79

出 版 社:电子工业出版社

出版日期:2019年01月01日

页  数:256

装  帧:平装

ISBN:9787121356032

内容简介

《软件架构设计:大型网站技术架构与业务架构融合之道》系统化地阐述了技术架构与业务架构的方法论与实践。《软件架构设计:大型网站技术架构与业务架构融合之道》内容分为5大部分,第1部分从行业背景出发定义架构的概念与范畴;第2部分细致讨论架构所需的计算机功底,包括编程语言、操作系统、数据库、网络、框架、中间件;第3部分从高并发、高可用、稳定性、分布式事务、Paxos/Raft一致性算法、CAP理论等方面探讨技术架构;第4部分从业务架构思维、微服务、领域驱动设计、技术架构与业务架构融合的角度探讨业务架构;第5部分从个人素质、团队能力两大方面,诠释从技术到管理的转变方法。通过《软件架构设计:大型网站技术架构与业务架构融合之道》,读者可以对大型业务系统的架构方法论有全局的认识,同时对软件架构的核心能力有深刻的理解,对个人的技术成长起到一定的借鉴作用。

《软件架构设计:大型网站技术架构与业务架构融合之道》不仅适合工程师、架构师阅读,也适合企业系统开发人员在内的软件开发从业人员阅读。

作者简介

余春龙,中科院软件所计算机硕士毕业。热衷于高并发高可用架构、业务建模、领域驱动设计,在十年的工作中,经历过游戏、社交、广告、电商等各种类型的项目,积累了较丰富的工程经验。

目录

第1部分 什么是架构

第1章 五花八门的架构师职业 2

1.1 架构师职业分类 2

1.2 架构的分类 2

第2章 架构的道与术 5

2.1 何为道,何为术 5

2.2 道与术的辩证关系 6

第2部分 计算机功底

第3章 语言 10

3.1 层出不穷的编程语言 10

3.2 精通一门语言 10

第4章 操作系统 12

4.1 缓冲I/O和直接I/O 12

4.2 内存映射文件与零拷贝 14

4.2.1 内存映射文件 14

4.2.2 零拷贝 15

4.3 网络I/O模型 17

4.3.1 实现层面的网络I/O模型 17

4.3.2 Reactor模式与Preactor模式 20

4.3.3 select、epoll的LT与ET 20

4.3.4 服务器编程的1+N+M模型 22

4.4 进程、线程和协程 24

4.5 无锁(内存屏障与CAS) 27

4.5.1 内存屏障 27

4.5.2 CAS 30

第5章 网络 31

5.1 HTTP 1.0 31

5.1.1 HTTP 1.0的问题 31

5.1.2 Keep-Alive机制与Content-Length属性 31

5.2 HTTP 1.1 32

5.2.1 连接复用与Chunk机制 32

5.2.2 Pipeline与Head-of-line Blocking问题 33

5.2.3 HTTP/2出现之前的性能提升方法 34

5.2.4 “一来多回”问题 35

5.2.5 断点续传 36

5.3 HTTP/2 36

5.3.1 与HTTP 1.1的兼容 37

5.3.2 二进制分帧 37

5.3.3 头部压缩 39

5.4 SSL/TLS 39

5.4.1 背景 39

5.4.2 对称加密的问题 40

5.4.3 双向非对称加密 41

5.4.4 单向非对称加密 42

5.4.5 中间人攻击 43

5.4.6 数字证书与证书认证中心 44

5.4.7 根证书与CA信任链 45

5.4.8 SSL/TLS协议:四次握手 47

5.5 HTTPS 48

5.6 TCP/UDP 49

5.6.1 可靠与不可靠 49

5.6.2 TCP的“假”连接(状态机) 51

5.6.3 三次握手(网络2将军问题) 53

5.6.4 四次挥手 54

5.7 QUIC 56

5.7.1 不丢包(Raid5算法和Raid6算法) 57

5.7.2 更少的RTT 58

5.7.3 连接迁移 58

第6章 数据库 59

6.1 范式与反范式 59

6.2 分库分表 59

6.2.1 为什么要分 60

6.2.2 分布式ID生成服务 60

6.2.3 拆分维度的选择 60

6.2.4 Join查询问题 61

6.2.5 分布式事务 61

6.3 B+树 62

6.3.1 B+树逻辑结构 62

6.3.2 B+树物理结构 63

6.3.3 非主键索引 65

6.4 事务与锁 66

6.4.1 事务的四个隔离级别 66

6.4.2 悲观锁和乐观锁 67

6.4.3 死锁检测 71

6.5 事务实现原理之1:Redo Log 72

6.5.1 Write-Ahead 73

6.5.2 Redo Log的逻辑与物理结构 74

6.5.3 Physiological Logging 75

6.5.4 I/O写入的原子性(Double Write) 76

6.5.5 Redo Log Block结构 77

6.5.6 事务、LSN与Log Block的关系 78

6.5.7 事务Rollback与崩溃恢复(ARIES算法) 80

6.6 事务实现原理之2:Undo Log 86

6.6.1 Undo Log是否一定需要 86

6.6.2 Undo Log(MVCC) 88

6.6.3 Undo Log不是Log 89

6.6.4 Undo Log与Redo Log的关联 90

6.6.4 各种锁 91

6.7 Binlog与主从复制 94

6.7.1 Binlog与Redo Log的主要差异 94

6.7.2 内部XA – Binlog与Redo Log一致性问题 95

6.7.3 三种主从复制方式 96

6.7.3 并行复制 97

第7章 框架、软件与中间件 99

7.1 对生态体系的认知 99

7.2 框架 99

7.3 软件与中间件 100

第3部分 技术架构之道

第8章 高并发问题 104

8.1 问题分类 104

8.1.1 侧重于“高并发读”的系统 104

8.1.2 侧重于“高并发写”的系统 105

8.1.3 同时侧重于“高并发读”和“高并发写”的系统 106

8.2 高并发读 108

8.2.1 策略1:加缓存 108

8.2.2 策略2:并发读 109

8.2.3 策略3:重写轻读 110

8.2.4 总结:读写分离(CQRS架构) 113

8.3 高并发写 114

8.3.1 策略1:数据分片 114

8.3.2 策略2:任务分片 115

8.3.3 策略3:异步化 117

8.3.4 策略4:批量 123

8.3.5 策略5:串行化+多进程单线程+异步I/O 124

8.4 容量规划 125

8.4.1 吞吐量、响应时间与并发数 125

8.4.2 压力测试与容量评估 127

第9章 高可用与稳定性 129

9.1 多副本 129

9.2 隔离、限流、熔断和降级 130

9.3 灰度发布与回滚 135

9.4 监控体系与日志报警 136

第10章 事务一致性 138

10.1 随处可见的分布式事务问题 138

10.2 分布式事务解决方案汇总 139

10.2.1 2PC 139

10.2.2 最终一致性(消息中间件) 141

10.2.3 TCC 145

10.2.4 事务状态表+调用方重试+接收方幂等 147

10.2.5 对账 148

10.2.6 妥协方案:弱一致性+基于状态的补偿 149

10.2.7 妥协方案:重试+回滚+报警+人工修复 151

10.2.8 总结 152

第11章 多副本一致性 153

11.1 高可用且强一致性到底有多难 153

11.1.1 Kafka的消息丢失问题 153

11.1.2 Kafka消息错乱问题 156

11.2 Paxos算法解析 158

11.2.1 Paxos解决什么问题 158

11.2.2 复制状态机 161

11.2.3 一个朴素而深刻的思想 163

11.2.4 Basic Paxos算法 164

11.2.5 Multi Paxos算法 167

11.3 Raft算法解析 169

11.3.1 为“可理解性”而设计 169

11.3.2 单点写入 170

11.3.3 日志结构 171

11.3.4 阶段1:Leader选举 174

11.3.5 阶段2:日志复制 176

11.3.6 阶段3:恢复阶段 177

11.3.7 安全性保证 177

11.4 Zab算法解析 180

11.4.1 Replicated State Machine vs. Primary-Backup System 180

11.4.2 zxid 182

11.4.3 “序”:乱序提交 vs. 顺序提交 182

11.4.4 Leader选举:FLE算法 184

11.4.5 正常阶段:2阶段提交 186

11.4.6 恢复阶段 186

11.5 三种算法对比 187

第12章 CAP理论 189

12.1 CAP理论的误解 189

12.2 现实世界不存在“强一致性”(PACELC理论) 190

12.3 典型案例:分布式锁 192

第4部分 业务架构之道

第13章 业务意识 196

13.1 产品经理vs.需求分析师 196

13.2 什么叫作一个“业务” 198

13.3 “业务架构”的双重含义 199

13.4 “业务架构”与“技术架构”的区分 200

第14章 业务架构思维 202

14.1 “伪”分层 202

14.2 边界思维 204

14.3 系统化思维 205

14.4 利益相关者分析 206

14.5 非功能性需求分析(以终为始) 208

14.6 视角(横看成岭侧成峰) 209

14.7 抽象 210

14.8 建模 213

14.9 正交分解 215

第15章 技术架构与业务架构的融合 218

15.1 各式各样的方法论 218

15.2 为什么要“领域驱动” 218

15.3 “业务流程”不等于“系统流程” 221

15.4 为何很难设计一个好的领域模型 222

15.5 领域驱动设计与微服务架构的“合” 223

15.6 领域驱动设计与读写分离(CQRS) 224

15.7 业务分层架构模式 225

15.8 管道—过滤器架构模式 226

15.9 状态机架构模式 226

15.10 业务切面/业务闭环架构模式 228

第5部分 从架构到技术管理

第16章 个人素质的提升 232

16.1 能力模型 232

16.2 影响力的塑造 234

第17章 团队能力的提升 237

17.1 不确定性与风险把控 237

17.2 以价值为中心的管理 239

17.3 团队培养 241


基本信息

书名:架构修炼之道:亿级网关.平台开放.分布式.微服务.容错等核心

作  者:王新栋 著

定  价:79

出 版 社:电子工业出版社

出版日期:2019年03月01日

页  数:256

装  帧:平装

ISBN:9787121360374

内容介绍

《架构修炼之道——亿级网关、平台开放、分布式、微服务、容错等核心技术修炼实践》结合实际的生产实践,分别对网关、平台开放、分布式、MQ、RPC、I/O、微服务、容错的内容做了详细介绍。其中的内容不限于概念,而是会下沉到实践背后的感悟与总结。比如本书详细阐述了网关系统是如何“抗量”,又是如何容错的,以及在每次大促中的备战经验。其他内容也是如此,基于实践,源于实践,比如微服务的实战案例、MQ的各种功能场景、消息推送的实践等讲的皆是实践之道。希望读者可以通过《架构修炼之道——亿级网关、平台开放、分布式、微服务、容错等核心技术修炼实践》了解互联网常用架构知识背后的原理及解决问题之道。

《架构修炼之道——亿级网关、平台开放、分布式、微服务、容错等核心技术修炼实践》中介绍的网关、分布式、MQ等知识背后的原理,对于每一位互联网研发人员都有很大的参考意义。

作者介绍

王新栋

现就职于京东,“程序架道”公众号作者。平时热爱总结与分享,对高性能API网关、线程调优、NIO、微服务架构、容错等技术有较深的研究和实战经验。目前致力于带领团队在平台开放技术领域实现突破。

目录

第1章  网关之道

1.1  认识API网关

1.1.1  API网关是什么

1.1.2  API网关涵盖的基本功能

1.1.3  API网关架构示例

1.2  一个API的生命周期

1.2.1  什么是API

1.2.2  生命周期

1.2.3  生命周期的过程

1.3  API网关的基石—泛化调用

1.4  如何发布API到网关系统

1.5  管道技术

1.5.1  管道实现

1.5.2  如何获取管道

1.5.3  管道信息传递

1.5.4  管道的优点

1.5.5  责任链模式

1.6  一个传统网关系统有几种“死”法

1.6.1  关注CPU

1.6.2  关注磁盘

1.6.3  关注网络

1.7  Servlet 3异步原理与实践

1.7.1  什么是Servlet

1.7.2  什么是Servlet规范

1.7.3  同步、异步、阻塞、非阻塞

1.7.4  Servlet 3的异步流程

1.7.5  Servlet 3的异步使用步骤

1.7.6  Servlet 3的异步使用示例

1.7.7  Tomcat NIO Connector、Servlet 3.0 Async和Spring MVC Async的关系

1.7.8  Servlet 3非阻塞I/O

1.8  全异步网关

1.9  脱库与多级缓存

1.9.1  脱库

1.9.2  多级缓存

1.10  热更新

1.11  网关系统的七种武器

1.12  本章小结

第2章  开放之道

2.1  认识OAuth 2.0

2.1.1  什么是OAuth 2.0

2.1.2  角色

2.1.3  OAuth 2.0协议流程

2.1.4  采用OAuth 2.0协议的开放平台

2.1.5  京东宙斯开放(授权码方式场景)

2.2  开放平台

2.2.1  一名开发者的基本需求

2.2.2  完整性

2.2.3  稳定性

2.2.4  安全性

2.2.5  整体技术架构

2.2.6  意义

2.3  如何设计一套SPI应用架构

2.3.1  API和SPI区别

2.3.2  术语约定

2.3.3  业务场景

2.3.4  架构实现

2.3.5  测试

2.3.6  SPI是一种思想

2.4  讲一讲越权

2.4.1  什么是越权访问

2.4.2  越权访问的种类

2.4.3  发生越权访问的根本原因

2.4.4  如何避免与解决

2.4.5  开放平台环境下的越权访问

2.5  从Facebook数据泄漏谈开放安全

2.5.1  OAuth 2.0授权

2.5.2  数据加/解密

2.5.3  IP地址白名单

2.5.4  平台内环境

2.6  API治理

2.6.1  性能

2.6.2  可用率

2.6.3  文档可读性

2.7  API经济

2.7.1  API盈利模式

2.7.2  API市场

2.7.3  API经济价值链

2.8  沙箱环境

2.8.1  协同

2.8.2  维护

2.9  本章小结

第3章  分布式之道

3.1  认识分布式

3.2  分布式事务

3.2.1  什么是分布式事务

3.2.2  CAP和BASE理论

3.3  分布式锁

3.3.1  为什么需要分布式锁

3.3.2  分布式锁的实现方式

3.4  分布式限流

3.4.1  计数器

3.4.2  限速器

3.4.3  限流的维度

3.4.4  流量包

3.4.5  再来谈令牌桶

3.5  衡量性能的指标QPS、TPS等

3.5.1  什么是QPS

3.5.2  什么是TPS

3.5.3  什么是RT

3.5.4  什么是并发数

3.6  本章小结

第4章  MQ之道

4.1  认识JMS

4.1.1  JMS的组成

4.1.2  JMS编程模型

4.1.3  JMS消息结构

4.1.4  JMS消息模型

4.2  带着思考理解MQ下的基本概念

4.2.1  生产者—消费者(Producer-Consumer)

4.2.2  空间解耦

4.2.3  时间解耦

4.2.4  观察者模式与发布/订阅

4.3  消费幂等

4.3.1  什么是幂等操作

4.3.2  是什么引起我们关注消费幂等

4.3.3  如何处理消费幂等

4.4  详述MQ各种功能场景

4.4.1  解耦

4.4.2  削峰填谷

4.4.3  最终一致性

4.4.4  广播消费

4.4.5  使用集群消费模拟广播

4.4.6  重试之坑

4.5  数据异构的武器—MQ+canal

4.5.1  定义

4.5.2  常见应用场景

4.5.3  数据异构方向

4.5.4  数据异构的常用方法

4.5.5  binlog和MQ方式

4.6  关于MQ再问自己几个问题

4.6.1  我想自己控制开始消费如何做

4.6.2  为什么需要消息过滤

4.6.3  过期消息是怎么处理的

4.6.4  消息重试的注意点

4.6.5  为什么需要事务消息

4.6.6  消息为什么没有了顺序

4.7  本章小结

第5章  消息推送之道

5.1  认识消息推送

5.2  构建长连接推送系统之HTTP实践

5.2.1  Web网络结构及配置

5.2.2  基本配置

5.2.3  Transfer-Encoding: chunked

5.2.4  HTTP长连接系统组成结构

5.2.5  Session管理

5.2.6  心跳

5.2.7  消息接收的概念

5.2.8  消息推送的概念

5.2.9  消息追踪

5.2.10  HTTP长连接系统时序调用

5.2.11  创建会话(连接)

5.2.12  心跳逻辑

5.2.13  消息接收实例

5.2.14  消息推送实例

5.2.15  半推半拉

5.2.16  系统优化

5.2.17  测试

5.3  构建消息推送系统之Netty实践

5.3.1  启动

5.3.2  创建会话

5.3.3  心跳

5.3.4  发送消息

5.3.5  注销会话

5.3.6  黏包

5.4  一台服务器可以“跑”多少个连接

5.5  一台服务器可以“跑”多少个线程

5.6  弱网络环境