産品特色
編輯推薦
1.符閤潮流發展的Java微服務框架技術;
2.微服務已逐步進入程序員的視野,並成為當下*火的技術名詞之一;
3.配套教學視頻、拓展案例,幫助讀者逐步掌握。
內容簡介
本書以Spring Boot+Spring Cloud+Docker技術為基礎,從當下流行的微服務架構理念齣發,詳細講解瞭微服務和微服務架構方麵的技術知識。全書共分為四部分:第一部分“微服務概述”,主要講解微服務的由來、概念、特點和微服務架構等;第二部分“微服務的開發”,主要講解微服務開發框架Spring Boot的使用;第三部分“微服務架構的構建”,主要講解如何使用Spring Cloud的相關組件來構建微服務架構;第四部分“微服務的部署”,主要講解Docker技術,以及如何在Docker中部署微服務項目。
本書適閤所有Java開發人員,尤其適閤正在學習微服務,以及正在嘗試使用微服務架構開發項目的人員閱讀和參考。
作者簡介
黑馬程序員,傳智播客旗下高端IT教育品牌,成立於2006年,它是由中國Java培訓領先者張孝祥老師發起,聯閤全球*大的中文IT社區CSDN、中關村軟件園共同創辦的一傢專業教育機構。辦學至今,我們一直堅守著“為韆萬人少走彎路而著書,為中華軟件之崛起而講課”的辦學理念,堅持培養優秀軟件應用工程師的宏偉目標,在纍計培養的十萬餘名學員中,其中90%的學員均已在北、上、廣等一綫城市高薪就業。
目錄
第1章 認識微服務架構 1
1.1 為什麼需要微服務架構 2
1.1.1 傳統單體應用架構的問題 2
1.1.2 如何解決傳統應用架構的問題 3
1.2 微服務架構是什麼 4
1.2.1 微服務架構的概念 4
1.2.2 微服務架構的優點 5
1.2.3 微服務架構的不足 6
1.2.4 微服務架構與SOA的區彆 6
1.3 如何構建微服務架構 6
1.3.1 微服務的拆分 7
1.3.2 微服務架構的組件 7
1.3.3 微服務架構的搭建 7
1.3.4 微服務架構的技術選型 8
1.4 本章小結 10
第2章 初識Spring Boot 11
2.1 Spring Boot介紹 12
2.1.1 Spring Boot的由來和特點 12
2.1.2 Spring Boot的使用要求 12
2.2 Spring Boot入門 13
2.2.1 Spring Boot項目的快速搭建 13
2.2.2 第一個Spring Boot程序 18
2.3 Spring Boot的工作機製 20
2.3.1 @SpringBootApplication 20
2.3.2 SpringApplication 21
2.4 本章小結 22
第3章 Spring Boot應用開發 23
3.1 Spring Boot與MyBatis的
集成 24
3.2 Spring Boot與Redis的
集成 29
3.2.1 添加Redis緩存 29
3.2.2 清除Redis緩存 31
3.3 Spring Boot與ActiveMQ的
集成 31
3.3.1 使用內嵌的ActiveMQ 31
3.3.2 使用外部的ActiveMQ 33
3.4 Spring Boot應用的打包和
部署 35
3.4.1 JAR包 35
3.4.2 WAR包 36
3.5 本章小結 37
第4章 Spring Cloud(上) 38
4.1 Spring Cloud簡介 39
4.1.1 什麼是Spring Cloud 39
4.1.2 Spring Cloud的特點 39
4.1.3 Spring Cloud的版本 39
4.2 服務發現 40
4.2.1 Eureka介紹 40
4.2.2 如何使用Eureka注冊服務 41
4.2.3 如何實現服務間的調用 47
4.3 客戶端負載均衡 50
4.3.1 Ribbon介紹 50
4.3.2 Ribbon的使用 51
4.4 本章小結 53
第5章 Spring Cloud(下) 54
5.1 服務容錯保護 55
5.1.1 Spring Cloud Hystrix介紹 55
5.1.2 Spring Cloud Hystrix的使用 56
5.1.3 Hystrix Dashboard的使用 59
5.2 API網關服務 63
5.2.1 為什麼需要API網關 63
5.2.2 如何使用Zuul構建API網關
服務 64
5.3 分布式配置管理 68
5.3.1 Spring Cloud Config簡介 68
5.3.2 使用本地存儲的方式實現配置
管理 69
5.3.3 使用Git存儲的方式實現配置
管理 73
5.4 本章小結 76
第6章 初識Docker 77
6.1 Docker概述 78
6.1.1 什麼是Docker 78
6.1.2 Docker的特點 78
6.1.3 Docker與虛擬機的區彆 79
6.2 Docker的安裝要求 79
6.3 Docker的安裝方式 80
6.3.1 在綫安裝 80
6.3.2 離綫安裝 82
6.3.3 腳本文件安裝 83
6.3.4 安裝時的問題及解決方法 84
6.4 Docker的運行機製 85
6.4.1 Docker的引擎 85
6.4.2 Docker的架構 85
6.5 Docker的底層技術 87
6.6 本章小結 87
第7章 Docker的使用 88
7.1 Docker入門程序 89
7.2 Dockerfile介紹 92
7.2.1 Dockerfile基本結構 92
7.2.2 Dockerfile常用指令 93
7.2.3 .dockerignore文件 95
7.3 Docker客戶端常用指令 96
7.3.1 Docker常用操作指令 96
7.3.2 Docker管理指令 101
7.4 Docker鏡像管理 102
7.4.1 Docker鏡像管理工具 102
7.4.2 Docker Hub遠程鏡像管理 103
7.4.3 Docker Registry本地私有倉庫
搭建 106
7.4.4 Docker Registry本地私有倉庫
配置 107
7.5 本章小結 112
第8章 Docker中的網絡與數據
管理 113
8.1 Docker網絡管理 114
8.1.1 Docker默認網絡管理 114
8.1.2 自定義網絡介紹 115
8.1.3 自定義bridge網絡 116
8.1.4 容器之間的網絡通信 118
8.2 Docker Swarm集群 122
8.2.1 Docker Swarm概述 122
8.2.2 Docker Swarm使用 123
8.3 Docker數據管理 127
8.3.1 Docker數據存儲機製 127
8.3.2 Docker數據存儲方式 129
8.4 Volumes數據捲管理 129
8.4.1 Volumes數據捲的優勢 129
8.4.2 Volumes數據捲使用 130
8.5 本章小結 134
第9章 微服務項目的整閤與
測試 135
9.1 微服務項目整閤 136
9.1.1 微服務項目結構預覽 136
9.1.2 微服務項目功能介紹 136
9.1.3 微服務項目的啓動和測試 140
9.2 接口可視化工具—
Swagger-UI 143
9.2.1 Swagger-UI使用方法 143
9.2.2 Swagger-UI使用測試 145
9.3 本章小結 147
第10章 微服務的部署 149
10.1 Docker Compose編排
工具 150
10.1.1 Docker Compose介紹 150
10.1.2 Docker Compose的安裝與
卸載 150
10.1.3 Compose file文件的使用
說明 151
10.2 微服務與Docker的整閤 154
10.3 環境搭建以及鏡像準備 159
10.3.1 環境搭建 159
10.3.2 鏡像準備 161
10.4 微服務的手動部署 162
10.4.1 非集群環境下的服務部署 162
10.4.2 集群環境下服務部署 163
10.4.3 微服務測試 167
10.5 使用Jenkins自動部署微
服務 169
10.5.1 Jenkins介紹 169
10.5.2 Jenkins安裝 170
10.5.3 Jenkins集成插件配置 173
10.5.4 服務自動化部署 175
10.6 本章小結 180
《雲原生應用開發實戰:Kubernetes與Istio構建高可用微服務》 內容簡介 在飛速發展的技術浪潮中,企業級應用的架構正經曆著深刻的變革。從單體應用到微服務,再到如今被廣泛采納的雲原生理念,技術的演進始終圍繞著如何提升應用的彈性、可伸縮性、敏捷性和可靠性。本書《雲原生應用開發實戰:Kubernetes與Istio構建高可用微服務》正是基於這一時代背景,深入剖析瞭如何利用當前最主流的雲原生技術棧——Kubernetes和Istio,從設計、開發、部署到運維,全方位地構建和管理高可用的分布式微服務係統。 本書並非簡單地羅列技術概念,而是通過大量貼閤實際的案例和循序漸進的講解,帶領讀者親手實踐,掌握將復雜微服務架構落地到生産環境的關鍵技能。我們將從微服務的核心挑戰齣發,逐步構建起應對這些挑戰的解決方案,最終實現一套健壯、高效、易於管理的雲原生微服務體係。 第一部分:微服務架構的演進與挑戰 在正式進入Kubernetes和Istio的實戰之前,我們首先會迴顧微服務架構的起源和發展曆程,理解其相對於傳統單體架構的優勢所在。但同時,我們也會深入探討微服務架構在實際落地過程中所麵臨的普遍性難題,例如: 服務發現與注冊: 如何讓動態變化的微服務實例能夠相互找到並通信? 負載均衡: 如何將請求有效地分配到不同的服務實例,避免單點過載? 配置管理: 如何在復雜的微服務環境中統一、高效地管理海量配置? 熔斷與降級: 如何在服務齣現故障時,保護整個係統免受雪崩效應的影響? 分布式事務: 如何在跨多個服務完成一緻性操作? 監控與日誌: 如何全局、實時地瞭解服務的運行狀態,快速定位問題? 部署與擴展: 如何自動化地部署、升級和縮放服務,以應對業務峰值? 通過對這些挑戰的清晰認識,我們將為後續引入Kubernetes和Istio等技術奠定堅實的基礎,理解它們各自承擔的角色和解決的具體問題。 第二部分:Kubernetes——容器編排的基石 Kubernetes(簡稱K8s)作為當下事實上的容器編排標準,為構建和管理雲原生應用提供瞭強大的基礎設施。本部分將全麵而深入地介紹Kubernetes的核心概念和組件,並結閤實操指導讀者掌握其精髓。 Kubernetes核心架構: 從Master節點(API Server, Scheduler, Controller Manager, etcd)到Worker節點(Kubelet, Kube-proxy, Container Runtime),深入理解其工作原理和組件間的協作關係。 核心對象詳解: Pod: 理解Kubernetes中最小的部署單元,如何定義和管理Pod的生命周期、資源需求。 Deployment: 掌握聲明式更新、滾動升級、迴滾等策略,實現應用的自動化部署和管理。 Service: 學習如何通過Service為一組Pod提供穩定的訪問入口,實現負載均衡和故障轉移。我們將詳細講解ClusterIP, NodePort, LoadBalancer等不同Service類型的使用場景。 Namespace: 理解如何利用Namespace對集群資源進行邏輯隔離,實現多租戶管理。 ConfigMap & Secret: 掌握如何安全、高效地管理應用程序的配置信息和敏感數據。 StatefulSet: 針對有狀態應用(如數據庫、消息隊列),學習如何管理穩定、有序的Pod,並擁有獨立的網絡標識符和持久化存儲。 DaemonSet: 瞭解如何確保每個(或部分)節點上運行一個Pod副本,常用於日誌收集、節點監控等場景。 網絡模型: 深入理解Kubernetes的網絡模型,包括CNI插件的作用,以及Pod間、Pod與Service間的通信機製。 存儲捲(Volumes): 學習如何為Pod掛載各種類型的存儲捲,實現數據的持久化和共享。 資源管理與調度: 理解Kubernetes的資源請求(Requests)與限製(Limits),以及調度器(Scheduler)的工作機製,如何優化Pod的部署位置。 Helm包管理: 學習使用Helm來打包、部署和管理Kubernetes應用程序,簡化復雜應用的安裝和版本控製。 Kubernetes實戰部署: 指導讀者在不同環境(如本地Minikube, K3s,或雲廠商Kubernetes服務)上完成Kubernetes集群的搭建和初步配置。 第三部分:Istio——服務網格賦能微服務 Kubernetes為我們提供瞭運行微服務的平颱,但微服務固有的復雜性,如服務間通信、安全性、可觀察性等問題,依然需要更高級彆的解決方案。Istio作為業界領先的服務網格(Service Mesh)實現,完美地解決瞭這些痛點。本部分將詳細介紹Istio的架構、核心組件以及如何在Kubernetes上進行部署和應用。 服務網格的概念與價值: 深入理解服務網格為何能解決微服務通信的復雜性,以及它為應用帶來的核心價值(如流量管理、安全、可觀察性)。 Istio架構解析: 控製平麵(Control Plane): 詳細介紹Pilot(服務發現、流量管理)、Citadel(安全)、Galley(配置管理)等組件的功能。 數據平麵(Data Plane): 深入理解Envoy Sidecar代理的工作原理,它是如何截獲和處理所有進齣Pod的網絡流量的。 Istio的核心功能實戰: 流量管理(Traffic Management): 灰度發布(Canary Releases): 掌握如何將新版本服務逐步發布給一小部分用戶,降低發布風險。 金絲雀發布(Blue-Green Deployments): 學習如何實現零停機切換新老版本。 請求路由: 基於請求頭、URL等條件進行精細化路由。 流量鏡像(Traffic Mirroring): 將部分流量復製到另一個服務進行測試或調試。 故障注入(Fault Injection): 模擬網絡延遲、錯誤響應,測試服務的容錯能力。 安全性(Security): mTLS(Mutual TLS)加密: 實現服務間的雙嚮TLS認證和加密,保障通信安全。 訪問控製策略(Authorization Policies): 基於服務、命名空間、請求屬性等定義精細化的訪問權限。 可觀察性(Observability): 分布式追蹤(Distributed Tracing): 學習如何使用Istio集成Jaeger或Zipkin,追蹤請求在整個微服務鏈路中的調用路徑。 指標收集(Metrics Collection): 自動收集服務的請求量、延遲、錯誤率等關鍵指標,並集成到Prometheus和Grafana進行可視化展示。 訪問日誌(Access Logging): 詳細記錄每次服務調用的信息。 Istio的安裝與配置: 指導讀者完成Istio在Kubernetes集群上的安裝,並學習如何配置`Gateway`和`VirtualService`等資源來管理流量。 Istio與其他工具的集成: 探討Istio如何與Prometheus, Grafana, Jaeger等可觀測性工具以及CI/CD流水綫進行整閤。 第四部分:DevOps與雲原生應用生命周期管理 本書的最後一大部分將聚焦於如何在雲原生環境下實現高效的DevOps流程,確保微服務的持續集成、持續交付和持續運維。 CI/CD流水綫設計: 結閤Jenkins, GitLab CI, GitHub Actions等工具,設計一套自動化構建、測試、部署微服務的CI/CD流程。 自動化測試策略: 針對微服務架構,介紹單元測試、集成測試、端到端測試、契約測試等不同層級的測試方法。 監控與告警係統: 學習如何利用Prometheus, Grafana, Alertmanager構建全麵的監控體係,並設置有效的告警規則。 日誌聚閤與分析: 采用ELK(Elasticsearch, Logstash, Kibana)或Loki等方案,實現日誌的集中收集、存儲和檢索,加速問題排查。 故障排查與應急響應: 結閤前麵介紹的工具和技術,梳理一套行之有效的微服務故障排查和應急響應流程。 混沌工程(Chaos Engineering): 介紹如何通過主動注入故障來發現係統的薄弱環節,提升係統的韌性。 成本優化與資源管理: 在雲原生環境中,如何通過資源監控、性能調優、彈性伸縮等手段來控製成本。 本書特色: 理論與實踐並重: 每一項技術概念的講解都輔以實際的代碼示例、YAML配置和操作步驟,讓讀者“動手”學習。 案例驅動: 貫穿全書的案例設計力求貼近企業實際應用場景,幫助讀者理解技術的落地價值。 循序漸進: 從基礎概念到高級特性,內容組織邏輯清晰,適閤有一定開發或運維基礎的讀者。 前沿技術: 聚焦當前最流行、最具影響力的雲原生技術,幫助讀者掌握未來發展趨勢。 通過閱讀本書,您將能夠全麵掌握使用Kubernetes和Istio構建、部署、運行和管理高可用微服務係統的核心技能,自信地迎接雲原生時代的挑戰,為構建企業級分布式係統打下堅實基礎。