云原生應用開發(fā)實戰(zhàn)——基于.NET開發(fā)框架及Kubernetes容器編排技術 51Aspx
定 價:119 元
- 作者:51Aspx
- 出版時間:2024/2/1
- ISBN:9787111742265
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP316.85
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書是一本介紹 .NET 云原生開發(fā)技術的實用教程,由多位微軟MVP聯(lián)合編寫,通過實際的項目代碼,從多個角度深入淺出地闡釋了云原生開發(fā)的理論和在實際開發(fā)中的應用。全書共11章,主要內容包括:迎接云原生的浪潮;配置 .NET 云原生開發(fā)與運行環(huán)境;云原生應用開發(fā)—電子商務應用eShopOnContainers;實現(xiàn)云原生應用的擴展性;實現(xiàn)云原生應用的通信;數(shù)據(jù)訪問模式;實現(xiàn)可恢復的彈性應用;實現(xiàn)云原生應用的身份管理;實現(xiàn)云原生應用的可觀察性;深入理解云原生、容器、微服務和DevOps:基于Dapr開發(fā)云原生應用。
本書適合具有 C# 開發(fā)經驗的軟件工程師、軟件架構師,希望學習最新的 .NET 技術,完成云原生應用開發(fā)轉型的開發(fā)人員閱讀。對于希望從頭開始學習 .NET 技術和云原生開發(fā)的開發(fā)人員也是非常好的選擇。
聚合多位微軟MVP剖析經典項目,系統(tǒng)介紹云原生應用開發(fā)思路、方法、技巧
2016年,微軟發(fā)布完全開源、跨平臺的產品 .NET Core 1.0,.NET正式脫胎換骨。2017年,微軟發(fā)布了 .NET Core 2.0,2019 年9 月發(fā)布了 .NET Core 3.0,隨著2019年12 月發(fā)布的 .NET Core 3.1,.NET Core 徹底穩(wěn)定下來,生態(tài)圈和社區(qū)也變得成熟和穩(wěn)定。
2020年微軟統(tǒng)一產品線,正式將 .NET Core 更名為 .NET。.NET的版本號直接從5開始,即為 .NET 5,它于2020年11月正式發(fā)布,在2023年編者完稿時,最新的版本是 .NET 7,2023 年11月15日,.NET 8面世。
.NET誕生的背景是云原生開發(fā)技術的風起云涌,傳統(tǒng)的開發(fā)技術是面向服務器的開發(fā),而云原生開發(fā)面向的是云平臺,包括數(shù)據(jù)庫技術的多樣化,應用的微服務化,部署的分布化,其中最為典型的無疑是容器技術的應用。.NET針對大規(guī)模處理服務和云原生應用開發(fā)做了針對性的優(yōu)化,特別是針對基于容器技術的應用支持,優(yōu)化了應用的啟動速度、內存占用、性能優(yōu)化等諸多方面。毫無疑問,對于云原生開發(fā)來說,.NET就是最佳選擇。
雖然 .NET在國外發(fā)展的風生水起,微軟也提供了大量的技術資料,但對于國內的開發(fā)人員來說,還是非常缺乏基于 .NET技術的云原生開發(fā)資料,特別是缺乏能夠理論聯(lián)系實際。通過具體的實例講解,幫助開發(fā)者全面掌握云原生開發(fā)技術的技術資料。
2022年,微軟中國的MVP 社區(qū)組織了 .NET云原生開發(fā)系列技術活動,在軟積木的劉海峰老師的組織和協(xié)調下,活躍于中國的微軟最有價值專家們奉獻了一系列的云原生技術講座。作為該系列活動的總結,本書希望能夠幫助中國的 .NET開發(fā)者全面認識基于 .NET技術的云原生開發(fā)。
本書使用的案例來自微軟的eShopOnContainers項目(開發(fā)環(huán)境為 .NET),這是一個使用 .NET技術開發(fā)的電子商務應用,使用了當前最新的云原生開發(fā)技術,作為微軟官方的示范項目,這個項目一直在伴隨著 .NET技術的演進不斷升級(當前它的最新版本也已經是 .NET 7)。由于它使用的技術非常新穎、全面,帶來了一個很高的學習門檻,使得不少開發(fā)者望洋興嘆,難以啃下這塊硬骨頭。本書使用它作為示范項目,詳細介紹了其中涉及的各種技術要點,尤其是針對開發(fā)實踐中涉及的技術細節(jié)進行了詳盡的說明。因此,開發(fā)者可以自己動手,徹底理解和構建這個宏大的項目,為掌握基于 .NET的云原生開發(fā)打下堅實的基礎。
值得一提的是,在AI技術的應用呈現(xiàn)爆發(fā)式增長的2023年,.NET與正在與AI產生緊密的結合。在.NET云原生應用開發(fā)中,先進的AI技術如大語言模型(Large Language Model,LLM)和Transformer模型被廣泛利用。通過使用Azure Cognitive Services等微軟云服務,開發(fā)者可以輕松地調用OpenAI的生成式預訓練Transformer模型(Generative Pre-trained Transformer,GPT),從而提升應用的智能水平。利用這些領先的AI技術,.NET可以采用LLM理解用戶輸入,借助GPT生成相應回答或建議,實現(xiàn)更智能化、個性化的服務。無論是內容推薦、語音識別、圖像處理,還是對話系統(tǒng),.NET結合AI都能為用戶帶來卓越體驗。展望未來,隨著技術的不斷發(fā)展,.NET必將在AI領域將大放異彩。
本書適合哪些讀者?
以下幾類讀者將從本書中獲益:
? 希望能夠透徹學習和了解云原生應用開發(fā)的理論知識。
? 希望能夠理論聯(lián)系實際的學習云原生應用開發(fā)。
? 希望能夠自己動手,一步一步實現(xiàn)完整的云原生應用。
? 需要構建高可用、可擴展的云原生應用。
本書適合有C#開發(fā)經驗的軟件工程師、軟件架構師等,特別是希望學習最新的 .NET技術,完成云原生應用開發(fā)轉型的開發(fā)人員。而且,本書由淺入深的學習路徑,對于希望從頭開始學習 .NET技術和云原生開發(fā)的開發(fā)人員也是非常好的選擇。
本書內容安排
本書分為三大部分,共11 章,由多位微軟MVP聯(lián)合編寫,通過實際的項目代碼,從各個角度深入淺出地闡釋了云原生開發(fā)的理論和在實際開發(fā)中的應用。內容的組織方式是先介紹相關的技術理論,然后在理論的指導下,手把手地幫助開發(fā)者應用到開發(fā)實踐中。
第一部分主要討論了云原生開發(fā)的核心理念和需要解決的問題,介紹了云原生計算基金會的作用。然后,以 Docker為切入點,重點介紹了容器技術的理論和使用,手把手地幫助開發(fā)者從Docker 的基本命令開始,直到構建和運行完整的eShopOnContainers 應用。
第二部分開始深入到開發(fā)和運行云原生應用面臨的各種挑戰(zhàn),每章深入一個挑戰(zhàn)領域,首先介紹面臨的挑戰(zhàn),然后介紹解決該問題的思路和理論,并介紹當前相關的各種項目和產品。最后是在理論的指導下,在代碼層面上解決實際面臨的挑戰(zhàn)。
第三部分在完成整個eShopOnContainers 應用之后,重新從新的高度來回顧云原生應用開發(fā),幫助開發(fā)者深入理解云原生、容器、微服務和DevOps 之間的關系,完成自動化的構建和發(fā)布。最后,介紹了基于Dapr 的云原生應用開發(fā),幫助開發(fā)者將云原生應用開發(fā)的體驗提升到新的高度。
本書作者
本書的作者包括:劉海峰、郝冠軍、張善友、桂素偉、梁桐銘、徐磊、陳仁松、閆曉迪、盧建暉、梁敏,由郝冠軍統(tǒng)稿。以下是各位作者的介紹。
劉海峰:軟積木CEO、微軟資深MVP(最有價值專家)、微軟技術大會特約講師。
郝冠軍:十屆微軟MVP,《ASP.NET 本質論》作者,《精通 ASP.NET Core MVC》譯者。多年來致力于軟件開發(fā)技術的鉆研與推廣,涉及多種開發(fā)語言與技術。
張善友:廣東智用人工智能應用研究院工業(yè)&社區(qū)CTO。從事 .NET技術開發(fā)二十多年,CKAD認證專家,曾在騰訊工作12年,2018年創(chuàng)立深圳友浩達科技,專注云原生和工業(yè)物聯(lián)網解決方案落地。目前在廣東智用人工智能應用研究院 擔任CTO。積極參與運營 .NET 技術社區(qū)、Dapr中文社區(qū)、Semantic Kernel 中文社區(qū)以及相關開源項目,運營微信公眾號“dotnet跨平臺”和“新一代智能應用”。連任18屆微軟最有價值專家MVP,5屆華為云HCDE,5屆騰訊云最有價值專家TVP。
閆曉迪:微軟最有價值專家/微軟認證講師,微軟認證Azure解決方案架構師。曾擔任微軟技術大會講師,多年微軟技術社區(qū)組織者。近20年 .NET平臺開發(fā)經驗,熟悉ASP.NET、WPF、UWP、Azure 等多種微軟技術。目前專注于 .NET、Azure及Cloud Native應用開發(fā),F(xiàn)居新西蘭,CITANZ(新西蘭華人IT協(xié)會)志愿者、惠靈頓 .NET Meetup 組織者。LinkedIn Learning講師。
梁桐銘:微軟MVP、Microsoft AI Open Hack教練、Microsoft Tech Summit講師,52ABP 開源框架作者,暢銷書《深入淺出 ASP.NET Core》作者。
徐磊:英捷創(chuàng)軟科技(北京)有限公司首席架構師/CEO,微軟MVP,微軟區(qū)域技術總監(jiān),GitHub 中國區(qū)授權服務團隊負責人,認證Scrum Master,EXIN DevOps Master/Professional認證講師,中國最大的敏捷精益社區(qū) IDCF 創(chuàng)始人。專注于軟件工程,敏捷精益商業(yè)創(chuàng)新方面的管理咨詢。經客戶涵蓋從電信,能源,傳統(tǒng)生產制造,金融和電商等各行業(yè),從 2005 年至今已經為超過100家企業(yè)提供過軟件工程方案的咨詢和服務,包括:華為、中國農業(yè)銀行、招商銀行、興業(yè)銀行、中國銀行、斯倫貝謝、中國聯(lián)通、中國人民保險、京東商城、通用汽車等。
盧建暉:微軟高級云技術布道師,專注在人工智能和大數(shù)據(jù)領域。
桂素偉:開發(fā)者,架構師,曾是10屆微軟MVP,擅長 .NET技術和系統(tǒng)架構;對高性能,高并發(fā)開發(fā)和性能排查很有心得;喜歡分享技術,長期耕耘微信公眾號“桂跡”,F(xiàn)就職東京 NETSTARS,任架構師。
陳仁松:曾連續(xù)獲得五屆微軟最有價值專家(MVP),是一位擁有十年以上互聯(lián)網經驗的老兵,具備豐富的研發(fā)經驗,專注于 AI-Native、云原生等方向的技術開發(fā)和探索。
梁敏:微軟 .NET20周年云原生開發(fā)者大賽籌辦人、Prompt Engineering Conference(China)負責人、AIGC成都社區(qū)主理人。
致謝
本書的編寫得到了51Aspx的大力支持,在此表示感謝。51Aspx自2007年成立,是領先的.NET源碼交流平臺。擁有超過108萬會員和眾多嚴格測試過的項目源代碼。專注于源碼商業(yè)化和開發(fā)者賦能,致力于幫助開發(fā)者實現(xiàn)技術變現(xiàn),最大化價值。
限于作者水平,書中缺點和錯誤之處,敬請批評指正。
51Aspx簡介
51Aspx(https://www.51aspx.com/)是業(yè)內領先的.NET學習和源碼分享平臺,并緊跟技術趨勢,不斷擴展編程語言類型和合作團隊。目前,51Aspx有110萬注冊會員,14000余套完整源碼,以及建立緊密合作關系的資深開發(fā)者800余人。51Aspx積極與微軟官方合作舉辦各類.NET技術活動,與微軟MVP團隊、微軟Reactor團隊緊密合作,多次受邀參加微軟中國及美國總部的重大技術合作,積極與微軟一道傳
播.NET。
劉海峰:軟積木CEO、微軟資深MVP(最有價值專家)、微軟技術大會特約講師。
郝冠軍:十屆微軟MVP,《ASP.NET 本質論》作者,《精通 ASP.NET Core MVC》譯者。多年來致力于軟件開發(fā)技術的鉆研與推廣,涉及多種開發(fā)語言與技術。
張善友:廣東智用人工智能應用研究院工業(yè)&社區(qū)CTO。從事 .NET技術開發(fā)二十多年,CKAD認證專家,曾在騰訊工作12年,2018年創(chuàng)立深圳友浩達科技,專注云原生和工業(yè)物聯(lián)網解決方案落地。目前在廣東智用人工智能應用研究院 擔任CTO。積極參與運營 .NET 技術社區(qū)、Dapr中文社區(qū)、Semantic Kernel 中文社區(qū)以及相關開源項目,運營微信公眾號“dotnet跨平臺”和“新一代智能應用”。連任18屆微軟最有價值專家MVP,5屆華為云HCDE,5屆騰訊云最有價值專家TVP。
閆曉迪:微軟最有價值專家/微軟認證講師,微軟認證Azure解決方案架構師。曾擔任微軟技術大會講師,多年微軟技術社區(qū)組織者。近20年 .NET平臺開發(fā)經驗,熟悉ASP.NET、WPF、UWP、Azure 等多種微軟技術。目前專注于 .NET、Azure及Cloud Native應用開發(fā)。現(xiàn)居新西蘭,CITANZ(新西蘭華人IT協(xié)會)志愿者、惠靈頓 .NET Meetup 組織者。LinkedIn Learning講師。
梁桐銘:微軟MVP、Microsoft AI Open Hack教練、Microsoft Tech Summit講師,52ABP 開源框架作者,暢銷書《深入淺出 ASP.NET Core》作者。
徐磊:英捷創(chuàng)軟科技(北京)有限公司首席架構師/CEO,微軟MVP,微軟區(qū)域技術總監(jiān),GitHub 中國區(qū)授權服務團隊負責人,認證Scrum Master,EXIN DevOps Master/Professional認證講師,中國最大的敏捷精益社區(qū) IDCF 創(chuàng)始人。專注于軟件工程,敏捷精益商業(yè)創(chuàng)新方面的管理咨詢。經客戶涵蓋從電信,能源,傳統(tǒng)生產制造,金融和電商等各行業(yè),從 2005 年至今已經為超過100家企業(yè)提供過軟件工程方案的咨詢和服務,包括:華為、中國農業(yè)銀行、招商銀行、興業(yè)銀行、中國銀行、斯倫貝謝、中國聯(lián)通、中國人民保險、京東商城、通用汽車等。
盧建暉:微軟高級云技術布道師,專注在人工智能和大數(shù)據(jù)領域。
桂素偉:開發(fā)者,架構師,曾是10屆微軟MVP,擅長 .NET技術和系統(tǒng)架構;對高性能,高并發(fā)開發(fā)和性能排查很有心得;喜歡分享技術,長期耕耘微信公眾號“桂跡”,F(xiàn)就職東京 NETSTARS,任架構師。
陳仁松:曾連續(xù)獲得五屆微軟最有價值專家(MVP),是一位擁有十年以上互聯(lián)網經驗的老兵,具備豐富的研發(fā)經驗,專注于 AI-Native、云原生等方向的技術開發(fā)和探索。
梁敏:微軟 .NET20周年云原生開發(fā)者大賽籌辦人、Prompt Engineering Conference(China)負責人、AIGC成都社區(qū)主理人。
前言
第1章 迎接云原生的浪潮1
1.1 撲面而來的云原生1
1.1.1 單體應用面臨的挑戰(zhàn)2
1.1.2 從微服務到云原生3
1.1.3 云原生應用的特性4
1.1.4 云原生計算基金會 CNCF5
1.2 云原生設計的十二原則6
1.2.1 Codebase(單一代碼)7
1.2.2 Dependencies(依賴管理)7
1.2.3 Configuration(配置)7
1.2.4 Backing services(支撐服務)7
1.2.5 Build, Release, Run(構建、發(fā)布、運行)8
1.2.6 Processes(無狀態(tài)服務進程)8
1.2.7 Port Binding(端口綁定)8
1.2.8 Concurrency(并發(fā)能力)8
1.2.9 Disposability(易回收)9
1.2.10 Dev/Prod Parity(環(huán)境對等)9
1.2.11 Logs(日志流)9
1.2.12 Admin Processes(管理進程)9
1.3 云原生四大核心要素10
1.3.1 容器化10
1.3.2 微服務技術11
1.3.3 DevOps12
1.3.4 持續(xù)交付13
1.4 使用 .NET 技術開發(fā)云原生應用的優(yōu)勢14
1.4.1 高性能15
1.4.2 跨平臺15
1.4.3 完全容器化支持15
1.4.4 開源15
1.5 小結16
第2章 配置 .NET云原生開發(fā)與運行環(huán)境17
2.1 系統(tǒng)要求17
2.2 安裝與配置Git環(huán)境18
2.2.1 安裝 Git18
2.2.2 配置Git18
2.2.3 下載eShopOnContainers源代碼20
2.3 安裝 .NET20
2.3.1 .NET 版本選擇21
2.3.2 安裝 .NET22
2.4 安裝 Visual Studio 2022 或 Visual Studio Code23
2.4.1 安裝Visual Studio 202223
2.4.2 安裝 Visual Studio Code25
2.5 安裝Docker27
2.5.1 安裝 WSL 227
2.5.2 安裝 Docker Desktop31
2.5.3 配置 Docker Desktop32
2.5.4 配置國內 Docker 環(huán)境35
2.6 啟用 Kubernetes36
2.7 小結36
第3章 云原生應用開發(fā)—電子商務應用eShopOnContainers37
3.1 云原生應用 eShopOnContainers功能概述37
3.1.1 功能需求38
3.1.2 eShopOnContainers開發(fā)架構38
3.2 運行eShopOnContainers應用40
3.2.1 了解docker-compose文件40
3.2.2 構建eShop44
3.2.3 運行eShopOnContainers 應用45
3.2.4 注意事項46
3.3 訪問eShopOnContainers應用程序47
3.3.1 訪問MVC Web應用47
3.3.2 訪問SPA Web應用48
3.3.3 訪問Android、iOS和Windows上的移動應用49
3.3.4 訪問 Swagger UI49
3.3.5 訪問日志控制臺50
3.3.6 應用程序與微服務列表53
3.4 eShopOnContainers代碼組織53
3.4.1 項目架構53
3.4.2 源代碼介紹54
3.4.3 領域驅動設計56
3.4.4 單元測試和集成測試60
3.5 小結62
第4章 實現(xiàn)云原生應用的擴展性63
4.1 容器化應用63
4.1.1 單體部署面臨的挑戰(zhàn)63
4.1.2 什么是Docker65
4.1.3 Docker常用命令68
4.1.4 開發(fā)中用到的Docker知識73
4.2 鏡像倉庫74
4.2.1 Docker Hub74
4.2.2 創(chuàng)建自定義的容器鏡像倉庫75
4.2.3 創(chuàng)建私有鏡像倉庫77
4.3 Docker定義文件Dockerfile80
4.3.1 Dockerfile 語法概要80
4.3.2 構建ASP.NET Core應用81
4.3.3 構建 ASP.NET Core Docker 應用83
4.4 擴展容器應用84
4.4.1 使用Docker compose管理云原生應用84
4.4.2 使用Kubernetes管理云原生應用86
4.4.3 使用環(huán)境變量89
4.5 容器與編排器實踐94
4.5.1 購物車服務94
4.5.2 構建 Dockerfile95
4.5.3 構建docker-compose.yaml96
4.5.4 構建Kubernetes部署文件97
4.6 小結101
第5章 實現(xiàn)云原生應用的通信102
5.1 云原生應用通信的復雜性102
5.2 服務注冊與服務發(fā)現(xiàn)103
5.2.1 微服務下的服務注冊和服務發(fā)現(xiàn)104
5.2.2 Docker Compose環(huán)境下的服務注冊與發(fā)現(xiàn)105
5.2.3 Kubernetes 環(huán)境下的服務注冊與發(fā)現(xiàn)106
5.3 前端應用的通信模式107
5.3.1 實現(xiàn)網關的選擇109
5.3.2 實時通信110
5.4 服務與服務之間的通信111
5.4.1 查詢 Query112
5.4.2 命令Command115
5.4.3 事件Event116
5.4.4 領域總線和集成總線118
5.5 新一代通信協(xié)議gRPC118
5.5.1 gRPC的優(yōu)勢118
5.5.2 gRPC核心概念119
5.5.3 在 .NET中應用gRPC119
5.5.4 gRPC的使用場景120
5.5.5 在eShopOnContainers中實現(xiàn)gRPC支持120
5.6 服務網格(Service Mesh)122
5.7 實戰(zhàn)演練:實現(xiàn) eShopOnContainers中的組件間通信123
5.7.1 實現(xiàn)基于 Envoy 的 API 網關123
5.7.2 實現(xiàn)BFF網關125
5.7.3 實現(xiàn)基于MediatR的領域總線128
5.7.4 基于RabbitMQ實現(xiàn)跨微服務的事件總線133
5.7.5 基于事件總線實現(xiàn)集成總線135
5.8 小結140
第6章 數(shù)據(jù)訪問模式141
6.1 云原生應用中的數(shù)據(jù)訪問模式141
6.1.1 微服務中對數(shù)據(jù)庫使用方式的變化142
6.1.2 跨微服務的查詢143
6.1.3 數(shù)據(jù)完整性和分布式事務145
6.1.4 大規(guī)模數(shù)據(jù)訪問147
6.2 關系型與非關系型數(shù)據(jù)庫150
6.2.1 CAP定理151
6.2.2 關系型數(shù)據(jù)庫與NoSQL數(shù)據(jù)庫152
6.2.3 NewSQL數(shù)據(jù)庫153
6.3 在云原生應用中應用緩存154
6.3.1 應用緩存的原因154
6.3.2 云原生應用的緩存架構154
6.4 實戰(zhàn)演練:實現(xiàn)eShopOnContainers中產品價格變更的最終一致性155
6.4.1 實現(xiàn)簡化事件溯源模式的集成事件日志156
6.4.2 發(fā)布基于事件日