幫助中心 | 我的帳號 | 關於我們

億級流量系統架構設計與實戰

  • 作者:編者:李琛軒|責編:張國霞
  • 出版社:電子工業
  • ISBN:9787121476983
  • 出版日期:2024/05/01
  • 裝幀:平裝
  • 頁數:415
人民幣:RMB 128 元      售價:
放入購物車
加入收藏夾

內容大鋼
    本書涵蓋了億級用戶應用後台通用的技術和系統架構設計思路,在內容結構上分為三大篇:架構知識篇(第1?3章),作為全書的基礎知識篇,首先介紹後台的關鍵組件構成以及機房的搭建思路,然後介紹後台在應對高併發的讀/寫請求時通用的處理手段,最後介紹如何通過通用的服務治理手段來保障後台的高質量運行;基礎服務設計篇(第4?6章),主要講解基礎服務的架構設計,這裡選取的基礎服務幾乎是所有互聯網後台都需要的專門系統,包括唯一ID生成器、用戶登錄服務和海量推送系統;核心服務設計篇(第7?13章),主要講解在常見的社交互動場景中所需核心服務的架構設計,包括內容發布系統、通用計數系統、排行榜服務、用戶關係服務、TimelineFeed服務、評論服務和IM服務。
    本書的適用人群包括電腦相關專業的學生、希望尋求大廠軟體開發工程師崗位的求職者,以及各信息技術類公司的後台研發工程師、架構師和技術管理人員。

作者介紹
編者:李琛軒|責編:張國霞
    李琛軒,資深後台研發工程師,擁有8年互聯網後台開發經驗,現任某全球社交產品後台子方向負責人。從事互聯網社交產品領域的研發與架構設計工作多年,從業以來負責過多個知名產品的後台開發工作,相繼深耕于消息隊列、服務發現系統、服務治理、分散式事務、高併發架構設計、全球多活等技術領域。

目錄
架構知識篇
第1章  大型互聯網公司的基礎架構
  1.1  引言:單機房的內部架構
  1.2  客戶端連接機房的技術1:DNS
    1.2.1  DNS的意義
    1.2.2  域名結構
    1.2.3  域名伺服器
    1.2.4  域名解析過程
  1.3  客戶端連接機房的技術2:HTTP DNS
    1.3.1  DNS存在的問題
    1.3.2  HTTP DNS的原理
    1.3.3  HTTP DNS實踐
  1.4  接入層的技術演進
    1.4.1  Nginx
    1.4.2  LVS
    1.4.3  LVS+Nginx接入層的架構
  1.5  服務發現
    1.5.1  註冊與發現
    1.5.2  可用地址管理
    1.5.3  地址變更推送
  1.6  RPC服務
  1.7  存儲層技術:MySQL
    1.7.1  關係型資料庫
    1.7.2  MySQL
    1.7.3  高可用架構1:主從模式
    1.7.4  高可用架構2:MHA
    1.7.5  高可用架構3:MMM
    1.7.6  高可用架構4:MGR
  1.8  存儲層技術:Redis
    1.8.1  高可用架構1:主從模式
    1.8.2  高可用架構2:哨兵模式
    1.8.3  高可用架構3:集群模式
    1.8.4  高可用架構4:中心化集群架構
  1.9  存儲層技術:LSM Tree
    1.9.1  LSM Tree的原理
    1.9.2  讀/寫數據流程
  1.10  存儲層技術:其他NoSQL資料庫
  1.11  消息中間件技術
    1.11.1  通信模式與用途
    1.11.2  Kafka
    1.11.3  Kafka的高可用
  1.12  多機房:主備機房
  1.13  多機房:同城雙活
    1.13.1  存儲層改造
    1.13.2  靈活實施
    1.13.3  分流與故障切流
    1.13.4  兩地三中心
  1.14  多機房:異地多活
    1.14.1  架構要點
    1.14.2  MySQL DRC的原理

    1.14.3  Redis DRC的原理
    1.14.4  分流策略
    1.14.5  數據複製鏈路
  1.15  本章小結
第2章  通用的高併發架構設計
  2.1  高併發架構設計的要點
    2.1.1  形成高併發系統的必要條件
    2.1.2  高併發系統的衡量指標
    2.1.3  高併發場景分類
  2.2  高併發讀場景方案1:資料庫讀/寫分離
    2.2.1  讀/寫分離架構
    2.2.2  讀/寫請求路由方式
    2.2.3  主從延遲與解決方案
  2.3  高併發讀場景方案2:本地緩存
    2.3.1  基本的緩存淘汰策略
    2.3.2  W-TinyLFU策略
    2.3.3  緩存擊穿與SingleFlight
  2.4  高併發讀場景方案3:分散式緩存
    2.4.1  分散式緩存選型
    2.4.2  如何使用Redis緩存
    2.4.3  緩存穿透
    2.4.4  緩存雪崩
    2.4.5  緩存更新
  2.5  高併發讀場景總結:CQRS
    2.5.1  CQRS的簡要架構與實現
    2.5.2  更多的使用場景
    2.5.3  CQRS架構的特點
  2.6  高併發寫場景方案1:數據分片之資料庫分庫分表
    2.6.1  分庫和分表
    2.6.2  垂直拆分
    2.6.3  水平拆分
    2.6.4  水平拆分規則
    2.6.5  擴容方案
    2.6.6  其他數據分片形式
  2.7  高併發寫場景方案2:非同步寫與寫聚合
    2.7.1  非同步寫
    2.7.2  寫聚合
  2.8  本章小結
