版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
內(nèi)容簡介
近年來云原生技術(shù)發(fā)展迅猛,幫助開發(fā)者在云上快速和頻繁地構(gòu)建、發(fā)布和部署應(yīng)
用,以提高開發(fā)效率和快速定位故障。
微服務(wù)作為開展云原生技術(shù)落地的核心,它將復(fù)雜的單體應(yīng)用按照業(yè)務(wù)劃分并進(jìn)行
有效地拆分,每個(gè)微服務(wù)都可以進(jìn)行獨(dú)立部署和開發(fā),大大提升了應(yīng)用開發(fā)效率。Go
語言作為新生代的編譯型編程語言,具備語法簡單、高并發(fā)性能良好和編譯速度快等特
點(diǎn),是微服務(wù)架構(gòu)落地實(shí)踐的絕妙利器。
本書圍繞云原生、微服務(wù)和Go語言,介紹如何通過Go語言進(jìn)行微服務(wù)架構(gòu)開發(fā)與
實(shí)踐。旨在幫助讀者深入理解微服務(wù)架構(gòu)并使用Go語言快速加入到微服務(wù)開發(fā)中。
圖書在版編目(CIP)數(shù)據(jù)
Go語言高并發(fā)與微服務(wù)實(shí)戰(zhàn)/朱榮鑫,黃迪璇,張?zhí)炀幹?--北京:
中國鐵道出版社有限公司,2020.4
ISBN978-7-113-26662-2
Ⅰ.①G…Ⅱ.①朱…②黃…③張…Ⅲ.①程序語
言-程序設(shè)計(jì)Ⅳ.①TP312
中國版本圖書館CIP數(shù)據(jù)核字(2020)第029901號(hào)
書名:Go語言高并發(fā)與微服務(wù)實(shí)戰(zhàn)
GOYUYANGAOBINGFAYUWEIFUWUSHIZHAN
作者:朱榮鑫黃迪璇張?zhí)?/p>
責(zé)任編輯:荊波讀者熱線電話/p>
責(zé)任印制:趙星辰封面設(shè)計(jì):
出版發(fā)行:中國鐵道出版社有限公司(100054,北京市西城區(qū)右安門西街8號(hào))
印刷:中國鐵道出版社印刷廠
版次:2020年4月第1版2020年4月第1次印刷
開本:787mm×1092mm1/16印張:25.5字?jǐn)?shù):574千
書號(hào):ISBN978-7-113-26662-2
定價(jià):89.00元
版權(quán)所有侵權(quán)必究
凡購買鐵道版圖書,如有印制質(zhì)量問題,請(qǐng)與本社讀者服務(wù)部聯(lián)系調(diào)換。電話:(010)51873174
打擊盜版舉報(bào)電話:(010)51873659
推薦序一
其實(shí)年前我就已經(jīng)收到這本書的樣稿,但是因?yàn)榉N種原因,一直沒能抽出較為完整的
時(shí)間細(xì)讀。2020的這個(gè)春天可謂多事之秋,作為一名普通教師,在教師與“主播”角色的
切換當(dāng)中,益發(fā)感受到知識(shí)傳播的價(jià)值。正是在這樣的背景之下,我非常欣喜地看到《Go
語言高并發(fā)與微服務(wù)實(shí)踐》一書即將出版,并受作者委托,為該書寫序。
我認(rèn)為這本書有兩條主線:其一,該書從Go編程語言的角度,系統(tǒng)介紹了該語言的
發(fā)展淵源和特性,并結(jié)合大量實(shí)例,詳細(xì)介紹了該語言在實(shí)際軟件開發(fā)中的應(yīng)用;其二,
該書從微服務(wù)架構(gòu)的角度介紹了這種當(dāng)前最流行的架構(gòu)方式的技術(shù)背景并完整闡述了微
服務(wù)架構(gòu)的關(guān)鍵概念、實(shí)踐和方法。讓人驚喜的是,作者對(duì)上述兩條主線的處理非常有匠
心,使得全書結(jié)構(gòu)緊湊,詳略得當(dāng),可讀性非常好。
這些年來,隨著軟件發(fā)展服務(wù)化和網(wǎng)絡(luò)化的深入發(fā)展,DevOps以及圍繞DevOps相關(guān)
的一些方法、工具和實(shí)踐的重要性獲得了越來越多實(shí)踐者的認(rèn)同。然而,如何適應(yīng)這樣的
發(fā)展趨勢以及如何對(duì)現(xiàn)有IT系統(tǒng)以及設(shè)施進(jìn)行DevOps化的改造,這些問題仍然困擾著很
多軟件從業(yè)人員。本書由易及難,非常詳細(xì)地給出了上述問題的解答。
綜上所述,本書既適合在校學(xué)生閱讀學(xué)習(xí),也適合作為技術(shù)人員的參考用書。感謝本
書作者為知識(shí)傳播而付出的努力。
榮國平博士
南京大學(xué)副研究員
《DevOps:原理、方法與實(shí)踐》主編
i
推薦序二
Go語言是一種編譯型程序設(shè)計(jì)語言,支持并發(fā)、垃圾回收機(jī)制以提升應(yīng)用程序性能。
它既具有像C這種靜態(tài)編譯型語言的高性能,又具備像Python這種動(dòng)態(tài)語言的高效性。
目前已經(jīng)越來越重要,幾乎已經(jīng)成為云原生時(shí)代的主流語言,像Kubernetes、Docker等一
些基礎(chǔ)設(shè)施的開源系統(tǒng)都是基于Go語言實(shí)現(xiàn)的。因?yàn)镚o語言的高性能和高效性,其在基
礎(chǔ)組件領(lǐng)域也大放異彩,如分布式數(shù)據(jù)庫TiDB、服務(wù)網(wǎng)格Istio、微服務(wù)框架Go-kit與Go
Micro等。
微服務(wù)是近些年非常流行的軟件架構(gòu)模式,也是老生常談的互聯(lián)網(wǎng)技術(shù)之一。從架構(gòu)
模式的發(fā)展歷史來看,我們經(jīng)歷了傳統(tǒng)單體應(yīng)用架構(gòu)、面向服務(wù)架構(gòu)SOA以及火熱的微
服務(wù)架構(gòu)MSA等這幾個(gè)架構(gòu)模式;本質(zhì)上來說,每次架構(gòu)模式的轉(zhuǎn)變,都是為了解決隨
著軟件復(fù)雜度的上升,如何有效提升研發(fā)效率的問題。
然而,微服務(wù)架構(gòu)并不是“銀彈”。微服務(wù)架構(gòu)提升了研發(fā)效率,解決了系統(tǒng)擴(kuò)展能
力的同時(shí),也增加了系統(tǒng)的復(fù)雜性,例如,跨進(jìn)程通信、分布式事務(wù)、系統(tǒng)協(xié)調(diào)測試、
分布式問題排查等諸多方面的問題。因此,在考慮是否使用微服務(wù)架構(gòu)時(shí),需要詳細(xì)思
考以上問題、業(yè)務(wù)需求以及團(tuán)隊(duì)自身的能力等,不能為了微服務(wù)而微服務(wù)。除此之外,
還面臨著開發(fā)語言和技術(shù)棧選型上的問題。目前,雖然微服務(wù)方面的書籍如雨后春筍一
般,但基于Go語言的微服務(wù)實(shí)戰(zhàn)的書籍可謂鳳毛麟角。而本書恰好補(bǔ)充了這塊的不足。
它從微服務(wù)和Go語言的基礎(chǔ)講起,又介紹了當(dāng)前主流的熱門微服務(wù)框架,還詳細(xì)拓展了
微服務(wù)相關(guān)的網(wǎng)關(guān)、配置中心、注冊中心、鑒權(quán)、容錯(cuò)、負(fù)載均衡以及分布式鏈路追蹤
等相關(guān)的內(nèi)容。并且難能可貴的是幾乎在每章節(jié)中都有大量的Go語言相關(guān)的實(shí)戰(zhàn)部分。
整本書從基礎(chǔ)概念到高級(jí)話題,從理論到實(shí)踐都有涉及,面面俱到,實(shí)屬架構(gòu)師案頭不
可或缺的參考書。
我們生活在這高速發(fā)展的時(shí)代,互聯(lián)網(wǎng)技術(shù)與產(chǎn)品日新月異,我們非常有幸能夠參與
和見證時(shí)代的發(fā)展。在此,感謝本書作者花了大量的時(shí)間,分享了寶貴的知識(shí)。
殷琦
微信公眾號(hào)“滌生的博客”作者
美團(tuán)點(diǎn)評(píng)技術(shù)專家,主要負(fù)責(zé)服務(wù)框架、服務(wù)治理相關(guān)的研發(fā)工作
ii
推薦序三
很榮幸能第一時(shí)間讀到書稿,在云原生(CloudNative)時(shí)代,Go語言的并發(fā)、性能、
安全性、易于部署等特性,使它很容易成為“云原生語言”。為什么如今Go語言如此流行?
Go語言的厲害之處在于它抓住了程序員的痛點(diǎn),簡單直接、高效地解決了編程中的高并
發(fā)和高性能問題,將程序員從這些繁瑣的問題中解放出來,Go語言使用簡單,上手快,
編碼規(guī)范統(tǒng)一,和Python等語言相比,開發(fā)效率并沒有明顯降低。業(yè)界大名鼎鼎的Docker,
Kubernetes等軟件都是用Go語言實(shí)現(xiàn)的。
這本書在前半部分講解了Go語言基礎(chǔ)和進(jìn)階知識(shí),以及Go語言在Web開發(fā)領(lǐng)域的
應(yīng)用,讓讀者快速入門Go語言,了解Go語言的特性,掌握Go語言相關(guān)的并發(fā)、鎖等進(jìn)
階知識(shí)。書籍也講解了GoWeb開發(fā)的內(nèi)容,讓讀者對(duì)于HTTP協(xié)議、Web開發(fā)等方面的
知識(shí)有比較深入的了解。
本書的后半部分,講解了Go語言在微服務(wù)中的實(shí)踐,包含了分布式配置中心、服務(wù)
注冊與發(fā)現(xiàn)、通信機(jī)制與負(fù)載均衡等內(nèi)容,全面并且深入地講解了微服務(wù)涉及的各個(gè)組件,
讓讀者能全面了解各種組件和同類組件的對(duì)比;整本書講解由淺入深,娓娓道來,讓讀者
能迅速了解主流做法的同時(shí)也能明白選擇每個(gè)組件的背后原因。
這本書是朱榮鑫、黃迪璇、張?zhí)烊煌瑢W(xué)工作實(shí)踐的總結(jié),書籍的最后使用一個(gè)完整
的商品秒殺平臺(tái),整合各個(gè)組件進(jìn)行綜合講解,可以讓讀者從實(shí)踐中獲取不少靈感和經(jīng)驗(yàn)。
相信這本書能幫助不少想在微服務(wù)方面深入發(fā)展的讀者??傊?,這本書比較適合想實(shí)踐或
正在實(shí)踐微服務(wù)的個(gè)人或團(tuán)隊(duì),能從中收獲到不少寶貴的經(jīng)驗(yàn),少走很多彎路,提升工作
上的開發(fā)效率。
涂偉忠
一線大型互聯(lián)網(wǎng)公司高級(jí)研發(fā)工程師
《Django開發(fā)從入門到實(shí)踐》作者
iii
前言Foreword
寫作背景
Go語言在云計(jì)算時(shí)代大放異彩。
進(jìn)入互聯(lián)網(wǎng)時(shí)代,尤其是移動(dòng)互聯(lián)網(wǎng)時(shí)代之后,這個(gè)大環(huán)境面臨新的挑戰(zhàn),一方面
在功能性方面要求越來越高:除了簡單功能快速實(shí)現(xiàn)之外,還有對(duì)性能、安全、穩(wěn)定性、
高可用和可擴(kuò)展性的諸多要求,而且越來越苛刻;另一個(gè)方面,更多的需求來自對(duì)效率
的追求:包括開發(fā)、測試、部署、維護(hù)和迭代變更的效率,以及對(duì)成本的要求。
快速迭代是傳統(tǒng)企業(yè)的硬傷,這不是通過加班就能解決的。在滿足各種功能性的前
提下,易用性的提升不僅僅滿足了企業(yè)的需求,也極大地改善了開發(fā)體驗(yàn)。
對(duì)效率的追求,推動(dòng)了云計(jì)算的產(chǎn)生和發(fā)展,以及云原生理念和架構(gòu)的產(chǎn)生,我們
熟知的容器技術(shù)、微服務(wù)架構(gòu)以及新生的ServiceMesh架構(gòu)都由此誕生,不可變基礎(chǔ)設(shè)
施和聲明式API的理念也在實(shí)踐中被總結(jié)出來,并為后續(xù)的云原生架構(gòu)提供理論指導(dǎo)。
云計(jì)算的發(fā)展以及云原生的推出,為云和云上產(chǎn)品帶來了除功能性之外的易用性特征。
由于大部分維護(hù)工作由云承擔(dān),因此降低了對(duì)于維護(hù)的工作量,開發(fā)人員和應(yīng)用服務(wù)更
加關(guān)注與業(yè)務(wù)實(shí)現(xiàn),而非業(yè)務(wù)實(shí)現(xiàn)的內(nèi)容應(yīng)該由云和云上產(chǎn)品提供。
對(duì)效率的追求,催生了云和云原生架構(gòu),帶來了易用性的提升,改善了開發(fā)體驗(yàn),
從而進(jìn)一步提升了效率。這個(gè)過程會(huì)持續(xù)發(fā)生,架構(gòu)的演進(jìn)不是一蹴而就的,而是一個(gè)
長期發(fā)展的過程,因此云原生架構(gòu)也會(huì)持續(xù)演進(jìn)。在過去幾年間,云原生架構(gòu)中的容器
/微服務(wù)等架構(gòu)都是在這個(gè)循環(huán)中不斷完善和普及的。
技術(shù)背景
微服務(wù)架構(gòu)是云原生架構(gòu)中的關(guān)鍵技術(shù)點(diǎn),也是本書主要的關(guān)注點(diǎn)。微服務(wù)的話題,
近幾年一直很熱門,微服務(wù)是SOA架構(gòu)的一種具體實(shí)踐。除了微服務(wù)以外,Go語言也
很熱門,越來越受到開發(fā)人員的青睞。Go(又稱Golang)是Google開發(fā)的一種靜態(tài)強(qiáng)
類型、編譯型、并發(fā)型且具有垃圾回收功能的編程語言。
Go語言自2009年開源以來,持續(xù)受到關(guān)注。Go語言之所以厲害,是因?yàn)樗诜?/p>
務(wù)端的開發(fā)中,能抓住程序員的痛點(diǎn),以最直接、簡單、高效和穩(wěn)定的方式來解決問題。
基于Go語言實(shí)現(xiàn)的微服務(wù),更好地體現(xiàn)微服務(wù)和Go語言的優(yōu)勢。
人類對(duì)于技術(shù)進(jìn)步的追求從未停歇。熱門的技術(shù)組合在一起,能不能發(fā)揮各自的優(yōu)
勢,變得更加高效?其實(shí)不然,在逐漸發(fā)展的環(huán)境和技術(shù)演化的過程中,存在著技術(shù)人
員對(duì)主流技術(shù)趨勢的理解參差不齊現(xiàn)象。當(dāng)然架構(gòu)沒有絕對(duì)的對(duì)與錯(cuò),本書將會(huì)帶讀者
走進(jìn)基于Go語言的高并發(fā)與微服務(wù)實(shí)戰(zhàn)世界,在這個(gè)世界里不停地探索和汲取經(jīng)驗(yàn)。
本書內(nèi)容以當(dāng)前流行的微服務(wù)架構(gòu)和Go語言的高并發(fā)特性為主線,介紹Go語言
iiGo語言高并發(fā)與微服務(wù)實(shí)戰(zhàn)
微服務(wù)的各個(gè)組件和并發(fā)實(shí)戰(zhàn)。本書包含四個(gè)部分的內(nèi)容:
(1)第一部分淺談云原生與微服務(wù),涉及云原生架構(gòu)的全貌介紹和微服務(wù)的概述。
(2)第二部分介紹Go語言基礎(chǔ),側(cè)重于介紹Go語言的一些特性。
(3)第三部分深入Go語言的微服務(wù)實(shí)踐,介紹微服務(wù)架構(gòu)中涉及的基礎(chǔ)組件,如
分布式配置中心、服務(wù)注冊與發(fā)現(xiàn)、輕量級(jí)通信機(jī)制與負(fù)載均衡、微服務(wù)的容錯(cuò)處理和
分布式鏈路追蹤等組件,在熟悉組件原理的基礎(chǔ)上進(jìn)行并發(fā)實(shí)踐。
(4)最后一部分為綜合實(shí)戰(zhàn),將會(huì)結(jié)合Go語言微服務(wù)框架Go-kit實(shí)現(xiàn)一個(gè)完整的
商品秒殺系統(tǒng),涉及本書介紹的各個(gè)微服務(wù)組件,并將這些組件進(jìn)行整合。
讀者對(duì)象
本書比較適合架構(gòu)師和有一定基礎(chǔ)的技術(shù)人員閱讀,特別是正在實(shí)踐或準(zhǔn)備實(shí)踐微
服務(wù)的架構(gòu)師和開發(fā)人員,以及轉(zhuǎn)型到Go語言微服務(wù)開發(fā)的技術(shù)團(tuán)隊(duì)。希望本書能給
讀者在微服務(wù)和Go語言開發(fā)實(shí)踐中獲取一些經(jīng)驗(yàn)和靈感,少走一些彎路,最終的目的
是提升技術(shù)人員的開發(fā)體驗(yàn)和企業(yè)產(chǎn)品迭代的效率。
源碼及勘誤
本書提供源代碼下載(見封面后勒口,可掃碼或鏈接下載),備用下載地址為
/longjoy/micro-go-book。
讀者在實(shí)踐時(shí),需要注意組件下載的版本,建議相關(guān)開發(fā)環(huán)境與本書一致,或者不
低于本書所列的配置。不同版本之間存在兼容性問題,而且不同版本的軟件所對(duì)應(yīng)的功
能有的也是不同的。
書中的內(nèi)容大多來自編者的工作經(jīng)驗(yàn),不免存在遺漏及錯(cuò)誤,歡迎指正。讀者可以
直接發(fā)送郵件到郵箱(aoho002@),在此提前表示感謝。
作者團(tuán)隊(duì)與致謝
本書由朱榮鑫、黃迪璇、張?zhí)旃餐瓿?。具體章節(jié)的分工,其中第1、5、8、9、
12章由朱榮鑫編寫;第3、4、6、10、11章由黃迪璇編寫;第2、7、13章由張?zhí)炀帉懀?/p>
全書由朱榮鑫統(tǒng)稿。
本書的完成需要感謝很多朋友和同行的傾力幫助,感謝Go語言社區(qū)的熱心小伙伴
在本書撰寫前后提供了很多內(nèi)容組織方面的建議,他們犧牲不少休息時(shí)間幫忙審稿,給
了筆者很多實(shí)質(zhì)性的指導(dǎo);感謝筆者所在的公司為筆者提供的良好平臺(tái),幫助筆者積累
了大量Go語言高并發(fā)與微服務(wù)架構(gòu)實(shí)踐的經(jīng)驗(yàn)。
寫書是一件枯燥的事情,一本書從想法、策劃到出版非常不易,編輯老師給了編者
很大的信心和幫助。在內(nèi)容和結(jié)構(gòu)組織上,編者也是同本書策劃編輯荊波老師反復(fù)進(jìn)行
了討論和校正,因此特別感謝中國鐵道出版社有限公司的荊波編輯和其他工作人員為本
書的出版所做的努力。
編者
2020年2月
目錄Contents
第一篇云原生與微服務(wù)
云原生與微服務(wù)分別是什么,它們之間有什么關(guān)系呢?本部分圍繞云原生與微服務(wù)的概
念展開介紹,我們透過云計(jì)算的歷史和系統(tǒng)架構(gòu)的演進(jìn),具體了解這兩個(gè)概念的意義及其背
后的技術(shù)發(fā)展。
第1章云原生架構(gòu)
1.1云計(jì)算的歷史....................................................................................................................1
1.1.1云計(jì)算的基礎(chǔ):虛擬化技術(shù)..................................................................................1
1.1.2基于虛擬機(jī)的云計(jì)算..............................................................................................3
1.1.3容器的橫空出世和容器編排大戰(zhàn)..........................................................................5
1.1.4云計(jì)算演進(jìn)總結(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.4DevOps.................................................................................................................14
1.4小結(jié).................................................................................................................................15
第2章微服務(wù)概述
2.1系統(tǒng)架構(gòu)的演進(jìn)..............................................................................................................16
2.1.1單體架構(gòu)...............................................................................................................16
2.1.2垂直分層架構(gòu).......................................................................................................17
2.1.3SOA面向服務(wù)架構(gòu)..............................................................................................17
2.1.4微服務(wù)架構(gòu)...........................................................................................................19
2.1.5云原生架構(gòu)...........................................................................................................21
2.2常見的微服務(wù)框架..........................................................................................................22
2.2.1Java中的SpringCloud與Dubbo框架................................................................22
iiGo語言高并發(fā)與微服務(wù)實(shí)戰(zhàn)
2.2.2Go語言中的GoKit與GoMicro框架................................................................24
2.3微服務(wù)設(shè)計(jì)的六大原則...................................................................................................27
1.高內(nèi)聚,低耦合.....................................................................................................27
2.高度自治.................................................................................................................27
3.以業(yè)務(wù)為中心.........................................................................................................28
4.彈性設(shè)計(jì).................................................................................................................28
5.日志與監(jiān)控.............................................................................................................28
6.自動(dòng)化....................................................................................................................28
2.4領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)..................................................................................................................28
2.4.1設(shè)計(jì)微服務(wù)的困境...............................................................................................28
2.4.2解困之法:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)....................................................................29
2.4.3DDD的應(yīng)用領(lǐng)域..................................................................................................30
2.4.4DDD領(lǐng)域劃分.....................................................................................................31
2.4.5微服務(wù)架構(gòu)中的團(tuán)隊(duì)組織和管理........................................................................33
2.5小結(jié).................................................................................................................................34
第二篇Go語法基礎(chǔ)與特性功能
在正式進(jìn)入微服務(wù)組件的學(xué)習(xí)之前,我們要鞏固一下Go語言的基礎(chǔ),包括容器、原生
數(shù)據(jù)類型、函數(shù)與接口、結(jié)構(gòu)體和方法等常用的語法基礎(chǔ);其次是Go語言的特性功能:反
射與并發(fā)模型,介紹Go語言協(xié)程、通道、多路復(fù)用和同步的具體實(shí)踐;最后是GolangWeb
的相關(guān)介紹,一起構(gòu)建一個(gè)完整的GoWeb服務(wù)器。
第3章Go語言基礎(chǔ)
3.1Go語言介紹....................................................................................................................35
3.2環(huán)境安裝..........................................................................................................................36
3.2.1Go開發(fā)包安裝.....................................................................................................36
3.2.2第一個(gè)Go語言程序.............................................................................................38
3.2.3編譯工具...............................................................................................................40
3.3基本語法..........................................................................................................................41
3.3.1變量的聲明與初始化............................................................................................41
3.3.2原生數(shù)據(jù)類型.......................................................................................................43
【實(shí)例3-1】分別以byte和rune的方式遍歷字符串...................................................44
3.3.3指針......................................................................................................................45
【實(shí)例3-2】使用flag從命令行中讀取參數(shù)................................................................47
3.3.4常量與類型別名...................................................................................................48
3.3.5分支與循環(huán)控制...................................................................................................49
3.4Go中常用的容器............................................................................................................50
目錄iii
3.4.1數(shù)組......................................................................................................................50
3.4.2切片......................................................................................................................51
【實(shí)例3-3】切片的動(dòng)態(tài)擴(kuò)容.......................................................................................53
3.4.3列表與字典...........................................................................................................54
3.4.4容器遍歷...............................................................................................................57
【實(shí)例3-4】對(duì)給出的數(shù)組nums、切片slis和字典tmpMap分別進(jìn)行遍歷..............57
3.5函數(shù)與接口......................................................................................................................58
3.5.1函數(shù)聲明和參數(shù)傳遞............................................................................................58
3.5.2匿名函數(shù)和閉包...................................................................................................59
【實(shí)例3-5】使用回調(diào)函數(shù)處理字符串........................................................................59
【實(shí)例3-6】用閉包的特性實(shí)現(xiàn)一個(gè)簡單的計(jì)數(shù)器.....................................................60
3.5.3接口聲明和嵌套...................................................................................................61
3.5.4函數(shù)體實(shí)現(xiàn)接口...................................................................................................62
3.6結(jié)構(gòu)體和方法..................................................................................................................62
3.6.1結(jié)構(gòu)體的定義.......................................................................................................63
3.6.2結(jié)構(gòu)體的實(shí)例化和初始化....................................................................................63
3.6.3方法與接收器.......................................................................................................64
【實(shí)例3-7】為Person結(jié)構(gòu)體添加修改姓名和輸出個(gè)人信息兩個(gè)方法......................65
3.6.4結(jié)構(gòu)體實(shí)現(xiàn)接口...................................................................................................66
【實(shí)例3-8】使用一個(gè)結(jié)構(gòu)體同時(shí)實(shí)現(xiàn)Cat和Dog接口.............................................66
3.6.5內(nèi)嵌和組合...........................................................................................................67
【實(shí)例3-9】內(nèi)嵌不同結(jié)構(gòu)體表現(xiàn)不同行為................................................................68
3.7小結(jié).................................................................................................................................69
第4章進(jìn)階——Go語言高級(jí)特性
4.1依賴管理..........................................................................................................................70
4.1.1包管理..................................................................................................................70
4.1.2GOPATH...............................................................................................................72
4.1.3GoModules...........................................................................................................73
4.2反射基礎(chǔ)..........................................................................................................................73
4.2.1reflect.Type類型對(duì)象..........................................................................................74
4.2.2類型對(duì)象reflect.StructField和reflect.Method.....................................................76
4.2.3reflect.Value反射值對(duì)象.....................................................................................78
【實(shí)例4-1】使用反射調(diào)用接口方法............................................................................80
4.3并發(fā)模型..........................................................................................................................82
4.3.1并發(fā)與并行...........................................................................................................82
4.3.2CSP并發(fā)模型.......................................................................................................82
4.3.3常見的線程模型...................................................................................................83
4.3.4MPG線程模型概述..............................................................................................85
ivGo語言高并發(fā)與微服務(wù)實(shí)戰(zhàn)
4.4并發(fā)實(shí)踐..........................................................................................................................87
4.4.1協(xié)程goroutine......................................................................................................87
4.4.2通道channel.........................................................................................................89
【實(shí)例4-2】協(xié)程使用channel發(fā)送和接收數(shù)據(jù)..........................................................90
【實(shí)例4-3】使用帶緩沖區(qū)的channel..........................................................................91
【實(shí)例4-4】使用switch從多個(gè)channel中讀取數(shù)據(jù)..................................................92
4.4.3sync同步包..........................................................................................................94
【實(shí)例4-5】使用sync.Mutex控制多goroutine串行執(zhí)行...........................................94
【實(shí)例4-6】sync.RWMutex允許多讀和單寫..............................................................95
【實(shí)例4-7】sync.WaitGroup阻塞主goroutine直到其他goroutine執(zhí)行結(jié)束.............97
【實(shí)例4-8】使用sync.Map并發(fā)添加數(shù)據(jù)...................................................................98
4.5小結(jié).................................................................................................................................99
第5章構(gòu)建GoWeb服務(wù)器
5.1Web的工作原理............................................................................................................100
5.1.1HTTP協(xié)議詳解..................................................................................................100
5.1.2訪問Web站點(diǎn)的過程........................................................................................103
5.2使用Go語言構(gòu)建服務(wù)器..............................................................................................104
【實(shí)例5-1】快速搭建一個(gè)GoWeb服務(wù)器...............................................................104
5.3接收和處理請(qǐng)求............................................................................................................105
5.3.1Web工作的幾個(gè)概念.........................................................................................106
5.3.2處理器處理請(qǐng)求.................................................................................................107
5.3.3解析請(qǐng)求體.........................................................................................................109
【實(shí)例5-2】GoWeb請(qǐng)求體解析................................................................................109
5.3.4返回響應(yīng)體.........................................................................................................111
【實(shí)例5-3】返回響應(yīng)體實(shí)踐.....................................................................................112
5.4實(shí)踐案例:GolangWeb框架Gin實(shí)踐.........................................................................113
5.5服務(wù)端數(shù)據(jù)存儲(chǔ)............................................................................................................116
5.5.1內(nèi)存存儲(chǔ).............................................................................................................116
【實(shí)例5-4】服務(wù)端基于內(nèi)存的存儲(chǔ)方式實(shí)踐...........................................................116
5.5.2database/sql接口................................................................................................118
5.5.3關(guān)系數(shù)據(jù)庫存儲(chǔ)(MySQL).............................................................................118
【實(shí)例5-5】服務(wù)端基于MySQL的存儲(chǔ)方式實(shí)踐....................................................119
5.5.4Nosql數(shù)據(jù)庫存儲(chǔ)(MongoDB).......................................................................120
【實(shí)例5-6】服務(wù)端基于MongoDB的存儲(chǔ)方式實(shí)踐................................................121
5.6GolangORM框架beego實(shí)踐.......................................................................................122
5.7小結(jié)...............................................................................................................................125
目錄v
第三篇微服務(wù)核心組件
本部分是全書的核心,介紹微服務(wù)中各個(gè)核心組件的原理和實(shí)踐應(yīng)用,包括分布式配置
中心、服務(wù)注冊與發(fā)現(xiàn)、微服務(wù)網(wǎng)關(guān)、微服務(wù)的容錯(cuò)、微服務(wù)中的通信與負(fù)載均衡、統(tǒng)一認(rèn)
證與授權(quán)、微服務(wù)中的鏈路追蹤。通過組件原理的介紹、組件的選型對(duì)比以及組件的實(shí)踐應(yīng)
用,吃透每一個(gè)微服務(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ù)實(shí)例注冊服務(wù)信息......................................................................................127
6.1.3CAP原理............................................................................................................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存儲(chǔ)組件Etcd.........................................130
6.2.3重量級(jí)一致性服務(wù)組件Zookeeper....................................................................131
6.2.4服務(wù)注冊與發(fā)現(xiàn)組件的對(duì)比與選型...................................................................132
6.3Consul安裝和接口定義................................................................................................133
6.3.1Consul的安裝與啟動(dòng).........................................................................................133
6.3.2Go-kit項(xiàng)目結(jié)構(gòu)..................................................................................................134
6.3.3服務(wù)注冊與發(fā)現(xiàn)接口..........................................................................................135
6.3.4項(xiàng)目的總體結(jié)構(gòu).................................................................................................135
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024水電工程安裝承包合同
- 二零二五年度汽車貸款抵押物保管合同樣本2篇
- 二零二五年度文化產(chǎn)業(yè)園開發(fā)建設(shè)合同3篇
- 2025年度食品企業(yè)HACCP體系認(rèn)證與改進(jìn)服務(wù)合同3篇
- 二零二五年特色餐廳食材供應(yīng)鏈管理服務(wù)合同3篇
- 2024版版權(quán)質(zhì)押貸款合同3篇
- 二零二五年度附帶提前還款罰金的合法借款合同3篇
- 2024版影視經(jīng)紀(jì)中介協(xié)議樣本版B版
- 2024版外貿(mào)儀器合同范本
- 個(gè)人勞務(wù)合同簡單范本
- 青島版科學(xué)四年級(jí)下冊課程綱要
- 《無人機(jī)法律法規(guī)知識(shí)》課件-第1章 民用航空法概述
- 部編人教版六年級(jí)下冊語文1-6單元作文課件
- NB/T 11434.5-2023煤礦膏體充填第5部分:膠凝材料技術(shù)要求
- 2020-2024年安徽省初中學(xué)業(yè)水平考試中考物理試卷(5年真題+答案解析)
- 手術(shù)器械與敷料的傳遞
- 提高護(hù)士手衛(wèi)生執(zhí)行率PDCA案例匯報(bào)課件(32張)
- 日本人的色彩意識(shí)與自然觀
- 校園網(wǎng)絡(luò)系統(tǒng)的設(shè)計(jì)規(guī)劃任務(wù)書
- 部編版5年級(jí)語文下冊第五單元學(xué)歷案
- 建造師建設(shè)工程項(xiàng)目管理二局培訓(xùn)精簡版課件
評(píng)論
0/150
提交評(píng)論