全書(shū)共分21章。分為四篇進(jìn)行介紹:語(yǔ)言基礎(chǔ)篇、語(yǔ)言進(jìn)階篇、微服務(wù)知識(shí)篇、微服務(wù)實(shí)戰(zhàn)篇。
第 一篇包括6章:Go程序基礎(chǔ)、基本數(shù)據(jù)類型、字符串及復(fù)合數(shù)據(jù)類型、函數(shù)、方法、接口及反射、并發(fā)。通過(guò)本篇的開(kāi)發(fā),可以讓不是很熟悉Go語(yǔ)言的工程師掌握語(yǔ)法基礎(chǔ)。
第二篇包括3章:Go Web編程、并發(fā)編程模式、分布式系統(tǒng)。通過(guò)本篇的學(xué)習(xí)可以讓讀者了解使用Go語(yǔ)言如何進(jìn)行Web開(kāi)發(fā)、Go并發(fā)模式如何設(shè)計(jì)、分布式系統(tǒng)使用Go如何設(shè)計(jì)。
第三篇包括5章:微服務(wù)介紹、Linux基礎(chǔ)、Docker、Kubernetes、Go常用微服務(wù)框架。本篇是用Go進(jìn)行微服務(wù)開(kāi)發(fā)的基本知識(shí)儲(chǔ)備,知識(shí)面教光,避免讀者查閱多本資料,整篇學(xué)習(xí)完就可以達(dá)到微服務(wù)開(kāi)發(fā)的技能入門(mén)水平。
第四篇包括7章:生產(chǎn)環(huán)境Docker及Kubernetes安裝、基于Docker及Goland的開(kāi)發(fā)測(cè)試環(huán)境搭建、測(cè)試驅(qū)動(dòng)開(kāi)發(fā)和IM系統(tǒng)核心功能的微服務(wù)化、持續(xù)化交付、事件驅(qū)動(dòng)架構(gòu)、日志和監(jiān)控、安全。本篇是微服務(wù)實(shí)戰(zhàn),以IM系統(tǒng)為例,從系統(tǒng)安裝、如何測(cè)試、如何迭代、如何運(yùn)維都進(jìn)行了介紹。
當(dāng)今世界,軟件的規(guī)模越來(lái)越大、功能越來(lái)越復(fù)雜,研發(fā)團(tuán)隊(duì)的規(guī)模也變得越來(lái)越大,運(yùn)維人員和研發(fā)人員之間的工作交集越來(lái)越多。在這個(gè)大前提下,微服務(wù)模式在大型項(xiàng)目中開(kāi)始風(fēng)靡。
本書(shū)對(duì)使用Go語(yǔ)言進(jìn)行微服務(wù)開(kāi)發(fā)做了全面細(xì)致的介紹,包括微服務(wù)的基礎(chǔ)知識(shí)、微服務(wù)的拆分、微服務(wù)進(jìn)程間通信(IPC)、微服務(wù)的分布式事務(wù)管理、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)、微服務(wù)中的測(cè)試、基于ES-CQRS的微服務(wù)實(shí)踐、微服務(wù)生產(chǎn)環(huán)境和持續(xù)交付等。本書(shū)比較全面地對(duì)微服務(wù)進(jìn)行了介紹,而且對(duì)于每個(gè)知識(shí)點(diǎn)都給出了技術(shù)實(shí)現(xiàn)和實(shí)例代碼,比如微服務(wù)進(jìn)程間通信部分重點(diǎn)介紹了gRPC,ES-CQRS部分則給出了Go語(yǔ)言的具體實(shí)現(xiàn)。在介紹完知識(shí)點(diǎn)之后,本書(shū)給出了一些綜合性的案例,比如第10章、第22章等,并通過(guò)GitHub提供了完整的可運(yùn)行的代碼,可幫助有基本Go語(yǔ)言語(yǔ)法知識(shí)的讀者盡快了解、掌握微服務(wù)模式。
不同的語(yǔ)言對(duì)于微服務(wù)的實(shí)現(xiàn)都不相同。為了讓讀者更深入地了解Go語(yǔ)言的微服務(wù)實(shí)現(xiàn)模式,本書(shū)前6章深入介紹了Go語(yǔ)言的語(yǔ)法知識(shí),包括Go語(yǔ)言程序基礎(chǔ),基本數(shù)據(jù)類型,字符串與復(fù)合數(shù)據(jù)類型,函數(shù)、方法、接口和反射,并發(fā)編程,包和代碼測(cè)試等。對(duì)于已經(jīng)熟練掌握Go語(yǔ)言的讀者來(lái)說(shuō),前6章可以略過(guò),或者快速瀏覽一遍。
本書(shū)目的
本書(shū)是為Go語(yǔ)言開(kāi)發(fā)者和希望進(jìn)入Go微服務(wù)開(kāi)發(fā)領(lǐng)域的讀者準(zhǔn)備的,它不是一本僅介紹微服務(wù)的書(shū),有一半的篇幅是在介紹Go語(yǔ)言的知識(shí),所以特別適合有Java、Python等其他編程基礎(chǔ)而希望轉(zhuǎn)到Go語(yǔ)言編程的讀者閱讀。
本書(shū)除了詳細(xì)地介紹相應(yīng)的理論知識(shí)以外,還配備了示例代碼,所有代碼均已在GitHub上開(kāi)源,讀者可以邊讀書(shū)邊實(shí)踐。希望通過(guò)這種方式讓更多的工程師受益,幫助他們將所學(xué)知識(shí)盡快轉(zhuǎn)化為生產(chǎn)力。
本書(shū)內(nèi)容
本書(shū)分為四個(gè)部分,完整涵蓋了從Go語(yǔ)言到微服務(wù)的各個(gè)方面。每一部分都提供了示例代碼或?qū)崙?zhàn)項(xiàng)目,讀者可以邊學(xué)習(xí)邊動(dòng)手練習(xí)。
第一部分是Go語(yǔ)言基礎(chǔ)(第1~7章),包括Go語(yǔ)言的基礎(chǔ)語(yǔ)法、Go語(yǔ)言的基本特性和Go語(yǔ)言的實(shí)戰(zhàn)項(xiàng)目。Go語(yǔ)言的基礎(chǔ)語(yǔ)法部分包括變量、基本數(shù)據(jù)類型、垃圾回收機(jī)制、字符串和復(fù)合類型等。對(duì)于字符串的介紹,重點(diǎn)講解了Go語(yǔ)言字符串的特點(diǎn)及存儲(chǔ)方式。另外,第一部分還介紹了Go語(yǔ)言里的slice如何存儲(chǔ)、如何操作。Go語(yǔ)言對(duì)slice的使用非常頻繁,而struct是在Go語(yǔ)言沒(méi)有類的情況下對(duì)封裝的具體體現(xiàn),struct是數(shù)據(jù)類型的核心。Go語(yǔ)言的基本特性部分包括Go語(yǔ)言的基本函數(shù)、方法、接口、反射及并發(fā)等內(nèi)容。Go語(yǔ)言沒(méi)有類,它如何實(shí)現(xiàn)面向?qū)ο蟮闹T多特性呢?比如封裝、多態(tài)等。函數(shù)和goroutine相結(jié)合又會(huì)出現(xiàn)什么情況?讀者學(xué)習(xí)本部分內(nèi)容后對(duì)Go語(yǔ)言的靈活性會(huì)有所理解。Go語(yǔ)言的并發(fā)通過(guò)goroutine和channel實(shí)現(xiàn),語(yǔ)法很簡(jiǎn)單,但理論知識(shí)需要清楚理解。Go語(yǔ)言的實(shí)戰(zhàn)項(xiàng)目部分主要介紹了Go語(yǔ)言自帶的測(cè)試工具和一個(gè)實(shí)戰(zhàn)項(xiàng)目。這個(gè)模擬項(xiàng)目對(duì)本部分前面的知識(shí)進(jìn)行了總結(jié)和復(fù)習(xí)。
第二部分是Go語(yǔ)言進(jìn)階(第8~10章),主要內(nèi)容是Go語(yǔ)言的并發(fā)編程進(jìn)階、Go語(yǔ)言的Web編程以及綜合實(shí)戰(zhàn)。并發(fā)編程進(jìn)階及Web編程部分分別介紹了可以承擔(dān)高負(fù)載的線程池實(shí)現(xiàn)以及Go語(yǔ)言里的Web編程。Go語(yǔ)言的并發(fā)性能非常強(qiáng),只要把goroutine用好,結(jié)合設(shè)計(jì)模式,就可以設(shè)計(jì)出優(yōu)秀的高并發(fā)服務(wù)。而Go語(yǔ)言的Web編程就更為方便,甚至只使用標(biāo)準(zhǔn)模塊就可以寫(xiě)出Web程序。另外,本部分還會(huì)介紹一個(gè)綜合案例,不僅對(duì)第一部分及第二部分所學(xué)的知識(shí)進(jìn)行總結(jié)和復(fù)習(xí),同時(shí)還介紹了Web編程常用的gin框架。
第三部分是微服務(wù)理論(第11~18章),主要內(nèi)容包括微服務(wù)模式的理論基礎(chǔ)、微服務(wù)的進(jìn)程間通信、微服務(wù)的分布式事務(wù)管理、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)、微服務(wù)測(cè)試、Docker及ES-CQRS策略。在微服務(wù)模式的理論基礎(chǔ)部分,詳細(xì)介紹了各種模式的演變,并且給出了具體的示例代碼。進(jìn)程間通信部分主要介紹了Go語(yǔ)言中的常用進(jìn)程通信方式—protobuf、gRPC和consul,是微服務(wù)的技術(shù)入門(mén)。在微服務(wù)的分布式事務(wù)管理部分對(duì)分布式事務(wù)管理的方式進(jìn)行了探討,對(duì)不同拆分方式的優(yōu)缺點(diǎn)進(jìn)行了對(duì)比,其中重點(diǎn)介紹了Saga,并且給出了代碼實(shí)現(xiàn)。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)部分介紹了其在Go語(yǔ)言中的實(shí)現(xiàn),并給出了相關(guān)的概念,比如聚合、聚合的模式,此外,還展示了一個(gè)模擬實(shí)現(xiàn)。微服務(wù)測(cè)試部分介紹了測(cè)試的基本方法,建議結(jié)合第一部分中Go代碼測(cè)試進(jìn)行閱讀。Docker部分重點(diǎn)介紹了Docker的基本原理及使用方法。Docker一般是由運(yùn)維人員操作的,不過(guò)工程師也需要對(duì)Docker有一定的了解,以便于開(kāi)發(fā)微服務(wù)。最后,本部分介紹了微服務(wù)中的知名策略—ES-CQRS在Go語(yǔ)言中的實(shí)現(xiàn)。
第四部分是微服務(wù)實(shí)戰(zhàn)(第19~22章),包括微服務(wù)的生產(chǎn)環(huán)境、日志和監(jiān)控、持續(xù)交付、實(shí)戰(zhàn)項(xiàng)目。生產(chǎn)環(huán)境部分重點(diǎn)介紹了生產(chǎn)環(huán)境的安全,以及應(yīng)用、運(yùn)維和外部安全等內(nèi)容,這是工程師在實(shí)戰(zhàn)中必須了解的知識(shí)。日志和監(jiān)控是微服務(wù)開(kāi)發(fā)必須關(guān)注的內(nèi)容,一旦微服務(wù)處于運(yùn)行狀態(tài),工程師就可以通過(guò)日志和監(jiān)控工具來(lái)診斷服務(wù)。持續(xù)交付,或者說(shuō)DevOps,是微服務(wù)開(kāi)發(fā)和部署過(guò)程中必不可少的知識(shí)領(lǐng)域,它是一個(gè)非常大的話題,本書(shū)站在Go語(yǔ)言的