第3章  通用的服務可用性治理手段
  3.1  微服務架構與網路調用
  3.2  重試
    3.2.1  冪等介面
    3.2.2  重試時機
    3.2.3  重試風險與重試風暴
    3.2.4  重試控制:不重試的請求
    3.2.5  重試控制:重試請求比
  3.3  熔斷與隔離
    3.3.1  服務雪崩
    3.3.2  Hystrix熔斷器
    3.3.3  Resilience4j和Sentinel熔斷器

    3.3.4  共享資源與艙壁隔離
    3.3.5  艙壁隔離的實現
  3.4  限流
    3.4.1  頻控
    3.4.2  單機限流1:時間窗口
    3.4.3  單機限流2:漏桶演算法
    3.4.4  單機限流3:令牌桶演算法
    3.4.5  全局限流
  3.5  自適應限流
    3.5.1  服務與等待隊列
    3.5.2  基於請求排隊時間
    3.5.3  基於延遲比率
    3.5.4  其他方案
  3.6  降級策略
    3.6.1  服務依賴度降級
    3.6.2  讀請求降級
    3.6.3  寫請求降級
  3.7  本章小結
基礎服務設計篇
第4章  唯一ID生成器
  4.1  分散式唯一ID
    4.1.1  全局唯一與UUID
    4.1.2  唯一ID生成器的特點
    4.1.3  單調遞增與趨勢遞增
  4.2  單調遞增的唯一ID
    4.2.1  Redis INCRBY命令
    4.2.2  基於資料庫的自增主鍵
    4.2.3  高可用架構
  4.3  趨勢遞增的唯一ID:基於時間戳
    4.3.1  正確使用時間戳
    4.3.2  Snowflake演算法
    4.3.3  Snowflake演算法的靈活應用
    4.3.4  分配服務實例ID
    4.3.5  時鐘回撥問題與解決方案
    4.3.6  最終架構
  4.4  趨勢遞增的唯一ID:基於資料庫的自增主鍵
    4.4.1  分庫分表架構
    4.4.2  批量緩存架構
  4.5  美團點評開源方案:Leaf
    4.5.1  Leaf-segment方案
    4.5.2  Leaf-snowflake方案
  4.6  本章小結
第5章  用戶登錄服務
  5.1  用戶賬號
  5.2  用戶登錄服務的功能要點
  5.3  密碼保護
    5.3.1  使用HTTPS通信
    5.3.2  非對稱加密
    5.3.3  密碼加密存儲
  5.4  手機號登錄和郵箱登錄

    5.4.1  數據表設計
    5.4.2  用戶註冊
    5.4.3  用戶登錄
    5.4.4  手機號一鍵登錄
  5.5  第三方登錄
    5.5.1  OAuth 2標準
    5.5.2  客戶端接入第三方登錄
    5.5.3  服務端接入第三方登錄
    5.5.4  第三方登錄的完整流程總結
  5.6  登錄態管理
    5.6.1  存儲型方案:Session
    5.6.2  計算型方案:令牌
    5.6.3  長短令牌方案
  5.7  掃碼登錄
    5.7.1  二維碼
    5.7.2  掃碼登錄的場景介紹
    5.7.3  掃碼登錄的技術實現
  5.8  本章小結
第6章  海量推送系統
  6.1  分散式長連接服務的技術要素分析
    6.1.1  WebSocket協議簡介
    6.1.2  長連接伺服器
    6.1.3  分散式推送伺服器
    6.1.4  路由演算法
  6.2  海量推送系統設計
    6.2.1  整體架構設計
    6.2.2  長連接的建立過程
    6.2.3  消息格式設計
    6.2.4  消息推送介面
    6.2.5  單點消息推送的細節
    6.2.6  全局消息推送的細節
    6.2.7  多點消息推送的細節
    6.2.8  pusher平滑升級的問題
    6.2.9  pusher擴容的問題
  6.3  本章小結
核心服務設計篇
第7章  內容發布系統
  7.1  內容發布系統的設計背景
  7.2  內容存儲設計
    7.2.1  內容數據的存儲
    7.2.2  內容元信息的存儲
    7.2.3  內容主體的存儲選型
    7.2.4  音視頻轉碼
  7.3  內容審核設計
    7.3.1  內容審核的必要性
    7.3.2  內容的審核時機策略
    7.3.3  如何審核內容
    7.3.4  審核中心的對外交互
  7.4  內容的全生命周期管理設計
    7.4.1  內容的創建設計

    7.4.2  內容的修改設計
    7.4.3  內容審核結果處理與版本控制設計
    7.4.4  內容的刪除與下架設計
  7.5  內容分發設計
    7.5.1  內容分發渠道
    7.5.2  何時通知分發渠道
    7.5.3  將內容投遞到分發渠道
  7.6  內容展示設計
    7.6.1  內容數據的特點
    7.6.2  使用CDN加速靜態資源訪問
    7.6.3  使用緩存和多副本支撐高併發讀取
    7.6.4  內容展示流程設計
  7.7  完整架構總覽
  7.8  本章小結
