失效链接处理 |
亿��量 �pȝ��架构设计与实�?李琛�?PDF 下蝲
下蝲地址�Q?/strong>
版权归出版社和原作者所有,链接已删除,误���买正�?br style="padding: 0px; margin: 0px;" />
用户下蝲说明�Q?/strong>
�?sh��)子版仅供预览,下蝲�?4���时内务必删除,支持正版�Q�喜�Ƣ的误���买正版书�c�:
https://product.dangdang.com/11740917689.html
相关截图�Q?br /> ![]() 资料内容�Q?br /> 本书讲解亿��量�pȝ��架构的设计方法及实战�l�验�Q�在内容�l�构上分��Z��大篇�Q�架构知识篇�Q�第1�?章)�Q�主要讲解�v量用户应用后台的�l�成�l�构、高�q�发处理和服务可用性障�Q�先讲解后台由哪些关键组件构成及机房搭徏思�\�Q�然后讲解后台在应对高�ƈ发读��h��和写��h��时的通用处理手段�Q�后讲解通用的服务治理手�D�以障后台高效运行。基���服务设计���(�W?�?章)�Q�主要讲解几个基���服务的架构设计,�q�里选取的基���服务几乎为所有互联网后台所需的门�pȝ���Q�括分布式ID生成器、用��L��录服务和���量消息推送系�l�;核心服务设计���(�W?�?3章)�Q�主要讲解常见社交互动场景中所需的核心服务的架构设计�Q�括内容发布�pȝ��、通用计数�pȝ��、排行榜服务、用户关�p�L��务、Timeline Feed服务、服务和IM服务�?/span> 资料目录�Q?br /> 架构知识��?/span> �W?�?大型互联�|�公司的基础架构 2 1.1 引言�Q�单机房的内架构 2 1.2 客户端连接机房的技�?�Q�DNS 5 1.2.1 DNS的意�?5 1.2.2 域名�l�构 6 1.2.3 域名服务�?6 1.2.4 域名解析�q�程 7 1.3 客户端连接机房的技�?�Q�HTTP DNS 9 1.3.1 DNS存在的问�?9 1.3.2 HTTP DNS的原�?10 1.3.3 HTTP DNS实践 11 1.4 接入层的技术演�q?12 1.4.1 Nginx 13 1.4.2 LVS 19 1.4.3 LVS+Nginx接入层的架构 25 1.5 服务发现 28 1.5.1 注册与发�?29 1.5.2 可用地址���理 30 1.5.3 地址变更推�?31 1.6 RPC服务 32 1.7 存储层技术:MySQL 35 1.7.1 关系型数据库 35 1.7.2 MySQL 37 1.7.3 高可用架�?�Q�主从模�?37 1.7.4 高可用架�?�Q�MHA 40 1.7.5 高可用架�?�Q�MMM 41 1.7.6 高可用架�?�Q�MGR 43 1.8 存储层技术:Redis 44 1.8.1 高可用架�?�Q�主从模�?44 1.8.2 高可用架�?�Q�哨光|���?45 1.8.3 高可用架�?�Q�集���模�?46 1.8.4 高可用架�?�Q�中心化集群架构 50 1.9 存储层技术:LSM Tree 53 1.9.1 LSM Tree的原�?53 1.9.2 �?写数据流�E?56 1.10 存储层技术:其他NoSQL数据�?57 1.11 消息中间件技�?61 1.11.1 通信模式与用�?62 1.11.2 Kafka 64 1.11.3 Kafka的高可用 67 1.12 多机房:��d��机房 69 1.13 多机房:同城双活 71 1.13.1 存储层改�?71 1.13.2 灉|��实施 73 1.13.3 分流与故障切��?74 1.13.4 两地三中�?77 1.14 多机房:异地多活 78 1.14.1 架构要点 78 1.14.2 MySQL DRC的原�?80 1.14.3 Redis DRC的原�?83 1.14.4 分流�{�略 84 1.14.5 数据复制链�\ 85 1.15 本章���结 86 �W?�?通用的高�q�发架构设计 88 2.1 高�ƈ发架构设计的要点 88 2.1.1 形成高�ƈ发系�l�的要条�?88 2.1.2 高�ƈ发系�l�的衡量指标 89 2.1.3 高�ƈ发场景分�c?90 2.2 高�ƈ发读场景�Ҏ(gu��)��1�Q�数据库�?写分��?91 2.2.1 �?写分���L���?91 2.2.2 �?写请求�\由方�?91 2.2.3 ��M��延迟与解��x���?92 2.3 高�ƈ发读场景�Ҏ(gu��)��2�Q�本地缓�?93 2.3.1 基本的缓存淘汰策�?93 2.3.2 W-TinyLFU�{�略 94 2.3.3 �~�存�ȝ��与SingleFlight 95 2.4 高�ƈ发读场景�Ҏ(gu��)��3�Q�分布式�~�存 100 2.4.1 分布式缓存选型 100 2.4.2 如何使用Redis�~�存 101 2.4.3 �~�存�I�K�?102 2.4.4 �~�存雪崩 103 2.4.5 �~�存更新 103 2.5 高�ƈ发读场景�ȝ���Q�CQRS 105 2.5.1 CQRS的简要架构与实现 106 2.5.2 更多的��用场�?107 2.5.3 CQRS架构的点 108 2.6 高�ƈ发写场景�Ҏ(gu��)��1�Q�数据分片之数据库分库分�?108 2.6.1 分库和分�?109 2.6.2 垂直拆分 109 2.6.3 水��^拆分 111 2.6.4 水��^拆分规则 113 2.6.5 扩容�Ҏ(gu��)�� 117 2.6.6 其他数据分片形式 120 2.7 高�ƈ发写场景�Ҏ(gu��)��2�Q�异步写与写聚合 120 2.7.1 异步�?121 2.7.2 写聚�?122 2.8 本章���结 122 �W?�?通用的服务可用性治理手�D?124 3.1 微服务架构与�|�络调用 124 3.2 重试 126 3.2.1 �q�等接口 126 3.2.2 重试时机 130 3.2.3 重试风险与重试风�?130 3.2.4 重试控制�Q�不重试的请�?131 3.2.5 重试控制�Q�重试请求比 132 3.3 熔断与隔��?132 3.3.1 服务雪崩 133 3.3.2 Hystrix熔断�?134 3.3.3 Resilience4j和Sentinel熔断�?136 3.3.4 �׃�n资源与舱壁隔��?137 3.3.5 舱壁隔离的实�?138 3.4 限流 139 3.4.1 频控 140 3.4.2 单机限流1�Q�时间窗�?141 3.4.3 单机限流2�Q�漏桶算�?143 3.4.4 单机限流3�Q���o牌桶���法 144 3.4.5 全局限流 146 3.5 自适应限流 148 3.5.1 服务与等待队�?149 3.5.2 ��Z����h��排队旉��� 150 3.5.3 ��Z��延迟比率 151 3.5.4 其他�Ҏ(gu��)�� 152 3.6 降��{�略 155 3.6.1 服务依赖度降�U?155 3.6.2 读请求降�U?158 3.6.3 写请求降�U?159 3.7 本章���结 160 基础服务设计��?/span> �W?�?ID生成�?164 4.1 分布式ID 164 4.1.1 全局与UUID 164 4.1.2 ID生成器的�?165 4.1.3 单调递增与趋劉K��增 167 4.2 单调递增的ID 168 4.2.1 Redis INCRBY命��o 168 4.2.2 ��Z��数据库的自增主键 171 4.2.3 高可用架�?172 4.3 ���势递增的ID�Q�基于时间戳 174 4.3.1 正确使用旉����?174 4.3.2 Snowflake���法 175 4.3.3 Snowflake���法的灵�z�d���?175 4.3.4 分配服务实例ID 177 4.3.5 旉���回拨问题与解��x���?179 4.3.6 架构 179 4.4 ���势递增的ID�Q�基于数据库的自增主�?180 4.4.1 分库分表架构 181 4.4.2 扚w���~�存架构 182 4.5 ���团点评开源方案:Leaf 183 4.5.1 Leaf-segment�Ҏ(gu��)�� 183 4.5.2 Leaf-snowflake�Ҏ(gu��)�� 185 4.6 本章���结 187 �W?�?用户��d��服务 189 5.1 用户账号 189 5.2 用户��d��服务的功能要�?190 5.3 密码�?192 5.3.1 使用HTTPS通信 192 5.3.2 非对�U�加�?193 5.3.3 密码加密存储 194 5.4 手机��L��录和邮箱��d�� 194 5.4.1 数据表设�?195 5.4.2 用户注册 195 5.4.3 用户��d�� 196 5.4.4 手机号一键登�?197 5.5 �W�三方登�?199 5.5.1 OAuth 2标准 200 5.5.2 客户端接入第三方��d�� 201 5.5.3 服务端接入第三方��d�� 202 5.5.4 �W�三方登录的完整���程�ȝ�� 203 5.6 ��d��态管�?204 5.6.1 存储型方案:Session 205 5.6.2 计算型方案:令牌 207 5.6.3 长短令牌�Ҏ(gu��)�� 208 5.7 扫码��d�� 210 5.7.1 二维�?210 5.7.2 扫码��d��的场景介�l?211 5.7.3 扫码��d��的技术实�?211 5.8 本章���结 213 �W?�?���量推送系�l?215 6.1 分布式长�q�接服务的技术要素分�?216 6.1.1 WebSocket协议����?216 6.1.2 长连接服务器 217 6.1.3 分布式推送服务器 218 6.1.4 路由���法 219 6.2 ���量推送系�l�设�?220 6.2.1 整体架构设计 220 6.2.2 长连接的建立�q�程 221 6.2.3 消息格式设计 222 6.2.4 消息推送接�?223 6.2.5 单点消息推送的�l�节 224 6.2.6 全局消息推送的�l�节 225 6.2.7 多点消息推送的�l�节 226 6.2.8 pusher�q�x��升��的问�?227 6.2.9 pusher扩容的问�?236 6.3 本章���结 237 核心服务设计��?/span> �W?�?内容发布�pȝ�� 240 7.1 内容发布�pȝ��的设计背�?240 7.2 内容存储设计 241 7.2.1 内容数据的存�?241 7.2.2 内容元信息的存储 243 7.2.3 内容��M��的存储选型 244 7.2.4 韌���频�{�?245 7.3 内容审核设计 246 7.3.1 内容审核的要�?246 7.3.2 内容的审核时机策�?246 7.3.3 如何审核内容 247 7.3.4 审核中心的对外交�?249 7.4 内容的全生命周期���理设计 250 7.4.1 内容的创������?250 7.4.2 内容的修改设�?252 7.4.3 内容审核�l�果处理与版本控制设�?254 7.4.4 内容的删除与下架设计 256 7.5 内容分发设计 256 7.5.1 内容分发渠道 256 7.5.2 何时通知分发渠道 257 7.5.3 ���内�Ҏ(gu��)��递到分发渠道 257 7.6 内容展示设计 258 7.6.1 内容数据的点 259 7.6.2 使用CDN加速静态资源访�?259 7.6.3 使用�~�存和多副本支撑高�ƈ发读�?260 7.6.4 内容展示���程设计 263 7.7 完整架构总览 265 7.8 本章���结 267 �W?�?通用计数�pȝ�� 268 8.1 计数的常见用�?268 8.2 如何存储计数数据 269 8.2.1 计数数据的点 269 8.2.2 关系型数据库的困�?270 8.2.3 是否要��用关�p�d��数据�?270 8.2.4 使用Redis存储计数数据 271 8.3 ���量计数服务设计 272 8.3.1 Redis数据�c�d�� 272 8.3.2 计数累计与读取的�C�Z�� 274 8.3.3 化内存的调研 274 8.3.4 化内存:定制化Redis 276 8.3.5 ��L��数据分离 279 8.3.6 应对�q�热数据 280 8.3.7 计数服务架构�?281 8.3.8 计数服务的适用范围 282 8.4 本章���结 283 �W?�?排行榜服�?284 9.1 排行榜的应用场景 284 9.2 排行榜技术的�?285 9.3 使用Redis实现排行�?285 9.3.1 使用Redis ZSET 286 9.3.2 �q�等更新 287 9.3.3 同积分排名处�?289 9.3.4 服务设计 291 9.3.5 关于大Key的问�?295 9.4 �_�估排行榜的实现 296 9.4.1 �U�段�?296 9.4.2 �_�估排名的实�?299 9.5 ���排名与�_�估排名�l�合 306 9.6 本章���结 309 �W?0�?用户关系服务 310 10.1 用户关系服务的职�?310 10.2 ��Z��Redis ZSET的设�?311 10.3 ��Z��数据库的设计 312 10.3.1 初的��x�� 312 10.3.2 应对分库分表 313 10.3.3 Following表的索引设计 314 10.3.4 Follower表的索引设计 316 10.3.5 �q�:回表问题与化 316 10.3.6 ��x��数和�?317 10.4 �~�存查询 318 10.4.1 �~�存什么数�?318 10.4.2 �~�存的创��Z��更新�{�略 319 10.4.3 本地�~�存 321 10.4.4 �~�存与数据库�l�合的方�?321 10.5 ��Z��图数据库的设�?323 10.5.1 实现用户关系 323 10.5.2 应用权衡 327 10.6 本章���结 328 �W?1�?Timeline Feed服务 330 11.1 Feed���的分类 330 11.2 Timeline Feed���的功能�?331 11.3 拉模式与用户发�g��?331 11.4 推模式与用户收�g��?333 11.5 推拉�l�合模式 334 11.5.1 �l�合思�\ 334 11.5.2 区分�z�跃用户 335 11.6 实现Timeline Feed服务的关键技术细�?336 11.6.1 内容与用��h��件箱的交�?336 11.6.2 推送子��d�� 338 11.6.3 收�g���存什么数�?339 11.6.4 读请求参�?340 11.6.5 使用数据库实现收件箱 340 11.6.6 使用Redis ZSET实现收�g��?343 11.6.7 通过推拉�l�合模式构徏Timeline Feed数据 348 11.6.8 收尾工作 355 11.7 本章���结 356 �W?2�?服务 357 12.1 功能 357 12.2 列表模式 358 12.3 服务设计的初步想�?361 12.4 单��模式服务设计 361 12.4.1 数据表的初步设计 361 12.4.2 �?写接口与索引 362 12.4.3 数据库的设计 363 12.4.4 高�ƈ发问�?364 12.5 盖楼模式服务设计 366 12.5.1 数据库方案:递归查询 366 12.5.2 数据库方案:存完整楼�?368 12.5.3 图数据库�Ҏ(gu��)�� 369 12.6 二��模式服务设计 370 12.6.1 数据�?371 12.6.2 旉�����序�Q�数据库�Ҏ(gu��)�� 371 12.6.3 旉�����序�Q�图数据库方�?373 12.6.4 审核与状�?376 12.6.5 按照热度排序 377 12.6.6 高�ƈ发处�?381 12.6.7 架构总览 385 12.7 本章���结 386 �W?3�?IM服务 388 13.1 IM的意义与核心 388 13.2 IM相关概念 389 13.3 消息投�?390 13.3.1 存储消息�Q�读扩散与写扩散 390 13.3.2 接收消息�Q�拉模式与推模式 393 13.4 存储初探 395 13.5 消息的有序性证 396 13.5.1 消息乱序 396 13.5.2 客户端发送消�?396 13.5.3 服务端存储消�?397 13.5.4 服务端推送消息与客户端补�?398 13.6 会话���理与命令消�?401 13.6.1 创徏单聊会话 402 13.6.2 创徏���聊会话 402 13.6.3 命��o消息 403 13.7 消息回执 404 13.7.1 上报已读消息 404 13.7.2 记录已读消息 404 13.8 �D�|��汇总:存储设计 405 13.9 高�ƈ发架�?408 13.9.1 发送消�?409 13.9.2 数据�~�存 409 13.9.3 消息分�� 410 13.9.4 直播间弹�q�模�?411 13.10 本章���结�Q�架�?413 |