高性能架構(gòu)——多級(jí)網(wǎng)關(guān)與多級(jí)緩存實(shí)踐

簡(jiǎn)介
本書(shū)特色
前言
章節(jié)列表
精彩閱讀
下載資源
相關(guān)圖書(shū)
內(nèi) 容 提 要
“緩存”—在計(jì)算機(jī)領(lǐng)域中無(wú)處不在,幾乎在任何項(xiàng)目中都能看到“緩存”的影子。不論是移動(dòng)互聯(lián)網(wǎng)、云計(jì)算還是大數(shù)據(jù)領(lǐng)域,“緩存”都可以提供更快速、更可靠、更高效的性能和體驗(yàn)。正因如此,“多級(jí)緩存”這樣的架構(gòu)理念在復(fù)雜的分布式或微服務(wù)系統(tǒng)中也被逐步地演變與應(yīng)用。
本書(shū)依托實(shí)際案例,從基礎(chǔ)技術(shù)開(kāi)始逐步深入探討多級(jí)緩存架構(gòu)與多級(jí)網(wǎng)關(guān)的架構(gòu)原理與應(yīng)用,并且最終使用KubeSphere進(jìn)行云原生的項(xiàng)目部署。本書(shū)也會(huì)引導(dǎo)讀者從基礎(chǔ)架構(gòu)逐步進(jìn)階為高級(jí)架構(gòu),并整體涵蓋基礎(chǔ)項(xiàng)目架構(gòu)的搭建、緩存的應(yīng)用、分布式架構(gòu)、網(wǎng)關(guān)設(shè)計(jì)與應(yīng)用、并發(fā)優(yōu)化等方面的相關(guān)技術(shù)知識(shí),從而使讀者對(duì)多級(jí)架構(gòu)有更深入的了解。
本書(shū)主要分為三大部分。第一部分“基礎(chǔ)篇”會(huì)搭建基礎(chǔ)架構(gòu),并且實(shí)現(xiàn)本地緩存Caffeine與分布式緩存Redis的應(yīng)用以及Redis進(jìn)階。第二部分“進(jìn)階篇”對(duì)項(xiàng)目的架構(gòu)進(jìn)行演變,結(jié)合Lua腳本實(shí)現(xiàn)網(wǎng)關(guān)業(yè)務(wù)邏輯,從而構(gòu)建多級(jí)網(wǎng)關(guān)與多級(jí)緩存架構(gòu),以此實(shí)現(xiàn)基于網(wǎng)關(guān)的高并發(fā)操作。第三部分“云原生與DevOps”會(huì)對(duì)Kubernetes進(jìn)行介紹,并且圍繞KubeSphere來(lái)落地,進(jìn)行項(xiàng)目的流水線發(fā)布。
本書(shū)適合軟件開(kāi)發(fā)工程師、系統(tǒng)架構(gòu)師、運(yùn)維工程師、測(cè)試工程師以及對(duì)構(gòu)建高性能系統(tǒng)架構(gòu)感興趣的讀者閱讀,不論你是初學(xué)者還是經(jīng)驗(yàn)豐富的專業(yè)技術(shù)人員,本書(shū)都將提供有價(jià)值的技術(shù)與知識(shí)。
本書(shū)從全方面的角度剖析了如何構(gòu)建高性能的微服務(wù)系統(tǒng),對(duì)于緩存模塊的深度分析給我
留下了深刻的印象,對(duì)于一般企業(yè)用戶來(lái)說(shuō)利用好緩存技術(shù)尤為重要。另外,本書(shū)也介紹
了如何利用Kubernetes 容器化所有組件實(shí)現(xiàn)高可用,內(nèi)容非常全面。
—— Eric.W 王剛 SHOP.COM 首席架構(gòu)師
互聯(lián)網(wǎng)高性能系統(tǒng)的核心設(shè)計(jì)在于緩存與網(wǎng)關(guān)。本書(shū)通過(guò)將緩存、網(wǎng)關(guān)與OpenResty 相
結(jié)合,為大規(guī)模業(yè)務(wù)提供全面的防護(hù)機(jī)制和高性能解決方案。閱讀本書(shū),不僅能幫助讀者
深入理解分布式多級(jí)架構(gòu),還能提升架構(gòu)設(shè)計(jì)思維。
——石力軍(慕課網(wǎng))技術(shù)總監(jiān)
緩存和網(wǎng)關(guān)在現(xiàn)代復(fù)雜系統(tǒng)中是不可或缺的核心組件,既是提升性能的關(guān)鍵技術(shù)突破口,
也是系統(tǒng)架構(gòu)的重要支柱。如今多級(jí)緩存和多級(jí)網(wǎng)關(guān)已經(jīng)廣泛應(yīng)用于各種規(guī)模的系統(tǒng)中,
承擔(dān)著大部分高并發(fā)流量,確保系統(tǒng)的穩(wěn)定與高效。本書(shū)系統(tǒng)介紹了多級(jí)緩存與多級(jí)網(wǎng)關(guān)
的架構(gòu)原理及實(shí)現(xiàn)方法,通過(guò)詳細(xì)講解和實(shí)際案例,幫助開(kāi)發(fā)者深入理解并掌握多級(jí)架構(gòu)
的精髓。無(wú)論是初學(xué)者還是經(jīng)驗(yàn)豐富的開(kāi)發(fā)者,都能從中獲得寶貴的知識(shí)和實(shí)踐指導(dǎo)。
—— 顧佳書(shū)(蘇州科達(dá))部門(mén)總監(jiān)
本書(shū)深入剖析高性能多級(jí)網(wǎng)關(guān)與多級(jí)緩存架構(gòu),實(shí)戰(zhàn)性強(qiáng),極具指導(dǎo)意義。從業(yè)務(wù)架構(gòu)層
面看,它優(yōu)化了流量管理與數(shù)據(jù)處理效率;在網(wǎng)絡(luò)安全層面,通過(guò)構(gòu)建高可用網(wǎng)關(guān)集群與
負(fù)載均衡,增強(qiáng)了安全防護(hù)機(jī)制,確保業(yè)務(wù)安全。閱讀本書(shū),可以幫助讀者構(gòu)建高效且安
全的業(yè)務(wù)系統(tǒng)。
——王世宇 (安信安全)安全服務(wù)部經(jīng)理
前 言
寫(xiě)作緣起
2017年,我們團(tuán)隊(duì)的項(xiàng)目在長(zhǎng)期運(yùn)營(yíng)后遇到了技術(shù)瓶頸,不論采購(gòu)多好的服務(wù)器,并發(fā)量與性能始終上不來(lái),而采購(gòu)多臺(tái)服務(wù)器組成集群雖然能提高一定的并發(fā)量,但是始終不盡如人意,而且硬件成本相當(dāng)高。在這樣的情況下,我們團(tuán)隊(duì)與架構(gòu)組共同研討嘗試使用多級(jí)網(wǎng)關(guān)與多級(jí)緩存相互結(jié)合的方式來(lái)為項(xiàng)目提供服務(wù)。經(jīng)過(guò)大量的測(cè)試與試運(yùn)行,最終順利生產(chǎn)發(fā)布并獲得了很不錯(cuò)的效果,發(fā)布一周后,我們的日流水達(dá)到了800萬(wàn),這相當(dāng)令人興奮,讓老板對(duì)我們刮目相看,團(tuán)隊(duì)也獲得了巨大的成就感。
正因如此,在近幾年的在線教育經(jīng)歷中,我也在極力地向?qū)W員和身邊的公司推薦多級(jí)解決方案,以此解決性能與并發(fā)的痛點(diǎn)。在目前的互聯(lián)網(wǎng)大環(huán)境下,并發(fā)的情況幾乎隨處可見(jiàn),所以當(dāng)有極致并發(fā)出現(xiàn)的時(shí)候,我們不能僅通過(guò)Java后端來(lái)優(yōu)化,而是要對(duì)環(huán)境和項(xiàng)目來(lái)進(jìn)行全局性、綜合性的設(shè)計(jì)和優(yōu)化。多級(jí)網(wǎng)關(guān)與多級(jí)緩存架構(gòu)在如今的互聯(lián)網(wǎng)領(lǐng)域中起著至關(guān)重要的作用,對(duì)于高性能、高可擴(kuò)展、高并發(fā)都具有重要的意義。
出于對(duì)技術(shù)教育的熱忱和對(duì)知識(shí)分享的欲望,我決定撰寫(xiě)本書(shū),也希望通過(guò)將多級(jí)架構(gòu)的方案以概念、原理和實(shí)踐經(jīng)驗(yàn)融合的方式,為廣大讀者朋友提供一本系統(tǒng)的且易于理解的參考資料。我也希望通過(guò)本書(shū)為相關(guān)的技術(shù)從業(yè)者、在校學(xué)生、老師以及互聯(lián)網(wǎng)研究人員提供一個(gè)全面而準(zhǔn)確的技術(shù)參考。
此外,我相信多級(jí)架構(gòu)方案的重要性將會(huì)持續(xù)增加。隨著云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)、人工智能、云原生等技術(shù)的快速發(fā)展,對(duì)于高效、高性能的數(shù)據(jù)讀寫(xiě)和處理解決方案的需求也越來(lái)越迫切。我希望通過(guò)本書(shū),能夠幫助讀者更好地理解和應(yīng)用多級(jí)網(wǎng)關(guān)與多級(jí)緩存架構(gòu),從而使得大家可以在各自的技術(shù)領(lǐng)域中取得競(jìng)爭(zhēng)優(yōu)勢(shì)與技術(shù)成果。
最后,我希望本書(shū)能夠作為技術(shù)知識(shí)的傳遞媒介,激發(fā)讀者的技術(shù)思維與技術(shù)創(chuàng)造力,并且?guī)椭x者更好地理解和應(yīng)用這一重要技術(shù)架構(gòu)。我也非常希望讀者能夠深入研究和動(dòng)手實(shí)踐,把本書(shū)中的各類方案實(shí)操應(yīng)用到實(shí)際項(xiàng)目中。
如何正確閱讀本書(shū)
為了大家能夠充分利用本書(shū)的內(nèi)容,筆者給出如下建議,確保大家可以有更好的閱讀以及學(xué)習(xí)體驗(yàn)。
儲(chǔ)備基礎(chǔ)知識(shí):本書(shū)是面向技術(shù)專業(yè)人士而編寫(xiě)的,主要方向?yàn)镴ava編程和技術(shù)架構(gòu)。如果讀者對(duì)多級(jí)網(wǎng)關(guān)與多級(jí)緩存感興趣,在開(kāi)始閱讀之前,可以了解一些相關(guān)的基礎(chǔ)知識(shí),這將有助于讀者更好地理解和消化本書(shū)的相關(guān)技術(shù)內(nèi)容。
循序漸進(jìn):如果讀者對(duì)本書(shū)大多數(shù)的技術(shù)都不太了解,那么建議逐章閱讀本書(shū),作者會(huì)從零講授,深入淺出地把各個(gè)相關(guān)技術(shù)點(diǎn)的方方面面進(jìn)行講解,確保讀者獲得系統(tǒng)的知識(shí)技能。
輸入輸出并行學(xué)習(xí):大家在學(xué)習(xí)的過(guò)程中通過(guò)閱讀來(lái)獲取知識(shí),這是“輸入性操作”(也就是被動(dòng)接收);而學(xué)習(xí)的同時(shí)如果能夠通過(guò)書(shū)中的各類實(shí)操,以及將代碼編寫(xiě)應(yīng)用到自己的項(xiàng)目中進(jìn)行實(shí)現(xiàn),那么則是“輸出性操作”(也就是主動(dòng)實(shí)踐)。只有輸入輸出相互結(jié)合,大家才能更好地學(xué)習(xí)到多級(jí)網(wǎng)關(guān)與多級(jí)緩存架構(gòu)的技術(shù)理念,而不會(huì)過(guò)了一個(gè)月甚至一周就忘卻。如此便能夠掌握學(xué)習(xí)的要點(diǎn),甚至做出創(chuàng)新性的功能并將其應(yīng)用到現(xiàn)實(shí)中。
結(jié)合其他資源閱讀:本書(shū)可以用來(lái)作為大家學(xué)習(xí)多級(jí)網(wǎng)關(guān)與多級(jí)緩存架構(gòu)的催化劑,但建議大家閱讀本書(shū)的同時(shí)結(jié)合各類專項(xiàng)技術(shù)類書(shū)籍共同學(xué)習(xí),比如RabbitMQ消息隊(duì)列、MySQL數(shù)據(jù)庫(kù)、SpringBoot&MyBatis等,通過(guò)多方面的學(xué)習(xí),可以更好地促進(jìn)自己的技術(shù)進(jìn)步。另外,多在技術(shù)社區(qū)與論壇還有g(shù)ithub參與交流以及issue提交,從而獲得更全面的學(xué)習(xí)效果。
按需閱讀:如果大家對(duì)書(shū)中部分章節(jié)已經(jīng)非常熟悉并能熟練運(yùn)用,那么可以選擇性跳過(guò),直接去閱讀更有需求的其他章節(jié),以此節(jié)約時(shí)間并提高閱讀效率。
提問(wèn)交流:如果大家在閱讀本書(shū)和學(xué)習(xí)實(shí)操的過(guò)程中遇到一些問(wèn)題或有不解之處,可以隨時(shí)隨地向作者提問(wèn),不論是通過(guò)作者的郵箱、github還是公眾號(hào),都可以進(jìn)行交流和討論,大家的互動(dòng)和學(xué)習(xí)經(jīng)驗(yàn)也有助于作者對(duì)本書(shū)進(jìn)行更好地改進(jìn)。
期望大家在閱讀的過(guò)程中可以更好地享受多級(jí)網(wǎng)關(guān)與多級(jí)緩存架構(gòu)這個(gè)技術(shù)領(lǐng)域,也期望本書(shū)能夠?yàn)榇蠹掖蜷_(kāi)技術(shù)落地的新思路和架構(gòu)的拓展創(chuàng)新思維。祝大家閱讀愉快,并從中獲得實(shí)質(zhì)性進(jìn)步。
如何獲取源代碼、如何跟作者溝通、讀者勘誤如何反饋等
歡迎大家對(duì)本書(shū)勘誤,可以關(guān)注作者公眾號(hào)“風(fēng)間影月”留言,也可以發(fā)郵件到leechenxiang@163.com,甚至讀者在工作的過(guò)程中遇到各類業(yè)務(wù)方案或者技術(shù)相關(guān)的難題,也都可以和作者交流相互探討。
此外,對(duì)于書(shū)中提及的所有代碼片段以及相關(guān)配置,筆者都將提交到如下git倉(cāng)庫(kù):https://github.com/leechenxiang/multi-level-architecture,歡迎大家隨時(shí)瀏覽。
大家的反饋和意見(jiàn)對(duì)于筆者來(lái)說(shuō)將會(huì)是非常寶貴的動(dòng)力和促進(jìn)。
前言
致謝
基 礎(chǔ) 篇
第1章 基礎(chǔ)環(huán)境與軟件配備 2
1.1 Java的歷史發(fā)展簡(jiǎn)介 2
1.2 JDK8的安裝 2
1.2.1 Java運(yùn)行時(shí)環(huán)境JDK 2
1.2.2 Windows系統(tǒng)安裝JDK8 3
1.2.3 MacOS(Intel)系統(tǒng)安裝JDK8 9
1.2.4 MacOS(arm64)系統(tǒng)安裝JDK8 11
1.3 安裝Maven,配置項(xiàng)目工程的構(gòu)建
管理工具 13
1.3.1 Maven概述 13
1.3.2 Windows系統(tǒng)安裝Maven 14
1.3.3 MacOS系統(tǒng)安裝Maven 16
1.3.4 配置阿里云鏡像倉(cāng)庫(kù) 16
1.4 開(kāi)發(fā)工具 17
1.5 本章小結(jié) 17
第2章 Docker容器化入門(mén) 19
2.1 內(nèi)網(wǎng)互通原則 19
2.2 容器化引擎Docker 20
2.2.1 虛擬化與容器化技術(shù) 20
2.2.2 Docker的架構(gòu) 21
2.2.3 Docker的隔離機(jī)制 22
2.2.4 Docker的安裝 22
2.2.5 Docker的啟動(dòng) 23
2.2.6 Docker的加速 24
2.3 使用Docker安裝數(shù)據(jù)庫(kù) 26
2.3.1 使用Docker的pull命令拉取
鏡像 26
2.3.2 開(kāi)啟CentOS7的ipv4 27
2.3.3 使用docker run運(yùn)行鏡像 27
2.3.4 可視化數(shù)據(jù)庫(kù)工具 29
2.3.5 Docker命令 31
2.4 Docker鏡像的提交與推送 34
2.4.1 提交鏡像 34
2.4.2 自定義tag標(biāo)簽 35
2.4.3 推送鏡像 35
2.5 本章小結(jié) 36
第3章 構(gòu)建Web服務(wù)與接口 37
3.1 構(gòu)建Web項(xiàng)目 37
3.1.1 使用Maven初始化項(xiàng)目 37
3.1.2 搭建SpringBoot工程 40
3.1.3 編寫(xiě)Restful風(fēng)格接口 45
3.1.4 dev與prod環(huán)境切換 47
3.2 集成持久層框架 48
3.2.1 集成數(shù)據(jù)源 48
3.2.2 整合MyBatis 50
3.2.3 數(shù)據(jù)構(gòu)建 52
3.2.4 數(shù)據(jù)庫(kù)逆向工具 53
3.2.5 編寫(xiě)service業(yè)務(wù)層 55
3.2.6 @Junit操作持久層 56
3.2.7 對(duì)外暴露接口服務(wù) 58
3.3 本章小結(jié) 60
第4章 本地緩存Caffeine 61
4.1 進(jìn)程間與進(jìn)程外緩存 61
4.1.1 什么是緩存 61
4.1.2 進(jìn)程內(nèi)緩存與分類 62
4.1.3 進(jìn)程外緩存 64
4.2 使用Caffeine本地緩存 65
4.2.1 集成Caffeine 65
4.2.2 使用junit進(jìn)行Caffeine測(cè)試 66
4.2.3 Caffeine的值為空設(shè)值操作 67
4.3 SpringBoot整合Caffeine本地緩存 68
4.3.1 集成Caffeine配置 68
4.3.2 使用Caffeine 69
4.4 本章小結(jié) 70
第5章 Redis緩存中間件 71
5.1 分布式緩存中間件Redis 71
5.1.1 非關(guān)系型數(shù)據(jù)庫(kù)的由來(lái) 71
5.1.2 分布式緩存Redis與NoSQL 72
5.1.3 Redis的Key-Value鍵值對(duì) 73
5.2 安裝Redis 74
5.2.1 安裝原生Redis 74
5.2.2 操作Redis的基本命令 76
5.2.3 使用可視化工具Redis Desktop
Manager 77
5.2.4 使用Docker安裝Redis 79
5.2.5 在Redis容器內(nèi)部運(yùn)行redis-cli 81
5.2.6 容器自動(dòng)重啟 82
5.3 五大數(shù)據(jù)類型常用操作 82
5.3.1 string字符串類型 83
5.3.2 list數(shù)據(jù)類型 84
5.3.3 hash哈希數(shù)據(jù)類型 85
5.3.4 set無(wú)序集合數(shù)據(jù)類型 86
5.3.5 sorted set 可排序集合數(shù)據(jù)類型 87
5.4 Redis的存儲(chǔ)原理 88
5.4.1 Redis是怎么做持久化的 88
5.4.2 RDB持久化機(jī)制 88
5.4.3 RDB的自動(dòng)保存機(jī)制 90
5.4.4 AOF持久化機(jī)制 92
5.4.5 使用AOF引發(fā)的思考 92
5.4.6 AOF的重寫(xiě)配置 92
5.4.7 AOF與RDB的混合持久化 93
5.5 本章小結(jié) 95
第6章 分布式緩存的應(yīng)用方案 96
6.1 SpringBoot與Redis集成 96
6.1.1 構(gòu)建SpringBoot項(xiàng)目高可用
集群 96
6.1.2 SpringBoot整合Redis 99
6.1.3 Redis的通用工具操作類 102
6.1.4 Redis與本地緩存并肩作戰(zhàn) 109
6.2 分布式緩存問(wèn)題延伸 111
6.2.1 緩存預(yù)熱 111
6.2.2 Redis緩存穿透 113
6.2.3 Redis緩存擊穿 115
6.2.4 Redis緩存雪崩 116
6.3 分布式系統(tǒng)的CAP理論 117
6.3.1 分布式系統(tǒng) 117
6.3.2 CAP是什么 118
6.3.3 CAP定理 119
6.3.4 CAP的組合搭配 121
6.4 緩存數(shù)據(jù)雙寫(xiě)方案 121
6.4.1 存儲(chǔ)媒介發(fā)生數(shù)據(jù)不一致 121
6.4.2 數(shù)據(jù)庫(kù)與緩存雙寫(xiě)不一致 123
6.4.3 數(shù)據(jù)庫(kù)與緩存雙寫(xiě)一致方案 124
6.5 本章小結(jié) 126
第7章 Redis分布式鎖 127
7.1 分布式鎖 127
7.1.1 分布式鎖是什么 127
7.1.2 本地鎖是什么 128
7.1.3 分布式鎖的原理 129
7.1.4 數(shù)據(jù)庫(kù)悲觀鎖 129
7.1.5 數(shù)據(jù)庫(kù)樂(lè)觀鎖 130
7.2 Redis分布式鎖 131
7.2.1 setnx鎖機(jī)制 131
7.2.2 基于setnx的實(shí)現(xiàn) 131
7.2.3 鎖的自動(dòng)續(xù)期 134
7.3 Redisson客戶端 135
7.3.1 Redisson 概述 135
7.3.2 Redisson配置 136
7.3.3 Redisson分布式鎖 137
7.3.4 Redisson公平鎖 138
7.3.5 Redisson聯(lián)鎖 139
7.4 本章小結(jié) 140
第8章 Redis集群高可用 141
8.1 Redis主從架構(gòu) 141
8.1.1 Redis主從復(fù)制原理 141
8.1.2 構(gòu)建Redis 主從架構(gòu) 142
8.2 Redis哨兵架構(gòu) 144
8.2.1 Redis哨兵架構(gòu)原理 144
8.2.2 構(gòu)建Redis哨兵形態(tài) 146
8.3 Redis高可用集群架構(gòu) 147
8.3.1 Redis集群原理 147
8.3.2 構(gòu)建Redis集群形態(tài)的準(zhǔn)備
工作 149
8.3.3 Redis集群架構(gòu) Cluster實(shí)操 149
8.3.4 Redis集群的故障轉(zhuǎn)移 152
8.3.5 Redis集群數(shù)據(jù)存取 153
8.3.6 Redis集群水平擴(kuò)容 154
8.3.7 Redis集群的十點(diǎn)總結(jié) 158
8.4 Redis緩存淘汰機(jī)制 158
8.5 本章小結(jié) 159
進(jìn) 階 篇
第9章 nginx網(wǎng)關(guān)中間件 161
9.1 網(wǎng)關(guān)中間件nginx 161
9.1.1 nginx是什么 161
9.1.2 服務(wù)器的選型 162
9.1.3 反向代理與正向代理 164
9.2 安裝nginx與配置 165
9.2.1 下載并安裝nginx的依賴環(huán)境 165
9.2.2 安裝nginx到Linux系統(tǒng)中 166
9.2.3 詳解conf配置 168
9.3 nginx的基本應(yīng)用 171
9.3.1 日志切割(手動(dòng)) 171
9.3.2 日志切割(自動(dòng)) 171
9.3.3 location請(qǐng)求的路由規(guī)則 172
9.3.4 靜態(tài)資源服務(wù)器 174
9.4 本章小結(jié) 176
第10章 集群與負(fù)載均衡 177
10.1 集群與分布式 177
10.1.1 集群與分布式的概念 177
10.1.2 負(fù)載均衡的概念 178
10.2 實(shí)現(xiàn)集群負(fù)載均衡 179
10.2.1 配置上游服務(wù)集群 179
10.2.2 負(fù)載均衡之輪詢 180
10.2.3 負(fù)載均衡之權(quán)重 181
10.2.4 負(fù)載均衡之ip_hash 181
10.2.5 負(fù)載均衡之url_hash 182
10.3 一致性哈希原理 182
10.4 OSI網(wǎng)絡(luò)模型原理 183
10.4.1 七層網(wǎng)絡(luò)模型 183
10.4.2 七層模型的歸類與合并 185
10.5 本章小結(jié) 187
第11章 Lua腳本語(yǔ)言基礎(chǔ) 188
11.1 Lua腳本 188
11.1.1 Lua腳本介紹 188
11.1.2 Lua腳本入門(mén) 189
11.2 Lua的數(shù)據(jù)類型 189
11.2.1 nil類型 189
11.2.2 boolean類型 190
11.2.3 number類型 190
11.2.4 string類型 191
11.2.5 function類型 191
11.2.6 table類型 192
11.3 Lua的循環(huán)與控制判斷 193
11.3.1 Lua的循環(huán) 193
11.3.2 Lua的控制判斷 195
11.3.3 Lua語(yǔ)法實(shí)操 195
11.4 本章小結(jié) 197
第12章 高性能OpenResty平臺(tái) 198
12.1 OpenResty 198
12.1.1 OpenResty 背景介紹 198
12.1.2 OpenResty與nginx的區(qū)別 198
12.1.3 OpenResty 所處架構(gòu)位置 199
12.2 安裝OpenResty 201
12.2.1 OpenResty環(huán)境配置與安裝
—方式一 201
12.2.2 OpenResty環(huán)境配置與安裝
—方式二(推薦) 201
12.3 OpenResty的目錄結(jié)構(gòu)與運(yùn)行 202
12.3.1 OpenResty的目錄結(jié)構(gòu) 202
12.3.2 測(cè)試訪問(wèn)頁(yè)面 203
12.4 為OpenResty配置nginx的環(huán)境變量 203
12.5 本章小結(jié) 204
第13章 多級(jí)緩存落地 205
13.1 OpenResty結(jié)合Lua控制請(qǐng)求
與響應(yīng) 205
13.1.1 OpenResty結(jié)合Lua自定義
數(shù)據(jù)響應(yīng) 205
13.1.2 OpenResty結(jié)合Lua獲得
請(qǐng)求相關(guān)參數(shù) 207
13.2 Lua自定義請(qǐng)求反向代理 209
13.2.1 封裝GET請(qǐng)求 209
13.2.2 封裝POST請(qǐng)求 210
13.2.3 Lua控制請(qǐng)求轉(zhuǎn)發(fā) 211
13.3 多級(jí)緩存架構(gòu)落地 212
13.3.1 lua-resty-redis 212
13.3.2 封裝Redis通用模塊 214
13.3.3 完成多級(jí)緩存架構(gòu)閉環(huán) 216
13.4 本章小結(jié) 217
第14章 多級(jí)網(wǎng)關(guān) 218
14.1 多級(jí)網(wǎng)關(guān)集群 218
14.1.1 什么是多級(jí)網(wǎng)關(guān) 218
14.1.2 nginx構(gòu)建OpenResty集群 219
14.2 OpenResty的本地緩存 221
14.2.1 定義共享字典(本地緩存) 221
14.2.2 共享字典與多級(jí)緩存業(yè)務(wù)的
結(jié)合 221
14.3 ApiPost性能壓測(cè) 223
14.3.1 壓力測(cè)試 223
14.3.2 ApiPost介紹 223
14.3.3 使用ApiPost進(jìn)行接口調(diào)試 224
14.3.4 配置ApiPost的壓測(cè)場(chǎng)景 225
14.3.5 進(jìn)行接口壓測(cè) 226
14.4 本章小結(jié) 227
第15章 多級(jí)緩存數(shù)據(jù)同步 228
15.1 緩存數(shù)據(jù)同步方案 228
15.1.1 緩存與數(shù)據(jù)庫(kù)不一致的
出現(xiàn)場(chǎng)景 228
15.1.2 消息隊(duì)列方案 228
15.1.3 Zookeeper方案 230
15.1.4 Canal方案 231
15.2 消息隊(duì)列 232
15.2.1 什么是消息隊(duì)列 232
15.2.2 消息隊(duì)列的技術(shù)選型 234
15.2.3 生產(chǎn)者與消費(fèi)者 234
15.3 安裝RabbitMQ 236
15.3.1 Docker安裝RabbitMQ 236
15.3.2 RabbitMQ的可視化后臺(tái)管理 238
15.3.3 RabbitMQ的模型原理 240
15.4 緩存數(shù)據(jù)的一致性落地 241
15.4.1 緩存數(shù)據(jù)的同步過(guò)程 241
15.4.2 SpringBoot集成RabbitMQ 243
15.4.3 配置交換機(jī)與隊(duì)列 244
15.4.4 構(gòu)建生產(chǎn)者—發(fā)送消息 246
15.4.5 構(gòu)建消費(fèi)者—監(jiān)聽(tīng)隊(duì)列 249
15.4.6 多節(jié)點(diǎn)對(duì)同一消息的監(jiān)聽(tīng)
處理 249
15.4.7 完成并測(cè)試緩存數(shù)據(jù)的同步 250
15.5 本章小結(jié) 253
第16章 OpenResty實(shí)踐 254
16.1 用戶請(qǐng)求頻率限制與黑名單 254
16.1.1 網(wǎng)關(guān)限流需求說(shuō)明 254
16.1.2 封裝請(qǐng)求攔截函數(shù) 254
16.1.3 結(jié)合業(yè)務(wù)進(jìn)行攔截 258
16.2 OpenResty集成MySQL 259
16.2.1 解讀lua-resty-mysql示例代碼 259
16.2.2 封裝MySQL請(qǐng)求函數(shù) 261
16.2.3 實(shí)現(xiàn)調(diào)用MySQL業(yè)務(wù) 263
16.2.4 轉(zhuǎn)發(fā)請(qǐng)求到sql查詢的Lua文件 264
16.3 本章小結(jié) 264
云原生與DevOps
第17章 云原生與KubeSphere 266
17.1 DevOps與CICD 266
17.1.1 DevOps概述 266
17.1.2 CICD概述 268
17.2 Kubernetes初探 270
17.2.1 Kubernetes概述 270
17.2.2 Kubernetes 可以用來(lái)做什么 271
17.2.3 Kubernetes架構(gòu)原理 272
17.2.4 Kubernetes的Pod容器 274
17.3 KubeSphere的使用與安裝 275
17.3.1 KubeSphere 概述 275
17.3.2 KubeSphere環(huán)境準(zhǔn)備 276
17.3.3 KubeSphere安裝 279
17.3.4 KubeSphere啟用DevOps 282
17.4 KubeSphere多租戶 285
17.4.1 KubeSphere多租戶系統(tǒng) 285
17.4.2 KubeSphere多租戶角色 285
17.4.3 KubeSphere多租戶賬號(hào)分配 286
17.4.4 KubeSphere 企業(yè)空間創(chuàng)建
與賬號(hào)綁定 288
17.4.5 KubeSphere項(xiàng)目負(fù)責(zé)人賬號(hào)
分配 291
17.5 本章小結(jié) 294
第18章 KubeSphere部署中間件 295
18.1 應(yīng)用的狀態(tài) 295
18.1.1 有狀態(tài)應(yīng)用 295
18.1.2 無(wú)狀態(tài)應(yīng)用 295
18.1.3 KubeSphere項(xiàng)目的存儲(chǔ)、服務(wù)
與配置 296
18.2 KubeSphere部署中間件MySQL8 299
18.2.1 設(shè)置保密字典 299
18.2.2 設(shè)置配置字典 300
18.2.3 配置MySQL的持久卷PVC 302
18.2.4 創(chuàng)建MySQL的有狀態(tài)服務(wù) 304
18.2.5 為MySQL創(chuàng)建數(shù)據(jù)庫(kù)并導(dǎo)入
數(shù)據(jù) 309
18.3 部署Redis 312
18.3.1 創(chuàng)建Redis的配置字典
與持久卷 312
18.3.2 創(chuàng)建Redis有狀態(tài)服務(wù) 314
18.4 部署RabbitMQ 317
18.4.1 創(chuàng)建RabbitMQ的持久卷
與配置字典 317
18.4.2 創(chuàng)建RabbitMQ的無(wú)狀態(tài)服務(wù) 318
18.4.3 RabbitMQ無(wú)狀態(tài)服務(wù)對(duì)外
訪問(wèn) 320
18.5 原生安裝OpenResty 323
18.6 本章小結(jié) 326
第19章 DevOps流水線發(fā)布項(xiàng)目 327
19.1 DevOps前置準(zhǔn)備工作 327
19.1.1 DevOps部署流程 327
19.1.2 為流水線創(chuàng)建憑證 328
19.1.3 項(xiàng)目的生產(chǎn)配置 330
19.1.4 編寫(xiě)DockerFile 332
19.1.5 編寫(xiě)k8s-YAML部署文件 334
19.2 開(kāi)始DevOps流程 338
19.2.1 推送代碼 338
19.2.2 創(chuàng)建項(xiàng)目流水線 342
19.2.3 拉取代碼 344
19.2.4 為流水線構(gòu)建動(dòng)態(tài)參數(shù) 348
19.2.5 流水線打印動(dòng)態(tài)參數(shù) 350
19.2.6 為流水線配置環(huán)境變量 350
19.2.7 流水線推送鏡像到DockerHub 351
19.2.8 推送latest鏡像到DockerHub 356
19.2.9 流水線部署項(xiàng)目到KubeSphere
環(huán)境中 358
19.2.10 測(cè)試生產(chǎn)環(huán)境的項(xiàng)目接口
訪問(wèn) 360
19.3 集群與擴(kuò)容 360
19.3.1 手動(dòng)擴(kuò)容 360
19.3.2 自動(dòng)擴(kuò)容 362
19.3.3 OpenResty集群配置 363
19.4 構(gòu)建云負(fù)載均衡器 365
19.5 本章小結(jié) 369
- 零基礎(chǔ)玩轉(zhuǎn)國(guó)產(chǎn)大模型DeepSeek [徐永冰 張帥 編著]
- 網(wǎng)絡(luò)工程師5天修煉(適配第6版考綱) [主編 朱小平 施游]
- 信息系統(tǒng)項(xiàng)目管理師考試32小時(shí)通關(guān)(適用第4版考綱) [薛大龍]
- 信息系統(tǒng)管理工程師考試32小時(shí)通關(guān)(適配第2版考綱) [薛大龍 劉偉]
- 土木工程材料檢測(cè)實(shí)訓(xùn) [洪曉江 達(dá)則曉麗 錢(qián)波]
- 科技信息檢索與論文寫(xiě)作實(shí)用教程 [李振華]
- 傳統(tǒng)山水畫(huà)論解讀與實(shí)踐 [陳鈉 著]
- Python數(shù)據(jù)庫(kù)編程 [主編 殷樹(shù)友 邢 翀]
- 計(jì)算機(jī)基礎(chǔ)實(shí)訓(xùn)指導(dǎo) [主編 袁春萍 朱妮]
- 嵌入式人工智能技術(shù)應(yīng)用(數(shù)字教材) [主編 胡娜 楊國(guó)勇 晏廷榮]
- Vienna整流器技術(shù) [桂存兵 著]
- 變頻器與伺服應(yīng)用 [陳剛 葉云飛]
- 物聯(lián)網(wǎng)工程設(shè)計(jì)與實(shí)踐 [湯琳 李敏]
- 爐邊夜話——深入淺出話AI [汪建 著]
- 電商運(yùn)營(yíng)與管理 [鐘肖英 陳瀟]
- Java面向?qū)ο蟪绦蛟O(shè)計(jì) [主編 姜春磊 陳虹潔]
- 信息技術(shù)基礎(chǔ)(Windows 10+WPS Office)(微課版) [主編 石利平 田輝平 謝盛嘉]
- 人工智能應(yīng)用 [主編 陳 萍 劉培培 陳孟軍]
- 大學(xué)生職業(yè)發(fā)展與就業(yè)指導(dǎo) [主編 劉志堅(jiān)]
- 高級(jí)辦公應(yīng)用項(xiàng)目教程 [主編 屈晶 趙成麗]
- 微信小程序開(kāi)發(fā)項(xiàng)目實(shí)戰(zhàn)(微課版) [主編 黃龍泉 郭峰 朱倩]
- 企業(yè)檔案工作實(shí)戰(zhàn)寶典百問(wèn)百答 [華俊 盧秀英 邵甜甜 著]
- 計(jì)算機(jī)網(wǎng)絡(luò)原理及應(yīng)用 [主編 唐繼勇 葉坤 孫夢(mèng)娜]
- 大學(xué)生創(chuàng)業(yè)基礎(chǔ) [主編 王麗莉 王 楊]
- 船舶輔機(jī) [主編 王連海 于洋 姜淑翠]
- 大學(xué)生就業(yè)指導(dǎo) [主編 王麗莉 董宴廷]
- 系統(tǒng)架構(gòu)設(shè)計(jì)師章節(jié)習(xí)題與考點(diǎn)特訓(xùn) [主編 薛大龍 鄒月平]
- 高校學(xué)生工作探索與實(shí)踐 [郭亮 著]
- 大學(xué)生情商管理 [方雄 著]
- 2023年長(zhǎng)沙市會(huì)展業(yè)發(fā)展報(bào)告 [主編 周棟良]