第8章  通用計數系統
  8.1  計數的常見用途
  8.2  如何存儲計數數據
    8.2.1  計數數據的特點
    8.2.2  關係型資料庫的困境
    8.2.3  是否要使用關係型資料庫
    8.2.4  使用Redis存儲計數數據
  8.3  海量計數服務設計
    8.3.1  Redis數據類型
    8.3.2  計數累計與讀取的示例
    8.3.3  優化內存的調研
    8.3.4  優化內存:定製化Redis
    8.3.5  冷熱數據分離
    8.3.6  應對過熱數據
    8.3.7  計數服務架構圖
    8.3.8  計數服務的適用範圍
  8.4  本章小結
第9章  排行榜服務
  9.1  排行榜的應用場景
  9.2  排行榜技術的特點
  9.3  使用Redis實現排行榜
    9.3.1  使用Redis ZSET
    9.3.2  冪等更新
    9.3.3  同積分排名處理
    9.3.4  服務設計
    9.3.5  關於大Key的問題
  9.4  粗估排行榜的實現
    9.4.1  線段樹
    9.4.2  粗估排名的實現
  9.5  精確排名與粗估排名結合
  9.6  本章小結
第10章  用戶關係服務
  10.1  用戶關係服務的職責
  10.2  基於Redis ZSET的設計
  10.3  基於資料庫的設計
    10.3.1  最初的想法

    10.3.2  應對分庫分表
    10.3.3  Following表的索引設計
    10.3.4  Follower表的索引設計
    10.3.5  進階:回表問題與優化
    10.3.6  關注數和粉絲數
  10.4  緩存查詢
    10.4.1  緩存什麼數據
    10.4.2  緩存的創建與更新策略
    10.4.3  本地緩存
    10.4.4  緩存與資料庫結合的最終方案
  10.5  基於圖資料庫的設計
    10.5.1  實現用戶關係
    10.5.2  應用權衡
  10.6  本章小結
第11章  Timeline Feed服務
  11.1  Feed流的分類
  11.2  Timeline Feed流的功能特性
  11.3  拉模式與用戶發件箱
  11.4  推模式與用戶收件箱
  11.5  推拉結合模式
    11.5.1  結合思路
    11.5.2  區分活躍用戶
  11.6  實現Timeline Feed服務的關鍵技術細節
    11.6.1  內容與用戶收件箱的交互
    11.6.2  推送子任務
    11.6.3  收件箱保存什麼數據
    11.6.4  讀請求參數
    11.6.5  使用資料庫實現收件箱
    11.6.6  使用Redis ZSET實現收件箱
    11.6.7  通過推拉結合模式構建Timeline Feed數據
    11.6.8  收尾工作
  11.7  本章小結
第12章  評論服務
  12.1  評論功能
  12.2  評論列表模式
  12.3  評論服務設計的初步想法
  12.4  單級模式服務設計
    12.4.1  數據表的初步設計
    12.4.2  讀/寫介面與索引
    12.4.3  資料庫的最終設計
    12.4.4  高併發問題
  12.5  蓋樓模式服務設計
    12.5.1  資料庫方案:遞歸查詢
    12.5.2  資料庫方案:保存完整樓層
    12.5.3  圖資料庫方案
  12.6  二級模式服務設計
    12.6.1  數據特點
    12.6.2  時間順序:資料庫方案
    12.6.3  時間順序:圖資料庫方案
    12.6.4  評論審核與狀態

    12.6.5  按照熱度排序
    12.6.6  高併發處理
    12.6.7  架構總覽
  12.7  本章小結
第13章  IM服務
  13.1  IM的意義與核心能力
  13.2  IM相關概念
  13.3  消息投遞
    13.3.1  存儲消息:讀擴散與寫擴散
    13.3.2  接收消息:拉模式與推模式
  13.4  存儲初探
  13.5  消息的有序性保證
    13.5.1  消息亂序
    13.5.2  客戶端發送消息
    13.5.3  服務端存儲消息
    13.5.4  服務端推送消息與客戶端補償
  13.6  會話管理與命令消息
    13.6.1  創建單聊會話
    13.6.2  創建群聊會話
    13.6.3  命令消息
  13.7  消息回執
    13.7.1  上報已讀消息
    13.7.2  記錄已讀消息
  13.8  階段性匯總:存儲設計
  13.9  高併發架構
    13.9.1  發送消息
    13.9.2  數據緩存
    13.9.3  消息分級
    13.9.4  直播間彈幕模式
  13.10  本章小結:最終架構

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032