關(guān)于我們
書單推薦
新書推薦
|
Go語言高并發(fā)與微服務(wù)實戰(zhàn)
近年來云原生技術(shù)發(fā)展迅猛,幫助開發(fā)者在云上快速和頻繁地構(gòu)建、發(fā)布和部署應(yīng)用,以提高開發(fā)效率和快速定位故障。 微服務(wù)作為開展云原生技術(shù)落地的核心,它將復(fù)雜的單體應(yīng)用按照業(yè)務(wù)劃分并進行有效地拆分,每個微服務(wù)都可以進行獨立部署和開發(fā),大大提升了應(yīng)用開發(fā)效率。Go語言作為新生代的編譯型編程語言,具備語法簡單、高并發(fā)性能良好和編譯速度快等特點,是微服務(wù)架構(gòu)落地實踐的絕妙利器。
深入Go語言和微服務(wù)框架,提供高并發(fā)場景下Go微服務(wù)應(yīng)用實戰(zhàn)案例
寫作背景 Go語言在云計算時代大放異彩。 進入互聯(lián)網(wǎng)時代,尤其是移動互聯(lián)網(wǎng)時代之后,這個大環(huán)境面臨新的挑戰(zhàn),一方面在功能性方面要求越來越高:除了簡單功能快速實現(xiàn)之外,還有對性能、安全、穩(wěn)定性、高可用和可擴展性的諸多要求,而且越來越苛刻;另一個方面,更多的需求來自對效率的追求:包括開發(fā)、測試、部署、維護和迭代變更的效率,以及對成本的要求。 快速迭代是傳統(tǒng)企業(yè)的硬傷,這不是通過加班就能解決的。在滿足各種功能性的前提下,易用性的提升不僅僅滿足了企業(yè)的需求,也極大地改善了開發(fā)體驗。 對效率的追求,推動了云計算的產(chǎn)生和發(fā)展,以及云原生理念和架構(gòu)的產(chǎn)生,我們熟知的容器技術(shù)、微服務(wù)架構(gòu)以及新生的Service Mesh架構(gòu)都由此誕生,不可變基礎(chǔ)設(shè)施和聲明式API的理念也在實踐中被總結(jié)出來,并為后續(xù)的云原生架構(gòu)提供理論指導(dǎo)。云計算的發(fā)展以及云原生的推出,為云和云上產(chǎn)品帶來了除功能性之外的易用性特征。由于大部分維護工作由云承擔(dān),因此降低了對于維護的工作量,開發(fā)人員和應(yīng)用服務(wù)更加關(guān)注與業(yè)務(wù)實現(xiàn),而非業(yè)務(wù)實現(xiàn)的內(nèi)容應(yīng)該由云和云上產(chǎn)品提供。 對效率的追求,催生了云和云原生架構(gòu),帶來了易用性的提升,改善了開發(fā)體驗,從而進一步提升了效率。這個過程會持續(xù)發(fā)生,架構(gòu)的演進不是一蹴而就的,而是一個長期發(fā)展的過程,因此云原生架構(gòu)也會持續(xù)演進。在過去幾年間,云原生架構(gòu)中的容器/微服務(wù)等架構(gòu)都是在這個循環(huán)中不斷完善和普及的。 技術(shù)背景 微服務(wù)架構(gòu)是云原生架構(gòu)中的關(guān)鍵技術(shù)點,也是本書主要的關(guān)注點。微服務(wù)的話題,近幾年一直很熱門,微服務(wù)是SOA架構(gòu)的一種具體實踐。除了微服務(wù)以外,Go語言也很熱門,越來越受到開發(fā)人員的青睞。Go(又稱Golang)是Google開發(fā)的一種靜態(tài)強類型、編譯型、并發(fā)型且具有垃圾回收功能的編程語言。 Go語言自2009年開源以來,持續(xù)受到關(guān)注。Go語言之所以厲害,是因為它在服務(wù)端的開發(fā)中,能抓住程序員的痛點,以最直接、簡單、高效和穩(wěn)定的方式來解決問題;贕o語言實現(xiàn)的微服務(wù),更好地體現(xiàn)微服務(wù)和Go語言的優(yōu)勢。 人類對于技術(shù)進步的追求從未停歇。熱門的技術(shù)組合在一起,能不能發(fā)揮各自的優(yōu)勢,變得更加高效?其實不然,在逐漸發(fā)展的環(huán)境和技術(shù)演化的過程中,存在著技術(shù)人員對主流技術(shù)趨勢的理解參差不齊現(xiàn)象。當(dāng)然架構(gòu)沒有絕對的對與錯,本書將會帶讀者走進基于Go語言的高并發(fā)與微服務(wù)實戰(zhàn)世界,在這個世界里不停地探索和汲取經(jīng)驗。 本書內(nèi)容以當(dāng)前流行的微服務(wù)架構(gòu)和Go語言的高并發(fā)特性為主線,介紹Go語言微服務(wù)的各個組件和并發(fā)實戰(zhàn)。本書包含四個部分的內(nèi)容: (1)第一部分淺談云原生與微服務(wù),涉及云原生架構(gòu)的全貌介紹和微服務(wù)的概述。 (2)第二部分介紹Go語言基礎(chǔ),側(cè)重于介紹Go語言的一些特性。 (3)第三部分深入Go語言的微服務(wù)實踐,介紹微服務(wù)架構(gòu)中涉及的基礎(chǔ)組件,如分布式配置中心、服務(wù)注冊與發(fā)現(xiàn)、輕量級通信機制與負(fù)載均衡、微服務(wù)的容錯處理和分布式鏈路追蹤等組件,在熟悉組件原理的基礎(chǔ)上進行并發(fā)實踐。 (4)最后一部分為綜合實戰(zhàn),將會結(jié)合Go語言微服務(wù)框架Go-kit實現(xiàn)一個完整的商品秒殺系統(tǒng),涉及本書介紹的各個微服務(wù)組件,并將這些組件進行整合。 讀者對象 本書比較適合架構(gòu)師和有一定基礎(chǔ)的技術(shù)人員閱讀,特別是正在實踐或準(zhǔn)備實踐微服務(wù)的架構(gòu)師和開發(fā)人員,以及轉(zhuǎn)型到Go語言微服務(wù)開發(fā)的技術(shù)團隊。希望本書能給讀者在微服務(wù)和Go語言開發(fā)實踐中獲取一些經(jīng)驗和靈感,少走一些彎路,最終的目的是提升技術(shù)人員的開發(fā)體驗和企業(yè)產(chǎn)品迭代的效率。 源碼及勘誤 本書提供源代碼下載(見封面后勒口,可掃碼或鏈接下載),備用下載地址為https://github.com/ longjoy/micro-go-book。 讀者在實踐時,需要注意組件下載的版本,建議相關(guān)開發(fā)環(huán)境與本書一致,或者不低于本書所列的配置。不同版本之間存在兼容性問題,而且不同版本的軟件所對應(yīng)的功能有的也是不同的。 書中的內(nèi)容大多來自編者的工作經(jīng)驗,不免存在遺漏及錯誤,歡迎指正。讀者可以直接發(fā)送郵件到郵箱(aoho002@gmail.com),在此提前表示感謝。 作者團隊與致謝 本書由朱榮鑫、黃迪璇、張?zhí)旃餐瓿。具體章節(jié)的分工,其中第1、5、8、9、12章由朱榮鑫編寫;第3、4、6、10、11章由黃迪璇編寫;第2、7、13章由張?zhí)炀帉懀蝗珪芍鞓s鑫統(tǒng)稿。 本書的完成需要感謝很多朋友和同行的傾力幫助,感謝Go語言社區(qū)的熱心小伙伴在本書撰寫前后提供了很多內(nèi)容組織方面的建議,他們犧牲不少休息時間幫忙審稿,給了筆者很多實質(zhì)性的指導(dǎo);感謝筆者所在的公司為筆者提供的良好平臺,幫助筆者積累了大量Go語言高并發(fā)與微服務(wù)架構(gòu)實踐的經(jīng)驗。 寫書是一件枯燥的事情,一本書從想法、策劃到出版非常不易,編輯老師給了編者很大的信心和幫助。在內(nèi)容和結(jié)構(gòu)組織上,編者也是同本書策劃編輯荊波老師反復(fù)進行了討論和校正,因此特別感謝中國鐵道出版社有限公司的荊波編輯和其他工作人員為本書的出版所做的努力。 編 者 2020年2月
朱榮鑫
軟件工程碩士,微服務(wù)早期實踐者,微服務(wù)方面技術(shù)專家,對高并發(fā)、分布式有多年深入的實踐經(jīng)驗。掘金優(yōu)秀作者,CSDN博客專家。公眾號“aoho求索”的作者。 黃迪璇 畢業(yè)于南京大學(xué),目前就職于國內(nèi)一線互聯(lián)網(wǎng)公司,曾就職于字節(jié)跳動、騰訊,具有多年服務(wù)端開發(fā)經(jīng)驗,技術(shù)極客,熱衷于新技術(shù)的研究和實踐。 張?zhí)? 服務(wù)端技術(shù)專家,精耕于微服務(wù)、分布式、數(shù)據(jù)庫和性能調(diào)優(yōu)等后端開發(fā)領(lǐng)域。著有《Spring Cloud微服務(wù)架構(gòu)進階》,CSDN博客專家。公眾號“程序員歷小冰”的作者。
第一篇 云原生與微服務(wù)
云原生與微服務(wù)分別是什么,它們之間有什么關(guān)系呢?本部分圍繞云原生與微服務(wù)的概 念展開介紹,我們透過云計算的歷史和系統(tǒng)架構(gòu)的演進,具體了解這兩個概念的意義及其背 后的技術(shù)發(fā)展。 第 1 章 云原生架構(gòu) 1.1 云計算的歷史 1 1.1.1 云計算的基礎(chǔ):虛擬化技術(shù) 1 1.1.2 基于虛擬機的云計算 3 1.1.3 容器的橫空出世和容器編排大戰(zhàn) 5 1.1.4 云計算演進總結(jié) 6 1.2 云原生是什么 7 1.2.1 云原生出現(xiàn)的背景 7 1.2.2 云原生的定義 8 1.2.3 云原生與 12 因素 9 1.3 云原生的基礎(chǔ)架構(gòu) 11 1.3.1 微服務(wù) 11 1.3.2 容器 12 1.3.3 服務(wù)網(wǎng)格 13 1.3.4 DevOps 14 1.4 小結(jié) 15 第 2 章 微服務(wù)概述 2.1 系統(tǒng)架構(gòu)的演進 16 2.1.1 單體架構(gòu) 16 2.1.2 垂直分層架構(gòu) 17 2.1.3 SOA 面向服務(wù)架構(gòu) 17 2.1.4 微服務(wù)架構(gòu) 19 2.1.5 云原生架構(gòu) 21 2.2 常見的微服務(wù)框架 22 2.2.1 Java 中的 Spring Cloud 與 Dubbo 框架 22 2.2.2 Go 語言中的 Go Kit 與 Go Micro 框架 24 2.3 微服務(wù)設(shè)計的六大原則 27 1.高內(nèi)聚,低耦合 27 2.高度自治 27 3.以業(yè)務(wù)為中心 28 4.彈性設(shè)計 28 5.日志與監(jiān)控 28 6.自動化 28 2.4 領(lǐng)域驅(qū)動設(shè)計 28 2.4.1 設(shè)計微服務(wù)的困境 28 2.4.2 解困之法:領(lǐng)域驅(qū)動設(shè)計(DDD) 29 2.4.3 DDD 的應(yīng)用領(lǐng)域 30 2.4.4 DDD 領(lǐng)域劃分 31 2.4.5 微服務(wù)架構(gòu)中的團隊組織和管理 33 2.5 小結(jié) 34 第二篇 Go 語法基礎(chǔ)與特性功能 在正式進入微服務(wù)組件的學(xué)習(xí)之前,我們要鞏固一下 Go 語言的基礎(chǔ),包括容器、原生 數(shù)據(jù)類型、函數(shù)與接口、結(jié)構(gòu)體和方法等常用的語法基礎(chǔ);其次是 Go 語言的特性功能:反 射與并發(fā)模型,介紹 Go 語言協(xié)程、通道、多路復(fù)用和同步的具體實踐;最后是 Golang Web 的相關(guān)介紹,一起構(gòu)建一個完整的 Go Web 服務(wù)器。 第 3 章 Go 語言基礎(chǔ) 3.1 Go 語言介紹 35 3.2 環(huán)境安裝 36 3.2.1 Go 開發(fā)包安裝 36 3.2.2 第一個 Go 語言程序 38 3.2.3 編譯工具 40 3.3 基本語法 41 3.3.1 變量的聲明與初始化 41 3.3.2 原生數(shù)據(jù)類型 43 【實例 3-1】分別以 byte 和 rune 的方式遍歷字符串 44 3.3.3 指針 45 【實例 3-2】使用 flag 從命令行中讀取參數(shù) 47 3.3.4 常量與類型別名 48 3.3.5 分支與循環(huán)控制 49 3.4 Go 中常用的容器 50 3.4.1 數(shù)組 50 3.4.2 切片 51 【實例 3-3】切片的動態(tài)擴容 53 3.4.3 列表與字典 54 3.4.4 容器遍歷 57 【實例 3-4】對給出的數(shù)組 nums、切片 slis 和字典 tmpMap 分別進行遍歷 57 3.5 函數(shù)與接口 58 3.5.1 函數(shù)聲明和參數(shù)傳遞 58 3.5.2 匿名函數(shù)和閉包 59 【實例 3-5】使用回調(diào)函數(shù)處理字符串 59 【實例 3-6】用閉包的特性實現(xiàn)一個簡單的計數(shù)器 60 3.5.3 接口聲明和嵌套 61 3.5.4 函數(shù)體實現(xiàn)接口 62 3.6 結(jié)構(gòu)體和方法 62 3.6.1 結(jié)構(gòu)體的定義 63 3.6.2 結(jié)構(gòu)體的實例化和初始化 63 3.6.3 方法與接收器 64 【實例 3-7】為 Person 結(jié)構(gòu)體添加修改姓名和輸出個人信息兩個方法 65 3.6.4 結(jié)構(gòu)體實現(xiàn)接口 66 【實例 3-8】使用一個結(jié)構(gòu)體同時實現(xiàn) Cat 和 Dog 接口 66 3.6.5 內(nèi)嵌和組合 67 【實例 3-9】內(nèi)嵌不同結(jié)構(gòu)體表現(xiàn)不同行為 68 3.7 小結(jié) 69 第 4 章 進階——Go 語言高級特性 4.1 依賴管理 70 4.1.1 包管理 70 4.1.2 GOPATH 72 4.1.3 Go Modules 73 4.2 反射基礎(chǔ) 73 4.2.1 reflect.Type 類型對象 74 4.2.2 類型對象 reflect.StructField 和 reflect.Method 76 4.2.3 reflect.Value 反射值對象 78 【實例 4-1】使用反射調(diào)用接口方法 80 4.3 并發(fā)模型 82 4.3.1 并發(fā)與并行 82 4.3.2 CSP 并發(fā)模型 82 4.3.3 常見的線程模型 83 4.3.4 MPG 線程模型概述 85 4.4 并發(fā)實踐 87 4.4.1 協(xié)程 goroutine 87 4.4.2 通道 channel 89 【實例 4-2】協(xié)程使用 channel 發(fā)送和接收數(shù)據(jù) 90 【實例 4-3】使用帶緩沖區(qū)的 channel 91 【實例 4-4】使用 switch 從多個 channel 中讀取數(shù)據(jù) 92 4.4.3 sync 同步包 94 【實例 4-5】使用 sync.Mutex 控制多 goroutine 串行執(zhí)行 94 【實例 4-6】sync.RWMutex 允許多讀和單寫 95 【實例 4-7】sync.WaitGroup 阻塞主 goroutine 直到其他 goroutine 執(zhí)行結(jié)束 97 【實例 4-8】使用 sync.Map 并發(fā)添加數(shù)據(jù) 98 4.5 小結(jié) 99 第 5 章 構(gòu)建 Go Web 服務(wù)器 5.1 Web 的工作原理 100 5.1.1 HTTP 協(xié)議詳解 100 5.1.2 訪問 Web 站點的過程 103 5.2 使用 Go 語言構(gòu)建服務(wù)器 104 【實例 5-1】快速搭建一個 Go Web 服務(wù)器 104 5.3 接收和處理請求 105 5.3.1 Web 工作的幾個概念 106 5.3.2 處理器處理請求 107 5.3.3 解析請求體 109 【實例 5-2】Go Web 請求體解析 109 5.3.4 返回響應(yīng)體 111 【實例 5-3】返回響應(yīng)體實踐 112 5.4 實踐案例:Golang Web 框架 Gin 實踐 113 5.5 服務(wù)端數(shù)據(jù)存儲 116 5.5.1 內(nèi)存存儲 116 【實例 5-4】服務(wù)端基于內(nèi)存的存儲方式實踐 116 5.5.2 database/sql 接口 118 5.5.3 關(guān)系數(shù)據(jù)庫存儲(MySQL) 118 【實例 5-5】服務(wù)端基于 MySQL 的存儲方式實踐 119 5.5.4 Nosql 數(shù)據(jù)庫存儲(MongoDB) 120 【實例 5-6】服務(wù)端基于 MongoDB 的存儲方式實踐 121 5.6 Golang ORM 框架 beego 實踐 122 5.7 小結(jié) 125 第三篇 微服務(wù)核心組件 本部分是全書的核心,介紹微服務(wù)中各個核心組件的原理和實踐應(yīng)用,包括分布式配置 中心、服務(wù)注冊與發(fā)現(xiàn)、微服務(wù)網(wǎng)關(guān)、微服務(wù)的容錯、微服務(wù)中的通信與負(fù)載均衡、統(tǒng)一認(rèn) 證與授權(quán)、微服務(wù)中的鏈路追蹤。通過組件原理的介紹、組件的選型對比以及組件的實踐應(yīng) 用,吃透每一個微服務(wù)組件。 第 6 章 服務(wù)注冊與發(fā)現(xiàn) 6.1 服務(wù)注冊與發(fā)現(xiàn)的基本原理 126 6.1.1 服務(wù)注冊與發(fā)現(xiàn)中心的職責(zé) 126 6.1.2 服務(wù)實例注冊服務(wù)信息 127 6.1.3 CAP 原理 127 6.2 常用的服務(wù)注冊與發(fā)現(xiàn)框架 128 6.2.1 基于 Raft 算法的開箱即用服務(wù)發(fā)現(xiàn)組件 Consul 128 6.2.2 基于 HTTP 協(xié)議的分布式 key/Value 存儲組件 Etcd 130 6.2.3 重量級一致性服務(wù)組件 Zookeeper 131 6.2.4 服務(wù)注冊與發(fā)現(xiàn)組件的對比與選型 132 6.3 Consul 安裝和接口定義 133 6.3.1 Consul 的安裝與啟動 133 6.3.2 Go-kit 項目結(jié)構(gòu) 134 6.3.3 服務(wù)注冊與發(fā)現(xiàn)接口 135 6.3.4 項目的總體結(jié)構(gòu) 135 6.4 實踐案例:直接使用 HTTP 的方式和 Consul 交互 140 6.4.1 服務(wù)注冊與健康檢查 142 6.4.2 服務(wù)注銷 144 6.4.3 服務(wù)發(fā)現(xiàn) 146 6.5 實踐案例:借助 Go-kit 服務(wù)注冊與發(fā)現(xiàn)包和 Consul 交互 147 6.5.1 服務(wù)注冊與健康檢查 148 6.5.2 服務(wù)注銷 149 6.5.3 服務(wù)發(fā)現(xiàn) 150 6.5.4 服務(wù)實例信息緩存 150 6.5.5 MyDiscoverClient 和 KitDiscoverClient 的比較 153 6.6 實踐案例:基于服務(wù)注冊與發(fā)現(xiàn)的 string-service 153 6.6.1 項目結(jié)構(gòu) 153 6.6.2 各層構(gòu)建 154 6.7 小結(jié) 162 第 7 章 遠程過程調(diào)用 RPC 7.1 RPC 機制和實現(xiàn)過程 164 7.1.1 RPC 機制 164 7.1.2 傳遞參數(shù) 167 7.1.3 通信協(xié)議制定 168 7.1.4 出錯和超時處理 170 7.1.5 通用 RPC 接口 171 7.2 簡易的 Go 語言原生 RPC 172 7.2.1 實踐案例:Go 語言 RPC 過程調(diào)用實踐 172 7.2.2 服務(wù)端注冊實現(xiàn)原理分析 175 7.2.3 服務(wù)端處理 RPC 請求原理分析 178 7.2.4 客戶端發(fā)送 RPC 請求原理分析 182 7.2.5 資源重用 187 7.3 高性能的 gRPC 188 7.3.1 gRPC 的安裝 189 7.3.2 實踐案例:gRPC 過程調(diào)用實踐 190 7.3.3 流式編程 193 【實例 7-1】gRPC 流式請求 193 7.4 便捷的 Go-kit RPC 196 7.4.1 Go-kit 簡介 196 7.4.2 實踐案例:Go-kit 過程調(diào)用實踐 197 7.5 小結(jié) 202 第 8 章 分布式配置中心 8.1 如何管理分布式應(yīng)用的配置 203 8.2 常見分布式配置中心開源組件 204 8.2.1 Spring Cloud Config. 204 8.2.2 Apollo 205 8.2.3 Disconf 208 8.2.4 分布式配置中心的對比 210 8.3 應(yīng)用 Spring Cloud Config 統(tǒng)一管理配置 210 8.3.1 搭建 Spring Cloud Config Server 210 8.3.2 Viper 介紹 213 【實例 8-1】Viper 實現(xiàn)讀取本地配置信息 214 8.3.3 實戰(zhàn)案例:動手實現(xiàn) Spring Cloud Config 的 Go 語言客戶端 216 8.4 實踐案例:實現(xiàn)配置的熱更新 219 8.4.1 如何實現(xiàn)熱更新 219 8.4.2 Go 語言客戶端改進 220 8.4.3 結(jié)果驗證 223 8.5 配置信息的加密解密 224 8.5.1 JCE 環(huán)境安裝 225 8.5.2 對稱加密與解密 225 8.5.3 非對稱加密與解密 226 8.6 小結(jié) 227 第 9 章 微服務(wù)網(wǎng)關(guān) 9.1 微服務(wù)網(wǎng)關(guān)介紹與功能特性 228 9.2 實踐案例:自己動手實現(xiàn)一個網(wǎng)關(guān) 231 9.2.1 實現(xiàn)思路 231 9.2.2 編寫反向代理方法 232 9.2.3 編寫入口方法 233 9.2.4 運行 235 9.2.5 測試 235 9.3 API 網(wǎng)關(guān)選型 235 9.3.1 標(biāo)配組件:Nginx 網(wǎng)關(guān) 236 9.3.2 Java 前置網(wǎng)關(guān)服務(wù)最佳選型:Netflix Zuul 237 9.3.3 高可用服務(wù)網(wǎng)關(guān):Mashape Kong 239 9.3.4 三種常用 API 網(wǎng)關(guān)組件的指標(biāo)對比 240 9.4 Kong 接入 240 9.4.1 為什么使用 Kong 240 9.4.2 Kong 安裝實踐 241 【實例 9-1】Docker 方式安裝 Kong 242 9.4.3 創(chuàng)建服務(wù) 244 9.4.4 創(chuàng)建路由 245 9.5 安裝 Kong 插件 246 9.5.1 跨域身份驗證:JWT 認(rèn)證插件 246 9.5.2 系統(tǒng)監(jiān)控報警:Prometheus 可視化監(jiān)控插件 248 9.5.3 實時鏈路數(shù)據(jù)追蹤:Zipkin 插件 250 9.5.4 進階應(yīng)用:自定義 Kong 插件 252 【實例 9-2】自定義鑒權(quán)插件 token-auth 252 9.6 小結(jié) 257 第 10 章 微服務(wù)的容錯處理與負(fù)載均衡 10.1 服務(wù)熔斷 258 10.1.1 分布式系統(tǒng)中的服務(wù)雪崩 258 10.1.2 服務(wù)熔斷保障系統(tǒng)可用性 260 10.1.3 斷路器 261 10.2 負(fù)載均衡 262 10.2.1 負(fù)載均衡類型 262 10.2.2 負(fù)載均衡算法 262 10.3 實踐案例:服務(wù)熔斷和負(fù)載均衡使用 263 10.3.1 負(fù)載均衡器 263 10.3.2 服務(wù)編寫 264 10.3.3 使用 Go-kit Hystrix 中間件 270 【實例 10-1】使用 Go-kit Hystrix 中間件修飾 Endpoint 270 10.4 Hystrix 詳解 271 10.4.1 Hystrix 基本使用 272 10.4.2 運行流程 273 10.4.3 常用參數(shù)配置 274 10.5 Hystrix 監(jiān)控面板 275 10.5.1 獲取 Hystrix 命令調(diào)用信息 275 10.5.2 使用 Hystrix Dashboard 可視化面板 277 10.6 實踐案例:在網(wǎng)關(guān)中添加 Hystrix 熔斷和負(fù)載均衡 279 10.7 小結(jié) 282 第 11 章 統(tǒng)一認(rèn)證與授權(quán) 11.1 微服務(wù)安全的挑戰(zhàn)和現(xiàn)狀 283 11.2 常見的認(rèn)證與授權(quán)方案 283 11.2.1 當(dāng)前行業(yè)授權(quán)標(biāo)準(zhǔn) OAuth2 283 11.2.2 數(shù)據(jù)共享的分布式 Session 287 11.2.3 安全傳輸對象 JWT 288 11.3 實踐案例:基于 OAuth2 協(xié)議和 JWT 實現(xiàn)一套簡單 的認(rèn)證和授權(quán)系統(tǒng) 290 11.3.1 系統(tǒng)整體架構(gòu) 290 11.3.2 授權(quán)服務(wù)器 291 1.用戶服務(wù)和客戶端服務(wù) 292 2.TokenGrant 令牌生成器 294 3.TokenService 令牌服務(wù) 296 4.TokenStore 令牌存儲器 300 5./oauth/token 和/oauth/check_token 303 6.請求訪問令牌和刷新令牌 306 11.3.3 資源服務(wù)器 311 1.令牌認(rèn)證 311 2.鑒權(quán) 312 3.訪問受限資源 313 11.4 小結(jié) 317 第 12 章 分布式鏈路追蹤 12.1 診斷分布式系統(tǒng)的問題 318 12.1.1 為什么需要分布式鏈路追蹤 318 12.1.2 什么是分布式鏈路追蹤 319 12.1.3 分布式鏈路追蹤規(guī)范:OpenTracing 320 12.1.4 分布式鏈路追蹤的基礎(chǔ)概念 321 12.2 幾種流行的分布式鏈路追蹤組件 323 12.2.1 簡單易上手的 Twitter Zipkin 323 12.2.2 云原生鏈路監(jiān)控組件 Uber Jaeger 324 12.2.3 探針性能低損耗的 SkyWalking 326 12.2.4 鏈路統(tǒng)計詳細的 Pinpoint 327 12.2.5 4 種分布式鏈路追蹤組件的指標(biāo)對比 328 12.3 實踐案例:應(yīng)用 Zipkin 追蹤 Go 微服務(wù) 329 12.3.1 微服務(wù)中集成 zipkin-go 330 12.3.2 Go-kit 微服務(wù)框架集成 Zipkin 實現(xiàn)鏈路追蹤 337 1.HTTP 調(diào)用方式的鏈路追蹤 338 2.gRPC 調(diào)用方式的鏈路追蹤 342 12.4 小結(jié) 346 第四篇 綜合實戰(zhàn) 本部分是商品秒殺系統(tǒng)的實戰(zhàn)項目,綜合難度相對較高,我們通過分析業(yè)務(wù)系統(tǒng)的領(lǐng)域 設(shè)計,將系統(tǒng)劃分成具體的微服務(wù),整合各個微服務(wù)組件,最終實現(xiàn)一個高并發(fā)的商品秒殺 系統(tǒng)。 第 13 章 綜合實戰(zhàn):秒殺系統(tǒng)的設(shè)計與實現(xiàn) 13.1 秒殺系統(tǒng)簡介 347 13.2 項目架構(gòu)簡介 350 13.2.1 項目簡述 350 13.2.2 架構(gòu)信息 350 13.2.3 流程簡介 352 13.3 整合升級:各個微服務(wù)腳手架的組裝 353 13.3.1 服務(wù)注冊和發(fā)現(xiàn) 353 13.3.2 負(fù)載均衡策略 357 13.3.3 RPC 客戶端裝飾器 360 13.3.4 限流 362 13.3.5 Go 語言 Redis 使用簡介 364 13.3.6 Zookeeper 集成 366 13.3.7 Go-kit 開發(fā)利器 Truss 367 13.4 秒殺核心邏輯 368 13.4.1 秒殺業(yè)務(wù)系統(tǒng) 370 13.4.2 秒殺核心系統(tǒng) 380 13.4.3 秒殺管理系統(tǒng) 384 13.5 性能壓測 386 13.5.1 查看服務(wù)的配置文件 386 13.5.2 壓測實驗 387 13.6 小結(jié) 390
你還可能感興趣
我要評論
|