产品特色
编辑推荐
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构建、部署、运行和管理高可用微服务系统的核心技能,自信地迎接云原生时代的挑战,为构建企业级分布式系统打下坚实基础。