本书由数十位一线架构师的实践与经验凝结而成,选材兼顾技术性、前瞻性与专业深度。各技术焦点,均由具有代表性的领域专家或实践先行者撰文深度剖析,共同组成“高可用”的全局视野与经验丰富高度,内容包括精华案例、分布式原理、电商架构等热门专题,及云计算、容器、运维、大数据、安全等重点方向。不仅架构师可以从中受益,其他IT、互联网技术从业者同样可以得到提升
√ 星光熠熠的技术翘楚
√ 匠心独具的破局思路
√ 业界首创的一线实践
√ 千锤百炼的专题精华
杨卫华,现任新浪微博研发部副总经理,多年软件及互联网行业开发经验,2008年加入新浪,曾负责通讯服务等多个大型后端系统研发。自2009年起参与新浪微博的技术架构工作,在海量及峰值访问、大数据、NoSQL存储、异地机房分布式架构及开放平台等方面参与并推动多次技术架构改进,经历新浪微博从起步到成为数亿用户的大型互联网系统的技术演进过程。
第1 章 高可用架构案例精选 1
郭斯杰/1.1 Twitter 高性能分布式日志系统架构解析 1
1.1.1 为什么需要分布式日志. 1
1.1.2 Twitter 如何考虑这个问题 4
1.1.3 基于Apache BookKeeper 构建DistributeLog 5
1.1.4 DistributeLog 案例分享13
1.1.5 疑问与解惑.13
颜国平/1.2 腾讯基于用户画像大数据的电商防刷架构.16
1.2.1 背景介绍16
1.2.2 黑产现状介绍16
1.2.3 腾讯内部防刷架构18
1.2.4 腾讯大数据收集维度.20
1.2.5 腾讯大数据处理平台——魔方21
1.2.6 疑问与解惑.24
王渊命/1.3 如何设计类似微信的多终端数据同步协议:Grouk 实践分享.26
1.3.1 移动互联网时代多终端数据同步面临的挑战26
1.3.2 多终端数据同步与传统消息投递协议的差异27
1.3.3 Grouk 在多终端数据同步协议上的探索实践.28
1.3.4 疑问与解惑.32
周 洋/1.4 如何实现支持数亿用户的长连消息系统:Golang 高并发案例33
1.4.1 关于push 系统对比与性能指标的讨论.33
1.4.2 消息系统架构介绍35
1.4.3 哪些因素决定推送系统的效果37
1.4.4 GO 语言开发问题与解决方案.38
1.4.5 消息系统的运维及测试41
1.4.6 疑问与解惑.42
唐福林/1.5 雪球在股市风暴下的高可用架构改造分享.46
1.5.1 雪球公司的介绍46
1.5.2 雪球当前总体架构47
1.5.3 雪球架构优化历程48
1.5.4 关于架构优化的总结和感想.53
1.5.5 疑问与解惑.54
麦俊生/1.6 亿级短视频社交美拍架构实战59
1.6.1 短视频市场的发展59
1.6.2 美拍的发展.60
1.6.3 短视频所面临的架构问题61
1.6.4 为支持亿级用户,美拍架构所做的一些改进62
1.6.5 后续发展68
刘道儒/1.7 微博“异地多活”部署经验谈69
1.7.1 微博异地多活建设历程69
1.7.2 微博异地多活面临的挑战70
1.7.3 异地多活的实践.73
1.7.4 异地多活的新方向74
孙宇聪/1.8 来自Google 的高可用架构理念与实践75
1.8.1 决定可用性的两大因素76
1.8.2 高可用性方案77
1.8.3 可用性7 级图表80
1.8.4 疑问与解惑.81
那 谁/1.9 深入理解同步/异步与阻塞/非阻塞区别84
1.9.1 同步与异步.84
1.9.2 阻塞与非阻塞85
1.9.3 与多路复用I/O 的联系86
第2 章 高可用架构原理与分布式实践.88
黄东旭/2.1 Codis 作者细说分布式Redis 架构设计88
2.1.1 Redis、Redis Cluster 和Codis88
2.1.2 我们更爱一致性90
2.1.3 Codis 在生产环境中的使用经验和坑91
2.1.4 分布式数据库和分布式架构.94
2.1.5 疑问与解惑.95
霍泰稳/2.2 给你介绍一个不一样的硅谷.98
2.2.1 Uber .98
2.2.2 Coursera.99
2.2.3 Airbnb102
2.2.4 硅谷行带给我的一些影响106
2.2.5 疑问与解惑106
金自翔/2.3 解耦的艺术——大型互联网业务系统的插件化改造110
2.3.1 插件化.110
2.3.2 如何处理用户交互115
2.3.3 如何处理数据.115
2.3.4 总结116
沈 剑/2.4 从零开始搭建高可用IM 系统117
2.4.1 什么是IM117
2.4.2 协议设计118
2.4.3 WEB 聊天室.122
2.4.4 IM 典型业务场景126
2.4.5 疑问与解惑126
陈宗志/2.5 360 分布式存储系统Bada 的架构设计和应用.129
2.5.1 主要应用场景.129
2.5.2 整体架构130
2.5.3 主要模块131
2.5.4 数据分布策略.132
2.5.5 请求流程133
2.5.6 多机房架构134
2.5.7 FAQ138
2.5.8 疑问与解惑139
张 亮/2.6 新一代分布式任务调度框架:Elastic-Job 开源项目
的10 项特性143
2.6.1 为什么需要作业(定时任务).143
2.6.2 之前使用的作业系统144
2.6.3 Elastic-Job 的来历.144
2.6.4 Elastic-Job 包含的功能145
2.6.5 Elastic-Job 的部署和使用.146
2.6.6 对开源产品的开发理念.147
2.6.7 未来展望148
2.6.8 疑问与解惑149
付海军/2.7 互联网DSP 广告系统架构及关键技术解析152
2.7.1 DSP 系统的特点152
2.7.2 程序化购买的特点153
2.7.3 在线广告的核心问题156
2.7.4 在线广告的挑战.156
2.7.5 DSP 系统架构.157
2.7.6 RTB 投放引擎的架构.158
2.7.7 DMP160
2.7.8 广告系统DMP 数据处理的架构.160
2.7.9 用户画像的方法.162
2.7.10 广告行业的反作弊.165
2.7.11 P2P 流量互刷166
2.7.12 CPS 引流作弊167
2.7.13 疑问与解惑168
王卫华/2.8 亿级规模的Elasticsearch 优化实战170
2.8.1 索引性能(Index Performance) .170
2.8.2 查询性能(Query Perofrmance) 171
2.8.3 其他173
2.8.4 疑问与解惑174
杨卫华/2.9 微博分布式存储考试题:案例讲解及作业精选179
2.9.1 访问场景179
2.9.2 设计180
2.9.3 sharding 策略180
2.9.4 案例精选181
李 凯/2.10 架构师需要了解的Paxos 原理、历程及实战.184
2.10.1 数据库高可用性难题184
2.10.2 Paxos 协议简单回顾.185
2.10.3 Basic Paxos 同步日志的理论模型186
2.10.4 Multi Paxos 的实际应用.187
2.10.5 依赖时钟误差的变种Paxos 选主协议简单分析190
2.10.6 疑问与解惑191
温 铭/2.11 OpenResty 的现在和未来193
2.11.1 OpenResty 是什么,适合什么场景下使用.193
2.11.2 某安全公司服务端技术选型的标准194
2.11.3 如何在项目中引入新技术.196
2.11.4 如何入门以及学习的正确方法197
2.11.5 OpenResty 中的测试和调试.199
2.11.6 NginScript 是否会替代OpenResty201
2.11.7 未来重点解决的问题和新增特性.202
2.11.8 开源社区建设203
2.11.9 疑问与解惑.203
第3 章 电商架构热点专题.205
张开涛/3.1 亿级商品详情页架构演进技术解密.205
3.1.1 商品详情页205
3.1.2 商品详情页发展史209
3.1.3 遇到的一些问题和解决方案220
3.1.4 总结228
3.1.5 疑问与解惑229
杨 超/3.2 大促系统全流量压测及稳定性保障——京东交易架构.232
3.2.1 交易系统的三个阶段232
3.2.2 交易系统的三层结构233
3.2.3 交易系统的访问特征234
3.2.4 应对大促的第1 步:全链路全流量线上压测.234
3.2.5 应对大促的第2 步:根据压力表现进行调优.237
3.2.6 异步和异构240
3.2.7 应对大促的第3 步:分流与限流242
3.2.8 应对大促的第4 步:容灾降级.244
3.2.9 应对大促的第5 步:完善监控.245
3.2.10 疑问与解惑246
吕 毅/3.3 秒杀系统架构解密与防刷设计.248
3.3.1 抢购业务介绍.248
3.3.2 具体抢购项目中的设计.249
3.3.3 如何解耦前后端压力250
3.3.4 如何保障商品库的库存252
3.3.5 如何与第三方多方对账.254
3.3.6 项目总结255
3.3.7 疑问与解惑255
王富平/3.4 Lambda 架构与推荐在电商网站实践.257
3.4.1 Lambda 架构257
3.4.2 1 号店推荐系统实践260
3.4.3 Lambda 的未来262
3.4.4 思考263
3.4.5 疑问与解惑263
杨 硕/3.5 某公司线上真实流量压测工具构建.265
3.5.1 为什么要开发一个通用的压测工具265
3.5.2 常见的压测工具.266
3.5.3 构建自己的压测工具266
3.5.4 疑问与解惑271
第4 章 容器与云计算.273
陈 飞/4.1 微博基于Docker 容器的混合云迁移实战.273
4.1.1 为什么要采用混合云的架构273
4.1.2 跨云的资源管理与调度.275
4.1.3 容器的编排与服务发现.278
4.1.4 混合云监控体系.284
4.1.5 前进路上遇到的那些坑.286
4.1.6 疑问与解惑286
高 磊/4.2 互联网金融创业公司Docker 实践287
4.2.1 背景介绍287
4.2.2 容器选型287
4.2.3 应用迁移288
4.2.4 弹性扩容291
4.2.5 未来规划295
4.2.6 疑问与解惑295
高永超/4.3 使用开源Calico 构建Docker 多租户网络.297
4.3.1 PaaS 平台的网络需求.297
4.3.2 使用Calico 实现Docker 的跨服务器通讯.298
4.3.3 利用Profile 实现ACL301
4.3.4 性能测试306
4.3.5 Calico 的发展308
4.3.6 疑问与解惑309
彭哲夫/4.4 解析Docker 在芒果TV 的实践之路310
4.4.1 豆瓣时期310
4.4.2 芒果TV 的Nebulium Engine .311
4.4.3 Project Eru .312
4.4.4 细节313
4.4.5 网络314
4.4.6 存储315
4.4.7 Scale316
4.4.8 资源分配和集群调度316
4.4.9 服务发现和安全.317
4.4.10 实例317
4.4.11 总结318
4.4.12 疑问与解惑318
王关胜/4.5 微博基于Docker 的混合云平台设计与实践323
4.5.1 微博的业务场景及混合云背景.323
4.5.2 三大基础设施助力微博混合云.326
4.5.3 微博混合云DCP 系统设计核心:自动化、弹性调度328
4.5.4 引入阿里云作为第3 机房,实现弹性调度架构330
4.5.5 大规模集群操作自动化.331
4.5.6 不怕峰值事件.332
第5 章 运维保障333
王 康/5.1 360 如何用QConf 搞定两万以上服务器的配置管理.333
5.1.1 设计初衷333
5.1.2 整体认识334
5.1.3 架构介绍335
5.1.4 QConf 服务端336
5.1.5 QConf 客户端336
5.1.6 QConf 管理端340
5.1.7 其他341
5.1.8 疑问与解惑343
尤 勇/5.2 深度剖析开源分布式监控CAT347
5.2.1 背景介绍347
5.2.2 整体设计348
5.2.3 客户端设计349
5.2.4 服务端设计352
5.2.5 总结感悟357
杨尚刚/5.3 单表60 亿记录等大数据场景的MySQL 优化和运维之道359
5.3.1 前言359
5.3.2 数据库开发规范.360
5.3.3 数据库运维规范.363
5.3.4 性能优化368
5.3.5 疑问与解惑375
秦 迪/5.4 微博在大规模、高负载系统问题排查方法379
5.4.1 背景379
5.4.2 排查方法及线索.379
5.4.3 总结384
5.4.4 疑问与解惑385
秦 迪/5.5 系统运维之为什么每个团队存在大量烂代码387
5.5.1 写烂代码很容易.387
5.5.2 烂代码终究是烂代码388
5.5.3 重构
这本成型于两年前的书,完整地见证了技术社交圈刚刚兴起的年代,充满了时代感,让我能够回忆起那段并不遥远的愉快历史。书中很多文章的作者在这短短两年里,已经迅速提升,成为了各个公司的骨干人员。我很愿意推荐这本书,相信它能为愿意踏上技术的同学提供帮助。
张亮 架构部总监
系统的高可用架构梳理,各大互联网公司的高可用实践,能落地的高可用细节,相信不管在互联网做技术多少年,阅读本书后,你一定会有收获,推荐。
58沈剑 架构师之路作者
2017年我国移动互联网用户已经突破7亿,互联网用户可以选择的服务越来越丰富。而互联网服务的可用性,直接关乎提供这些互联网服务的公司的营收和业绩报表。众多的流量涌入互联网公司的服务器,在高并发的场景下,使用高可用架构会有效改善服务的可用性。本书汇集了业界很多经验丰富公司在高可用方向上的实践经验,以及在各类业务场景下实现高可用架构的实操案例,希望本书能给你带来在高可用架构设计上的一些启发。
付海军 时趣互动技术总监
很高兴看到《高可用架构(第1卷)》一书的面世,更高兴看到杨卫华老师的“高可用架构”公众号还在坚持运营,这是技术社区的福音。架构的重要性不言而喻,这本书里除了我的篇章外,每篇文章都阐述了和架构相关的一个技术点,而且都包含了一线研发人员的实际经验,相信你会很感兴趣并收获多多。
霍泰稳 极客邦科技创始人兼CEO
《高可用架构(第1卷)》在讲述高可用架构的理论知识之外,更重要的是收录了众多知名互联网公司专家骨干的一线实战经验,包含了各个团队在面对业界前沿的棘手问题时所做的探索和取舍,相信各位读者在读完本书之后会对架构这个话题有全新的认识。
秦迪 微博平台及大数据技术专家
在近这两三年里,国内的技术社群飞速发展,“高可用架构”便是其中的代表,它汇聚了国内中的一批真正的技术专家,专注技术的分享和交流。这本书是现在中国互联网技术发展的一个缩影,见证了它从封闭走向分享和开放,从跟随走向参与和引领。
希望每个工程师都能读读这本书,体会技术带来的乐趣。
温铭 OpenResty Inc. 合伙人,工程师
在学习编程时,我们有很多教程类的书籍可利用,但要学习架构,就很难有教程了。而这本书的内容是直接来自一线的架构实践经验总结,虽然内容跨度比较大,但这正是在其他教程类型的书中很难学习到的,所以推荐给进阶的研发人员。另外,即便同在软件研发行业,细分起来,领域的区隔还是很大的,看看同行的一些实践经验,即便不能拿来直接用,但对解决自己面临的难题还是会有帮助的。
王渊命 青云容器平台负责人,前微博架构师,技术写作者