書(shū)單推薦 新書(shū)推薦 |
分布式系統(tǒng)性能優(yōu)化:方法與實(shí)踐 張程 王梓晨 曹洪偉 性能優(yōu)化 系統(tǒng)架構(gòu) 高性能 ![]()
(1)作者背景資深,經(jīng)驗(yàn)沉淀深厚:本書(shū)由擁有近30年軟硬件研發(fā)經(jīng)驗(yàn)的全棧技術(shù)專(zhuān)家曹洪偉領(lǐng)銜,作者團(tuán)隊(duì)擁有在世界500強(qiáng)企業(yè)、大型互聯(lián)網(wǎng)公司和前沿AI領(lǐng)域的豐富經(jīng)驗(yàn)。 Preface 前 言 為何寫(xiě)作本書(shū) 隨著互聯(lián)網(wǎng)和信息技術(shù)的迅猛發(fā)展,分布式系統(tǒng)已成為支撐現(xiàn)代數(shù)字基礎(chǔ)設(shè)施的核心架構(gòu),在云計(jì)算、大數(shù)據(jù)處理、人工智能、物聯(lián)網(wǎng)等前沿領(lǐng)域得到廣泛應(yīng)用。然而,分布式系統(tǒng)與生俱來(lái)的復(fù)雜性使其在性能優(yōu)化方面面臨諸多嚴(yán)峻挑戰(zhàn):數(shù)據(jù)一致性維護(hù)需要在CAP理論的各項(xiàng)指標(biāo)間進(jìn)行權(quán)衡,網(wǎng)絡(luò)延遲問(wèn)題在跨地域部署時(shí)表現(xiàn)得尤為突出,節(jié)點(diǎn)故障的快速檢測(cè)與恢復(fù)機(jī)制直接關(guān)系到系統(tǒng)的可用性,負(fù)載均衡策略的優(yōu)劣決定了資源利用率的高低。這些挑戰(zhàn)不僅增加了系統(tǒng)設(shè)計(jì)的難度,更會(huì)對(duì)系統(tǒng)實(shí)際運(yùn)行時(shí)的性能表現(xiàn)產(chǎn)生直接影響。因此,分布式系統(tǒng)的性能優(yōu)化成為眾多企業(yè)和開(kāi)發(fā)人員亟待解決的關(guān)鍵難題。 在近30年的軟件工程實(shí)踐中,我們經(jīng)歷了從單體架構(gòu)到微服務(wù)架構(gòu)的演進(jìn)過(guò)程,參與了多個(gè)大型分布式系統(tǒng)的設(shè)計(jì)與優(yōu)化工作,積累了豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)與優(yōu)化技巧。這些經(jīng)驗(yàn)不僅包括經(jīng)典的性能優(yōu)化方法論,還涵蓋了針對(duì)特定場(chǎng)景的最佳實(shí)踐,如性能瓶頸的定位方法、分布式緩存一致性解決方案、微服務(wù)架構(gòu)下的流量控制策略等。這些經(jīng)過(guò)實(shí)際項(xiàng)目驗(yàn)證的優(yōu)化方案,對(duì)軟件工程師、系統(tǒng)架構(gòu)師及技術(shù)決策者來(lái)說(shuō),具有極高的參考價(jià)值。 考慮到目前市面上關(guān)于分布式系統(tǒng)性能優(yōu)化的專(zhuān)業(yè)書(shū)籍相對(duì)匱乏,且大多偏重理論闡述,缺乏實(shí)操性,我們將這些實(shí)踐經(jīng)驗(yàn)整理成書(shū),希望為讀者提供一份翔實(shí)的分布式系統(tǒng)性能優(yōu)化指南。本書(shū)不僅注重理論知識(shí)的梳理,更注重實(shí)際示例的剖析,力求幫助讀者建立完整的性能優(yōu)化知識(shí)體系,避免在實(shí)踐中走彎路。同時(shí),我們也期待通過(guò)本書(shū)與業(yè)界同行展開(kāi)深入交流,共同探討分布式系統(tǒng)性能優(yōu)化的發(fā)展趨勢(shì),分享在不同業(yè)務(wù)場(chǎng)景下的優(yōu)化實(shí)踐,推動(dòng)行業(yè)最佳實(shí)踐的持續(xù)演進(jìn)。在云原生、邊緣計(jì)算等新技術(shù)范式不斷涌現(xiàn)的今天,分布式系統(tǒng)性能優(yōu)化將面臨更多挑戰(zhàn)和機(jī)遇。我們希望通過(guò)本書(shū)為這一領(lǐng)域的技術(shù)發(fā)展貢獻(xiàn)一份力量。 本書(shū)主要特點(diǎn) 為了幫助廣大讀者深入理解和掌握分布式系統(tǒng)的精髓,我們對(duì)本書(shū)的內(nèi)容進(jìn)行了精心編排。本書(shū)不僅涵蓋了分布式系統(tǒng)的基礎(chǔ)理論知識(shí),包括系統(tǒng)架構(gòu)、通信協(xié)議、數(shù)據(jù)一致性等關(guān)鍵概念,還深入探討了分布式系統(tǒng)在實(shí)際應(yīng)用中面臨的各種挑戰(zhàn)及對(duì)應(yīng)的解決方案。 憑借多年在實(shí)際項(xiàng)目中積累的寶貴經(jīng)驗(yàn),我們將大量真實(shí)的性能問(wèn)題及解決方案融入書(shū)中。這些問(wèn)題涵蓋了分布式系統(tǒng)的各個(gè)層面,從網(wǎng)絡(luò)延遲、數(shù)據(jù)存儲(chǔ)瓶頸到并發(fā)處理、資源調(diào)度等。本書(shū)的每個(gè)示例都詳細(xì)描述了問(wèn)題的背景、表現(xiàn)形式、分析過(guò)程以及解決方法。通過(guò)學(xué)習(xí)這些示例,讀者可以更好地理解分布式系統(tǒng)的復(fù)雜性與動(dòng)態(tài)性,提升自己在實(shí)際項(xiàng)目中的問(wèn)題解決能力。無(wú)論你是初入分布式系統(tǒng)領(lǐng)域的新人,還是已有一定經(jīng)驗(yàn)的工程師,都能從本書(shū)中獲得寶貴的啟示和指導(dǎo),為自己的職業(yè)發(fā)展增添助力。 本書(shū)閱讀對(duì)象 本書(shū)適合所有對(duì)分布式系統(tǒng)性能優(yōu)化感興趣的讀者,具體包括: ● 軟件工程師和開(kāi)發(fā)人員。
本書(shū)共12章,分為三個(gè)部分:基礎(chǔ)理論、優(yōu)化方法和實(shí)戰(zhàn)應(yīng)用。 第一部分(第1和2章)介紹了分布式系統(tǒng)的相關(guān)理論,尤其是性能評(píng)估的方法,并著重闡述了分布式系統(tǒng)性能優(yōu)化的方法。 第1章首先闡述了分布式系統(tǒng)的定義、基本概念、謬誤、數(shù)據(jù)一致性與CAP理論等基礎(chǔ)知識(shí)。然后,介紹了分布式系統(tǒng)的質(zhì)量屬性和性能指標(biāo)體系,包括系統(tǒng)容量、時(shí)間、可用性和資源等方面。最后,通過(guò)某銀行系統(tǒng)的全鏈路壓測(cè)示例,詳細(xì)闡述了性能評(píng)估體系中的可觀測(cè)性、性能監(jiān)控和壓力測(cè)試等內(nèi)容。 第2章主要介紹了性能優(yōu)化的策略和系統(tǒng)方法。優(yōu)化策略包括面向單節(jié)點(diǎn)或部分節(jié)點(diǎn)集合的局部?jī)?yōu)化策略和面向分布式系統(tǒng)的全局最優(yōu)策略。系統(tǒng)方法則涉及了解前提與環(huán)境、確定優(yōu)化策略、系統(tǒng)架構(gòu)、網(wǎng)絡(luò)基礎(chǔ)設(shè)施、分布式存儲(chǔ)、通信、數(shù)據(jù)庫(kù)、數(shù)據(jù)一致性約束、分布式鎖、分布式緩存等方面。此外,還介紹了性能設(shè)計(jì)中的常見(jiàn)問(wèn)題,包括項(xiàng)目結(jié)束時(shí)修復(fù)、測(cè)量和比較不當(dāng)、算法恐懼、遞歸泛濫、過(guò)早進(jìn)行低級(jí)優(yōu)化、僅關(guān)注問(wèn)題表象、線程數(shù)量過(guò)多、非對(duì)稱(chēng)利用硬件、無(wú)須交換緩存以及忽略常見(jiàn)情況等內(nèi)容。最后,通過(guò)面向平均響應(yīng)時(shí)間的優(yōu)化示例,進(jìn)一步說(shuō)明了性能優(yōu)化的實(shí)踐方法。 第二部分(第3~9章)詳細(xì)闡述了分布式系統(tǒng)的具體性能優(yōu)化方法。 第3章強(qiáng)調(diào)了架構(gòu)類(lèi)型對(duì)性能的影響,包括單體架構(gòu)、事件驅(qū)動(dòng)架構(gòu)、面向服務(wù)的架構(gòu)、無(wú)服務(wù)器架構(gòu)和微服務(wù)架構(gòu)等。同時(shí),還介紹了微服務(wù)架構(gòu)的設(shè)計(jì)模式,如服務(wù)注冊(cè)模式、API網(wǎng)關(guān)模式、聚合架構(gòu)模式、事件源架構(gòu)模式、獨(dú)享數(shù)據(jù)庫(kù)模式、命令查詢(xún)責(zé)任分離模式、Saga模式、斷路器模式、艙壁模式和絞殺榕模式等。此外,還介紹了面向性能的混合云服務(wù) 第4章主要介紹了網(wǎng)絡(luò)拓?fù)鋬?yōu)化、帶寬管理、高效路由、CDN與邊緣計(jì)算以及負(fù)載均衡等內(nèi)容。網(wǎng)絡(luò)拓?fù)鋬?yōu)化包括網(wǎng)絡(luò)拓?fù)涞念?lèi)型、優(yōu)化工具和類(lèi)型選擇與優(yōu)化等方面。CDN與邊緣計(jì)算包括基于CDN的客戶端渲染、服務(wù)端渲染和邊緣渲染等。負(fù)載均衡包括負(fù)載均衡的分類(lèi)、軟件負(fù)載均衡的常見(jiàn)類(lèi)型、負(fù)載均衡算法和通過(guò)負(fù)載均衡提升系統(tǒng)性能等方面。最后,通過(guò)基于BFE的大規(guī)模負(fù)載均衡優(yōu)化實(shí)踐示例,詳細(xì)說(shuō)明了網(wǎng)絡(luò)優(yōu)化的方法和實(shí)踐。 第5章重點(diǎn)介紹了通信協(xié)議的優(yōu)化、請(qǐng)求優(yōu)化與數(shù)據(jù)壓縮、連接池與復(fù)用、異步通信和消息隊(duì)列等內(nèi)容。通信協(xié)議的優(yōu)化包括HTTP優(yōu)化以及從REST到gRPC等多個(gè)方面。請(qǐng)求優(yōu)化與數(shù)據(jù)壓縮包括CSS和JavaScript優(yōu)化、圖像優(yōu)化、字體優(yōu)化以及HTTP通信中的節(jié)流等方面。連接池與復(fù)用涉及數(shù)據(jù)庫(kù)連接池的定義、常用方式、性能和常見(jiàn)的數(shù)據(jù)庫(kù)連接池等內(nèi)容。最后,通過(guò)在Spring Boot微服務(wù)中使用RabbitMQ的示例,詳細(xì)說(shuō)明了通信調(diào)優(yōu)的方法和實(shí)踐。 第6章核心內(nèi)容包括分布式緩存的應(yīng)用場(chǎng)景、相關(guān)策略、觸發(fā)機(jī)制、數(shù)據(jù)一致性、命中率提升、緩存可用性設(shè)計(jì)、Redis調(diào)優(yōu)以及分布式緩存中的常見(jiàn)問(wèn)題等。應(yīng)用場(chǎng)景涵蓋頁(yè)面緩存、應(yīng)用對(duì)象緩存和會(huì)話狀態(tài)緩存等。策略制定涉及常用策略、緩存和數(shù)據(jù)庫(kù)一致性、寫(xiě)緩存為主以及同步、數(shù)據(jù)庫(kù)為主以及同步,還有讀寫(xiě)緩存為主以及延遲同步等。觸發(fā)機(jī)制包括主動(dòng)式觸發(fā)和被動(dòng)式觸發(fā)。數(shù)據(jù)一致性探討了更新策略及解決方案。命中率提升則涉及服務(wù)架構(gòu)設(shè)計(jì)與運(yùn)維監(jiān)控等。最后,通過(guò)線上預(yù)約秒殺活動(dòng)示例,詳細(xì)闡述了分布式緩存的應(yīng)用與優(yōu)化方法。 第7章主要介紹分布式事務(wù)的基本類(lèi)型、應(yīng)用場(chǎng)景、技術(shù)難點(diǎn)、分布式事務(wù)之消息、分布式事務(wù)之TCC(三階段事務(wù)補(bǔ)償)、技術(shù)選型等內(nèi)容。事務(wù)包括本地事務(wù)、全局事務(wù)、分布式事務(wù)。技術(shù)難點(diǎn)包括網(wǎng)絡(luò)問(wèn)題、消息重復(fù)發(fā)送和CAP定理的要素權(quán)衡等方面。分布式事務(wù)之消息包括最大努力通知、消息發(fā)送一致性和事務(wù)消息等方面。最后,通過(guò)分布式事務(wù)的優(yōu) 第8章介紹了高并發(fā)下如何選擇鎖、如何合理設(shè)計(jì)分布式鎖、樂(lè)觀鎖應(yīng)用、Redis分布式鎖應(yīng)用、Zookeeper分布式鎖應(yīng)用、高并發(fā)下的性能優(yōu)化以及如何考慮可用性設(shè)計(jì)等內(nèi)容。如何合理設(shè)計(jì)分布式鎖包括互斥性、預(yù)防死鎖、高性能和可重入性等方面。最后,通過(guò)直播排行榜示例,詳細(xì)說(shuō)明了分布式鎖的應(yīng)用和優(yōu)化方法。 第9章重點(diǎn)介紹了分布式存儲(chǔ)的應(yīng)用場(chǎng)景、數(shù)據(jù)分布策略、如何考慮數(shù)據(jù)一致性、如何考慮容錯(cuò)性和數(shù)據(jù)備份,以及常見(jiàn)問(wèn)題等內(nèi)容。應(yīng)用場(chǎng)景包括大數(shù)據(jù)視頻云和大數(shù)據(jù)分析等方面。數(shù)據(jù)分布策略涵蓋數(shù)據(jù)分片和副本等方法。數(shù)據(jù)一致性的考慮包括更新策略和解決方案等。數(shù)據(jù)備份涉及同步復(fù)制、異步復(fù)制和半同步復(fù)制等方式。最后,通過(guò)題庫(kù)系統(tǒng)示例,詳細(xì)說(shuō)明了分布式存儲(chǔ)的應(yīng)用和優(yōu)化方法。 第三部分(第10~12章)涵蓋了在線聊天與直播系統(tǒng)、自動(dòng)駕駛系統(tǒng)和基于大模型應(yīng)用 第10章主要介紹高并發(fā)在線聊天系統(tǒng)的性能調(diào)優(yōu)和高并發(fā)直播系統(tǒng)的性能調(diào)優(yōu)等內(nèi)容。高并發(fā)在線聊天系統(tǒng)的性能調(diào)優(yōu)包括方案前期(交互細(xì)節(jié))、方案中期(集成)和方案后期(性能調(diào)優(yōu))等方面。高并發(fā)直播系統(tǒng)的性能調(diào)優(yōu)包括直播示例、直播場(chǎng)景和直播調(diào)優(yōu)等方面。 第11章詳細(xì)探討了分布式自動(dòng)駕駛系統(tǒng)的核心架構(gòu)及其性能優(yōu)化策略,以及分布式系統(tǒng)在提升自動(dòng)駕駛系統(tǒng)性能中的關(guān)鍵作用。首先介紹了自動(dòng)駕駛系統(tǒng)的性能挑戰(zhàn),然后從通信中間件、通用計(jì)算、異構(gòu)計(jì)算和分布式訓(xùn)練等多個(gè)維度給出具體的優(yōu)化策略,使自動(dòng)駕駛系統(tǒng)在安全性、可靠性、實(shí)時(shí)性和模型的高效迭代能力等方面實(shí)現(xiàn)了顯著提升。 第12章針對(duì)人工智能系統(tǒng)的性能優(yōu)化進(jìn)行了說(shuō)明,主要介紹了增強(qiáng)大模型能力的方法、為大模型引入外部知識(shí)(即RAG系統(tǒng))及其優(yōu)化、為大模型引入外部動(dòng)作(即Agent系統(tǒng))及其優(yōu)化,以及語(yǔ)義緩存的應(yīng)用等內(nèi)容。為大模型引入外部知識(shí)包括語(yǔ)義路由等方面;為大模型引入外部動(dòng)作包括使用異步API將LLM應(yīng)用程序的速度提高70%、用MLflow評(píng)價(jià)Agent系統(tǒng)的響應(yīng)、與Instructor一起處理輸出、利用Presidio處理個(gè)人身份信息和防范提示詞注入攻擊等方面。 本書(shū)通過(guò)系統(tǒng)的理論知識(shí)和豐富的實(shí)戰(zhàn)示例,全面介紹了分布式系統(tǒng)性能優(yōu)化的方法與實(shí)踐。從基礎(chǔ)理論到優(yōu)化方法,再到實(shí)戰(zhàn)應(yīng)用,本書(shū)為讀者提供了一個(gè)完整的分布式系統(tǒng)性能優(yōu)化學(xué)習(xí)與參考框架。
在此,我們向所有在本書(shū)撰寫(xiě)、編輯、出版過(guò)程中給予支持和幫助的人表示最誠(chéng)摯的感謝。 首先,感謝我們的家人,他們?cè)谖覀冏珜?xiě)本書(shū)期間給予了無(wú)盡的理解、鼓勵(lì)和包容。他們默默承擔(dān)了大量的家務(wù)和家庭責(zé)任,讓我們能夠全身心地投入寫(xiě)作中,為我們創(chuàng)造了溫馨、穩(wěn)定的創(chuàng)作環(huán)境。 其次,要感謝本書(shū)的編輯和出版團(tuán)隊(duì)。從選題策劃到編輯校對(duì),再到排版設(shè)計(jì),他們對(duì)本書(shū)的出版給予了極大的支持和幫助。他們專(zhuān)業(yè)的指導(dǎo)、嚴(yán)謹(jǐn)?shù)膽B(tài)度和辛勤的工作,使得本書(shū)在內(nèi)容質(zhì)量等方面都達(dá)到了較高的水平,使本書(shū)能夠以更專(zhuān)業(yè)、更易讀的面貌呈現(xiàn)在讀者面前。他們的敬業(yè)精神和專(zhuān)業(yè)素養(yǎng)為本書(shū)增色不少。在此還要感謝悉心校驗(yàn)此書(shū)的科技工作者:張瑞、徐衍學(xué)、葛華鵬、賀志勇、岳瀟。為了構(gòu)建扎實(shí)的理論體系,他們埋首于浩如煙海的文獻(xiàn),深挖場(chǎng)景數(shù)據(jù)并嚴(yán)謹(jǐn)論證,極大地豐富了本書(shū)的內(nèi)容,使其言之有物,持之有據(jù)。 最后,感謝廣大讀者朋友對(duì)本書(shū)的關(guān)注和支持。希望本書(shū)能夠?qū)Υ蠹以诜植际较到y(tǒng)性能優(yōu)化方面的學(xué)習(xí)和實(shí)踐有所幫助,同時(shí)也期待收到大家寶貴的反饋和建議,以便我們?cè)谖磥?lái)的修訂和完善中做得更好。 隨著技術(shù)的不斷進(jìn)步和分布式系統(tǒng)應(yīng)用的日益廣泛,我們相信分布式系統(tǒng)性能優(yōu)化領(lǐng)域?qū)⒂瓉?lái)更多挑戰(zhàn)和機(jī)遇。期待廣大讀者能夠繼續(xù)深入學(xué)習(xí)和探索,為推動(dòng)分布式系統(tǒng)技術(shù)的發(fā)展和應(yīng)用做出更大貢獻(xiàn)。 張程,資深分布式系統(tǒng)技術(shù)專(zhuān)家,擁有10余年技術(shù)研發(fā)與團(tuán)隊(duì)管理經(jīng)驗(yàn)。在分布式系統(tǒng)領(lǐng)域具備深厚技術(shù)積累,核心專(zhuān)長(zhǎng)涵蓋微服務(wù)架構(gòu)、高效通信交互、系統(tǒng)高可用與數(shù)據(jù)容錯(cuò)設(shè)計(jì),并擁有豐富的AWS云平臺(tái)實(shí)戰(zhàn)經(jīng)驗(yàn)。同時(shí),在大數(shù)據(jù)處理與云計(jì)算相關(guān)技術(shù)棧方面也具備扎實(shí)的工程實(shí)踐。 目 錄 Contents 前 言 第一部分 基礎(chǔ)理論 第1章 分布式系統(tǒng)及其性能評(píng)估 2 1.1 了解分布式系統(tǒng) 3 1.1.1 分布式系統(tǒng)的定義 3 1.1.2 分布式系統(tǒng)涉及的基本概念 3 1.1.3 分布式系統(tǒng)的謬誤 5 1.1.4 數(shù)據(jù)一致性與CAP理論 5 1.2 分布式系統(tǒng)的質(zhì)量屬性 8 1.3 分布式系統(tǒng)的性能指標(biāo)體系 9 1.3.1 多容量 9 1.3.2 快時(shí)間 10 1.3.3 好可用 10 1.3.4 省資源 11 1.4 分布式系統(tǒng)的性能評(píng)估體系 12 1.4.1 可觀測(cè)性 13 1.4.2 性能監(jiān)控 14 1.4.3 面向性能指標(biāo)的壓力測(cè)試 16 1.5 示例:某銀行系統(tǒng)的全鏈路壓測(cè) 17 1.6 本章小結(jié) 20 第2章 分布式系統(tǒng)性能優(yōu)化方法 21 2.1 性能優(yōu)化的策略 21 2.1.1 面向單節(jié)點(diǎn)或部分節(jié)點(diǎn)集合的 2.1.2 面向分布式系統(tǒng)的全局最優(yōu) 2.2 性能優(yōu)化的系統(tǒng)方法 23 2.2.1 了解前提與環(huán)境 24 2.2.2 確定優(yōu)化策略 25 2.2.3 系統(tǒng)架構(gòu) 25 2.2.4 網(wǎng)絡(luò)基礎(chǔ)設(shè)施 25 2.2.5 分布式存儲(chǔ) 26 2.2.6 通信 26 2.2.7 數(shù)據(jù)庫(kù) 28 2.2.8 數(shù)據(jù)一致性約束:分布式 2.2.9 分布式鎖 29 2.2.10 分布式緩存 30 2.2.11 分布式系統(tǒng)優(yōu)化的一般思考
2.3.1 項(xiàng)目結(jié)束時(shí)修復(fù) 33 2.3.2 測(cè)量和比較不當(dāng) 33 2.3.3 算法恐懼 33 2.3.4 遞歸泛濫 34 2.3.5 過(guò)早進(jìn)行低級(jí)優(yōu)化 34 2.3.6 僅關(guān)注問(wèn)題表象 34 2.3.7 線程數(shù)量過(guò)多 34 2.3.8 非對(duì)稱(chēng)利用硬件 35 2.3.9 無(wú)須交換緩存 35 2.3.10 忽略常見(jiàn)情況 36 2.4 示例:面向平均響應(yīng)時(shí)間的優(yōu)化 36 2.5 本章小結(jié) 37 第二部分 優(yōu)化方法 第3章 全局時(shí)空約束:系統(tǒng)架構(gòu) 3.1 常見(jiàn)的系統(tǒng)架構(gòu)類(lèi)型 40 3.1.1 單體架構(gòu) 41 3.1.2 事件驅(qū)動(dòng)架構(gòu) 41 3.1.3 面向服務(wù)的架構(gòu) 41 3.1.4 無(wú)服務(wù)器架構(gòu) 41 3.1.5 微服務(wù)架構(gòu) 42 3.2 微服務(wù)架構(gòu)的設(shè)計(jì)模式 43 3.2.1 服務(wù)注冊(cè)模式 44 3.2.2 API網(wǎng)關(guān)模式 44 3.2.3 聚合架構(gòu)模式 45 3.2.4 事件源架構(gòu)模式 46 3.2.5 獨(dú)享數(shù)據(jù)庫(kù)模式 47 3.2.6 命令查詢(xún)責(zé)任分離模式 48 3.2.7 Saga模式 49 3.2.8 斷路器模式 49 3.2.9 艙壁模式 50 3.2.10 絞殺榕模式 51 3.3 面向性能的混合云服務(wù)架構(gòu)優(yōu)化 52 3.3.1 混合云服務(wù)架構(gòu)的一般實(shí)現(xiàn) 3.3.2 混合云服務(wù)架構(gòu)的部署模式 52 3.3.3 混合云服務(wù)架構(gòu)的優(yōu)化方法 57 3.4 面向數(shù)據(jù)架構(gòu)的分布式計(jì)算優(yōu)化 58 3.5 示例:跨境電商的云服務(wù)架構(gòu) 3.6 本章小結(jié) 63 第4章 基礎(chǔ)設(shè)施提速:網(wǎng)絡(luò)優(yōu)化 64 4.1 網(wǎng)絡(luò)拓?fù)鋬?yōu)化 64 4.1.1 網(wǎng)絡(luò)拓?fù)涞念?lèi)型 65 4.1.2 網(wǎng)絡(luò)拓?fù)涞膬?yōu)化工具 66 4.1.3 網(wǎng)絡(luò)拓?fù)涞念?lèi)型選擇與優(yōu)化 67 4.2 帶寬管理 68 4.3 高效路由 70 4.4 CDN與邊緣計(jì)算 71 4.4.1 基于CDN的客戶端渲染 71 4.4.2 基于CDN的服務(wù)端渲染 72 4.4.3 基于CDN的邊緣渲染 72 4.5 負(fù)載均衡 77 4.5.1 負(fù)載均衡的分類(lèi) 77 4.5.2 軟件負(fù)載均衡的常見(jiàn)類(lèi)型 78 4.5.3 負(fù)載均衡算法 80
4.6 示例:基于BFE的大規(guī)模負(fù)載 4.7 本章小結(jié) 85 第5章 流量傳輸技巧:通信調(diào)優(yōu) 86 5.1 通信協(xié)議的優(yōu)化 87 5.1.1 HTTP優(yōu)化 87 5.1.2 從REST到gRPC 89 5.2 請(qǐng)求優(yōu)化與數(shù)據(jù)壓縮 92 5.2.1 CSS和JavaScript優(yōu)化 92 5.2.2 圖像優(yōu)化 93 5.2.3 字體優(yōu)化 93 5.2.4 HTTP通信中的節(jié)流 94 5.3 連接池與復(fù)用 94 5.3.1 數(shù)據(jù)庫(kù)連接池的定義 94 5.3.2 數(shù)據(jù)庫(kù)連接池的常用方式 95 5.3.3 數(shù)據(jù)庫(kù)連接池的性能 96 5.3.4 常見(jiàn)的數(shù)據(jù)庫(kù)連接池 96 5.4 異步通信 97 5.4.1 異步與同步的通信流程 97 5.4.2 Java中的異步通信 98 5.5 消息隊(duì)列 104 5.5.1 消息隊(duì)列的消息處理方式 104 5.5.2 使用消息隊(duì)列的主要收益 115 5.6 示例:在Spring Boot微服務(wù)中 5.6.1 RabbitMQ的組成 116 5.6.2 RabbitMQ的基本工作原理 117 5.6.3 RabbitMQ的應(yīng)用示例 118 5.6.4 RabbitMQ的一些最佳實(shí)踐 123 5.7 本章小結(jié) 124 第6章 性能優(yōu)化利器:分布式 6.1 分布式緩存的應(yīng)用場(chǎng)景 126 6.1.1 頁(yè)面緩存 126 6.1.2 應(yīng)用對(duì)象緩存 130 6.1.3 會(huì)話狀態(tài)緩存 137 6.2 緩存的相關(guān)策略 138 6.2.1 常用策略:Cache-Aside 139 6.2.2 緩存和數(shù)據(jù)庫(kù)一致性: 6.2.3 寫(xiě)緩存為主并同步: 6.2.4 數(shù)據(jù)庫(kù)為主并同步: 6.2.5 讀寫(xiě)緩存為主并延遲同步: 6.3 觸發(fā)機(jī)制 141 6.3.1 主動(dòng)式觸發(fā) 143 6.3.2 被動(dòng)式觸發(fā) 144 6.4 緩存的數(shù)據(jù)一致性 144 6.4.1 更新策略 144 6.4.2 解決方案 145 6.5 如何提升命中率 148 6.6 如何考慮緩存的可用性設(shè)計(jì) 150 6.6.1 服務(wù)架構(gòu)設(shè)計(jì) 150 6.6.2 運(yùn)維監(jiān)控 153 6.7 Redis調(diào)優(yōu) 154 6.8 示例:線上預(yù)約秒殺活動(dòng)示例 154 6.9 使用分布式緩存的一些常見(jiàn)問(wèn)題 157
6.9.2 緩存穿透問(wèn)題 157 6.9.3 緩存擊穿問(wèn)題 157 6.9.4 緩存雪崩問(wèn)題 158 6.9.5 緩存雪崩后的備用方案 158 6.9.6 高并發(fā)下數(shù)據(jù)庫(kù)和緩存雙寫(xiě) 6.9.7 高并發(fā)Redis緩存中的大值存 6.9.8 高并發(fā)Redis緩存的預(yù)熱方案 159 6.9.9 高并發(fā)Redis緩存的集中失效 6.9.10 Redis如何高效拆分?jǐn)?shù)據(jù) 160 6.10 本章小結(jié) 160 第7章 數(shù)據(jù)一致性約束:分布式 7.1 事務(wù)的基本類(lèi)型 162 7.1.1 本地事務(wù) 162 7.1.2 全局事務(wù) 164 7.1.3 分布式事務(wù) 166 7.2 分布式事務(wù)的應(yīng)用場(chǎng)景 167 7.3 分布式事務(wù)的技術(shù)難點(diǎn) 169 7.3.1 網(wǎng)絡(luò)問(wèn)題 169 7.3.2 消息重復(fù)發(fā)送 169 7.3.3 CAP定理的選擇 171 7.4 分布式事務(wù)之消息:最大努力 7.4.1 最大努力通知的示例 173 7.4.2 實(shí)現(xiàn)過(guò)程 175 7.5 分布式事務(wù)之消息:消息發(fā)送 7.5.1 消息發(fā)送一致性的示例 182 7.5.2 實(shí)現(xiàn)過(guò)程 188 7.6 分布式事務(wù)之消息:事務(wù)消息 191 7.6.1 事務(wù)消息的示例 193 7.6.2 實(shí)現(xiàn)過(guò)程 193 7.7 分布式事務(wù)之TCC:三階段事務(wù) 7.7.1 事務(wù)補(bǔ)償示例 198 7.7.2 實(shí)現(xiàn)過(guò)程 199 7.8 分布式事務(wù)的技術(shù)選型 206 7.9 示例:電商下單過(guò)程中的事務(wù) 7.10 本章小結(jié) 208 第8章 業(yè)務(wù)性能瓶頸:分布式鎖 209 8.1 高并發(fā)下如何選擇鎖 210 8.2 如何合理設(shè)計(jì)分布式鎖 212 8.2.1 互斥性 212 8.2.2 預(yù)防死鎖 213 8.2.3 高性能 213 8.2.4 可重入性 214 8.3 樂(lè)觀鎖應(yīng)用 214 8.4 Redis分布式鎖應(yīng)用 219 8.4.1 Redis結(jié)合Lua腳本 220 8.4.2 Redisson的使用 222 8.5 ZooKeeper分布式鎖應(yīng)用 230 8.5.1 節(jié)點(diǎn)及事件監(jiān)聽(tīng) 230 8.5.2 基于ZooKeeper的分布式鎖的
8.6.1 全局加鎖 238 8.6.2 鎖的并發(fā)性能 239 8.7 如何考慮可用性設(shè)計(jì) 240 8.7.1 強(qiáng)一致性 240 8.7.2 服務(wù)高可用 240 8.7.3 鎖釋放及續(xù)租 241 8.8 示例:直播排行榜 241 8.9 本章小結(jié) 242 第9章 I/O性能優(yōu)化:分布式 9.1 分布式存儲(chǔ)的應(yīng)用場(chǎng)景 244 9.1.1 大數(shù)據(jù)視頻云 244 9.1.2 大數(shù)據(jù)分析 245 9.2 數(shù)據(jù)分布策略 248 9.2.1 數(shù)據(jù)分片 248 9.2.2 副本 250 9.3 如何考慮數(shù)據(jù)一致性 251 9.4 如何考慮容錯(cuò)性 254 9.5 數(shù)據(jù)備份 257 9.5.1 同步復(fù)制 259 9.5.2 異步復(fù)制 260 9.5.3 半同步復(fù)制 261 9.6 示例:題庫(kù)系統(tǒng) 261 9.7 分布式存儲(chǔ)中的常見(jiàn)問(wèn)題 264 9.7.1 分布式存儲(chǔ)的類(lèi)型及區(qū)別 264 9.7.2 分布式共識(shí)算法的類(lèi)型及 9.7.3 如何保證多副本數(shù)據(jù)一致性 265 9.7.4 如何分散副本,避免全部 9.7.5 被損壞副本和數(shù)據(jù)過(guò)期副本的 9.8 本章小結(jié) 265 第三部分 實(shí)戰(zhàn)應(yīng)用 第10章 大型應(yīng)用系統(tǒng):在線聊天與直 10.1 示例:高并發(fā)在線聊天系統(tǒng)的性能 10.1.1 方案前期(交互細(xì)節(jié)) 271 10.1.2 方案中期(集成) 273 10.1.3 方案后期(性能調(diào)優(yōu)) 297 10.2 示例:高并發(fā)直播系統(tǒng)的性能 10.2.1 直播示例 302 10.2.2 直播場(chǎng)景 305 10.2.3 直播調(diào)優(yōu) 308 10.3 本章小結(jié) 314 第11章 自動(dòng)駕駛系統(tǒng):分布式計(jì)算 11.1 自動(dòng)駕駛系統(tǒng)的性能挑戰(zhàn) 315 11.1.1 自動(dòng)駕駛系統(tǒng)的核心架構(gòu)與 11.1.2 自動(dòng)駕駛系統(tǒng)性能優(yōu)化的核心 11.2 通信中間件的性能優(yōu)化 319
11.2.2 性能瓶頸分析及優(yōu)化 320 11.3 通用計(jì)算的性能優(yōu)化 324 11.3.1 通用計(jì)算節(jié)點(diǎn)中的內(nèi)存分配 11.3.2 通用計(jì)算節(jié)點(diǎn)中的算力分配 11.4 異構(gòu)計(jì)算的性能優(yōu)化 340 11.4.1 異構(gòu)計(jì)算節(jié)點(diǎn)中的CUDA 11.4.2 異構(gòu)計(jì)算節(jié)點(diǎn)中的FPGA 11.5 分布式訓(xùn)練的性能優(yōu)化 361 11.5.1 數(shù)據(jù)并行優(yōu)化 362 11.5.2 模型并行優(yōu)化 364 11.5.3 分布式訓(xùn)練的挑戰(zhàn) 365 11.6 本章小結(jié) 366 第12章 基于大模型應(yīng)用的系統(tǒng) 12.1 關(guān)于大模型 369 12.2 增強(qiáng)大模型能力的方法 369 12.2.1 提示詞工程 370 12.2.2 微調(diào) 371 12.2.3 強(qiáng)化學(xué)習(xí) 375 12.2.4 預(yù)訓(xùn)練 377 12.3 為大模型引入外部知識(shí)RAG 12.3.1 查詢(xún)變換 380 12.3.2 查詢(xún)路由 383 12.3.3 分塊及向量化 385 12.3.4 搜索與索引 388 12.3.5 重新排序和過(guò)濾 391 12.4 為大模型引入外部動(dòng)作 12.4.1 使用異步API將LLM應(yīng)用 12.4.2 用MLflow評(píng)價(jià)Agent系統(tǒng)的 12.4.3 與Instructor一起處理輸出 396 12.4.4 利用Presidio處理個(gè)人身份 12.4.5 防范提示詞注入攻擊 399 12.5 語(yǔ)義緩存的應(yīng)用 399 12.5.1 緩存回顧 400 12.5.2 語(yǔ)義緩存的工作原理 401 12.5.3 語(yǔ)義緩存的實(shí)現(xiàn) 402 12.5.4 約束與增強(qiáng) 405 12.6 本章小結(jié) 406
我要評(píng)論
|


