苹果13.3.3版本好吗,苹果13.5.5的版本好吗

首页 > 经验 > 作者:YD1662022-11-07 08:42:51

作为Java语言的落地微服务框架,Spring Cloud已经在各大企业普遍应用,各大云厂商也支持Spring Cloud微服务框架的云产品。可以说,Spring Cloud微服务框架已经应用到了各大行业之中,并成为Java开发者的必备技能之一,熟练掌握Spring Cloud是面试者的加分项。

Spring Cloud由Spring Cloud社区维护,并且在Pivatol和Netflix两大公司的推动下飞速发展。随着Eureka的闭源,虽然Netflix OSS等组件进入维护期,不再提供新功能,但Spring Cloud微服务框架并没有受到显著影响,而是被越来越多的企业和开发者所接受。阿里巴巴推出的Nacos和Sentinel等组件已经加入Spring Cloud孵化器项目,未来极有可能替代Netflix OSS,因此Spring Cloud是一个极具生命力的微服务框架。

苹果13.3.3版本好吗,苹果13.5.5的版本好吗(1)

为什么使用微服务?

在业务驱动的时代,企业大多急于解决效率、成本和质量的问题,开发团队的不稳定,导致业务设计、技术架构和代码脉络的不连续性。企业领导对技术储备的不重视,导致企业内部重业务、轻技术,很多研发人员缺乏设计意识。各个行业对软件系统的诉求越来越多,导致软件系统规模不断增大、复杂度不断增加,最终的结果是系统难以扩展、维护、重构、跟踪、评估工期。软件在发展过程中会面临遗留系统的种种问题,但“外科手术”治不好遗留系统复杂的病症,这是架构需要演进的根源之一。

复杂系统的各个组成部分自然趋向于混乱无序,越混乱,越稳定。如果要打破混乱、建立秩序,根据熵增定律,就要赋予系统一定的力量或者能量。混乱是事物最自然的状态,秩序却不是,但是人们希望有秩序,所以要付出代价建立制度,并维护秩序。

在这个背景下,软件系统的架构一步步演进和发展,经历了单体架构、分布式应用架构、微服务架构、服务网格架构、Serverless架构……其中,单体架构经历了简单单体时期(例如经典的JSP)、MVC分层时期(各种MVC框架受到追捧)、前后端分离时期。从整体上看,这一次次的演进是软件垂直和水平方向上的拆分,屏蔽了底层与重新定位。在演进过程中,软件开发人员的关注点越来越远离底层的部分,更多地关注上层简单的架构,技术团队的职能划分也越来越清晰。这使得软件的研发过程更高效,质量更可控,工期也更易评估。从这个角度来看,作为技术人员,我们都需要用历史的眼光去看技术的发展,拥抱变化。

微服务架构不是银弹,就像最近不断被提起的中台不能解决所有企业的问题。我们有时会存在某种认知的误区,对成功案例方法本身的关注甚于对问题本身的关注。企业的健康发展在于发现、分析和解决自身的问题,而不是盲目模仿成功的企业。

基于以上的警示,是否要在团队内部进行微服务实践?微服务落地该如何选型呢?作为一个技术人员,选择需要慎重。希望Spring Cloud能够帮你解决当前的问题,而不只是做一个简单的门户或者网站,因为没有必要为一两个简单的管理系统来维护Spring Cloud的一整套组件。在为新系统和遗留系统选择使用Spring Cloud前,我们需要分析当前面临的问题。

我见过一些团队对选型的背景、原因和目的并不是十分了解,就在新项目中直接使用Spring Cloud,只是为了不让自己与当前服务化阶段受追捧的微服务架构潮流脱节。很少有人在选型前对自己软件系统的规模、所在企业的底层资源自动化的程度、技术团队的组织形式、当前业务所面临的问题、团队的技术栈,以及引入Spring Cloud的成本等进行关注和研究。

我也见过一些团队在遗留系统复杂度高、业务耦合严重、模块划分不清晰,甚至模块拆分在垂直和水平层面都不彻底时,整个系统臃肿不堪,团队迫不得已用Spring Cloud将遗留系统强势进行拆分,在将复杂系统迁移到Spring Cloud的过程中遇到了很多问题。

02《深入理解Spring Cloud与微服务构建(第2版)》讲了什么?

本书深入浅出地讲解了Spring Cloud生态组件,包括服务注册发现组件Eureka、配置中心Spring Cloud Config、容错组件Hystrix、接入赋能组件Zuul、路由负载均衡组件(高可用性和稳定性)Ribbon等,使读者能够熟悉Spring Cloud各组件的作用和使用方法。

此外,本书还对一些技术点举一反三,例如在讲解RestTemplate作为网络请求时,提到其他Spring Template,包括JdbcTemplate和JmsTemplate等。本书实用性强,代码示例全面,能够使读者在技术学习方法与认知上有一定的转变和提升。

我相信无论是正在学习Spring Cloud的朋友,还是正在推进或选型Spring Cloud落地的团队,都能从本书中有所收获。

本书结构

本书共分为18章,各章主要内容如下

第1章介绍了什么是微服务、为什么需要微服务、微服务的优缺点和面临的挑战,并且将单体架构的系统和微服务架构的系统进行了比较。

第2章主要介绍微服务应该具备的功能以及Spring Cloud的基本组件,最后介绍了 Spring Cloud与Dubbo、Kubernetes之间的差异。

第3、4章介绍了构建微服务的准备工作:开发环境的构建和Spring Boot的使用。其中,第3章介绍了开发环境的构建,包括JDK的安装、IDEA和Maven的使用等;第4章介绍了Spring Boot的基本使用方法,包括Spring Boot的特点、用IDEA创建一个Spring Boot项目、Spring Boot配置文件详情、Spring Boot的Actuator模块,以及Spring Boot集成JPA、Redis和Swagger2等。

第5~9章介绍了Spring Cloud框架的基础模块—Spring Cloud Netflix模块,涵盖了Spring Cloud构建微服务的基础组件。诸如Eureka、Ribbon、Feign、Hystrix和Zuul等组件为微服务系统提供了基本的服务治理能力。这些章以案例为切入点,由浅入深介绍这些组件,并从源码的角度分析这些组件的工作原理。

第10章介绍了Spring Cloud的第二代网关Gateway。Gateway在性能上比Zuul要优异很多,是Spring Cloud的新一代网关。

第11章介绍了服务注册中心Consul,详细讲解了如何使用Consul进行服务注册和发现,以及如何使用Consul作为分布式配置中心。

第12章介绍了分布式配置中心Spring Cloud Config,详细讲解了Config Server如何从本地仓库和远程Git仓库读取配置文件,以及如何构建高可用的分布式配置中心和使用消息总线刷新配置文件。

第13章介绍了链路追踪组件Spring Cloud Sleuth,包括微服务系统为什么需要链路追踪组件,并以案例的形式详细介绍了如何在Spring Cloud微服务系统中使用链路追踪,以及如何传输、存储和展示链路数据。

第14章以案例的形式介绍了Spring Boot Admin,包括Spring Boot Admin在微服务系统中的应用、在Spring Boot Admin中集成安全组件。

第15~17章介绍了Spring Cloud微服务系统的安全验证模块,包括Spring Boot Security组件和Spring Cloud OAuth2模块。第15章详细介绍了如何在Spring Boot应用中使用Spring Boot Security;第16章介绍了如何在Spring Cloud微服务系统中使用Spring Cloud OAuth2来保障微服务系统的安全;第17章介绍了如何在Spring Cloud微服务系统中使用Spring Cloud OAuth2和JWT来保护微服务的系统安全。

第18章以一个综合案例介绍了使用Spring Cloud构建微服务系统的全过程,该案例是对全书内容的总结和提炼。

03第2版与第1版有什么区别?

在本书第1版出版后不到一年的时间,我便开始着手准备第2版,在短时间内更新第1版的原因有以下几点。

第一,为了快速跟进Spring Cloud新版本。本书使用的Spring Cloud版本为Greenwich,Spring Boot版本为2.1.0。众所周知,Spring Cloud最大的特色是开源,它是由众多优秀的开源组件封装、集成的。比如,它集成了Netflix OSS组件和Nacos组件等;Spring Cloud社区十分活跃,吸引了众多优秀的开发者加入其项目开发中,因此Spring Cloud的版本迭代非常快。本书第1版使用的Spring Cloud版本为Dalston,Spring Boot版本为1.5.3。

在短短一年多的时间内,Spring Cloud已经迭代了Edgware、Finchley和Greenwich三大版本,对应的Spring Boot版本分别为1.5.x、2.0.x和2.1.x。2.0.x版本的Spring Boot更新幅度较大,支持Webflux响应式编程和Http2等新特性。Spring Cloud基于Spring Boot,所以Spring Cloud的Finchley版本是一个变动较大的版本。本书使用的Greenwich版本是基于Finchley的一个小迭代。

第二,使用Spring Cloud作为微服务框架的大多数企业都使用Consul作为服务注册组件。Consul为微服务的元数据提供了强一致性的保障,支持多个数据中心,这是它相对于Eureka 1.0的优点。此外,Eureka的闭源使得作为注册中心的Consul越来越重要,所以本书第2版详细介绍了Consul。

第三,Spring Cloud的第一代网关Zuul是一个阻塞式网关,在性能方面有诸多不足。Spring Cloud在Finchley版本中推出了新一代网关Spring Cloud Gateway。Spring Cloud Gateway是非阻塞式网关,与Zuul相比,性能有较大提升。

第四,很多组件在新版本中的变动较大,如Sleuth、Admin和Security等。部分读者反馈,第1版中的源码在更新版本后出现了无法运行的现象,因此内容更新和升级迫在眉睫。

目 录

第1章 微服务简介 1

1.1 单体架构及其存在的不足 1

1.1.1 单体架构简介 1

1.1.2 单体架构存在的不足 2

1.1.3 单体架构使用服务器集群及存在的不足 2

1.2 微服务 3

1.2.1 什么是微服务 4

1.2.2 微服务的优势 8

1.3 微服务的不足 9

1.3.1 微服务的复杂度 9

1.3.2 分布式事务 9

1.3.3 服务的划分 11

1.3.4 服务的部署 11

1.4 微服务和SOA的关系 12

1.5 微服务的设计原则 12

第2章 Spring Cloud简介 14

2.1 微服务应该具备的功能 14

2.1.1 服务的注册与发现 15

2.1.2 服务的负载均衡 15

2.1.3 服务的容错 16

2.1.4 服务网关 18

2.1.5 服务配置的统一管理 19

2.1.6 服务链路追踪 20

2.2 Spring Cloud 20

2.2.1 简介 20

2.2.2 常用组件 21

2.2.3 项目一览 22

2.3 Dubbo简介 23

2.4 Spring Cloud与Dubbo比较 24

2.5 Kubernetes简介 25

2.6 Spring Could与Kubernetes比较 27

2.7 总结 28

第3章 构建微服务的准备 29

3.1 JDK的安装 29

3.1.1 JDK的下载和安装 29

3.1.2 环境变量的配置 29

3.2 IDEA的安装 30

3.2.1 IDEA的下载 30

3.2.2 用IDEA创建一个Spring Boot工程 31

3.2.3 用IDEA启动多个Spring Boot工程实例 33

3.3 构建工具Maven的使用 34

3.3.1 Maven简介 34

3.3.2 Maven的安装 34

3.3.3 Maven的核心概念 36

3.3.4 编写Pom文件 36

3.3.5 Maven构建项目的生命周期 38

3.3.6 常用的Maven命令 39

第4章 开发框架Spring Boot 41

4.1 Spring Boot简介 41

4.1.1 Spring Boot的特点 41

4.1.2 Spring Boot的优点 42

4.2 用IDEA构建Spring Boot工程 42

4.2.1 项目结构 42

4.2.2 在Spring Boot工程中构建Web程序 43

4.2.3 Spring Boot的测试 44

4.3 Spring Boot配置文件详解 45

4.3.1 自定义属性 45

4.3.2 将配置文件的属性赋给实体类 46

4.3.3 自定义配置文件 47

4.3.4 多个环境的配置文件 48

4.4 运行状态监控Actuator 48

4.4.1 查看运行程序的健康状态 50

4.4.2 查看运行程序的Bean 51

4.4.3 使用Actuator关闭应用程序 53

4.4.4 使用shell连接Actuator 54

4.5 Spring Boot整合JPA 55

4.6 Spring Boot整合Redis 58

4.6.1 Redis简介 58

4.6.2 Redis的安装 58

4.6.3 在Spring Boot中使用Redis 58

4.7 Spring Boot整合Swagger2,搭建Restful API在线文档 60

第5章 服务注册和发现Eureka 64

5.1 Eureka简介 64

5.1.1 什么是Eureka 64

5.1.2 为什么选择Eureka 64

5.1.3 Eureka的基本架构 65

5.2 编写Eureka Server 65

5.3 编写Eureka Client 68

5.4 源码解析Eureka 71

5.4.1 Eureka的一些概念 71

5.4.2 Eureka的高可用架构 72

5.4.3 Register服务注册 72

5.4.4 Renew服务续约 76

5.4.5 为什么Eureka Client获取服务实例这么慢 77

5.4.6 Eureka 的自我保护模式 78

5.5 构建高可用的Eureka Server集群 79

5.6 总结 81

第6章 负载均衡Ribbon 82

6.1 RestTemplate简介 82

6.2 Ribbon简介 83

6.3 使用RestTemplate和Ribbon来消费服务 83

6.4 LoadBalancerClient简介 86

6.5 源码解析Ribbon 88

第7章 声明式调用Feign 99

7.1 写一个Feign客户端 99

7.2 FeignClient详解 103

7.3 FeignClient的配置 104

7.4 从源码的角度讲解Feign的工作原理 105

7.5 在Feign中使用HttpClient和OkHttp 108

7.6 Feign是如何实现负载均衡的 110

7.7 总结 112

第8章 熔断器Hystrix 113

8.1 Hystrix简介 113

8.2 Hystrix解决的问题 113

8.3 Hystrix的设计原则 115

8.4 Hystrix的工作机制 115

8.5 在RestTemplate和Ribbon上使用熔断器 116

8.6 在Feign上使用熔断器 117

8.7 使用Hystrix Dashboard监控熔断器的状态 118

8.7.1 在RestTemplate中使用Hystrix Dashboard 118

8.7.2 在Feign中使用Hystrix Dashboard 121

8.8 使用Turbine聚合监控 122

第9章 路由网关Spring Cloud Zuul 124

9.1 为什么需要Zuul 124

9.2 Zuul的工作原理 124

9.3 案例实战 126

9.3.1 搭建Zuul服务 126

9.3.2 在Zuul上配置API接口的版本号 129

9.3.3 在Zuul上配置熔断器 130

9.3.4 在Zuul中使用过滤器 131

9.3.5 Zuul的常见使用方式 133

第10章 服务网关 135

10.1 服务网关的实现原理 135

10.2 断言工厂 136

10.2.1 After路由断言工厂 136

10.2.2 Header断言工厂 138

10.2.3 Cookie路由断言工厂 139

10.2.4 Host路由断言工厂 140

10.2.5 Method路由断言工厂 140

10.2.6 Path 路由断言工厂 141

10.2.7 Query 路由断言工厂 141

10.3 过滤器 142

10.3.1 过滤器的作用 143

10.3.2 过滤器的生命周期 144

10.3.3 网关过滤器 144

10.3.4 全局过滤器 151

10.4 限流 153

10.4.1 常见的限流算法 153

10.4.2 服务网关的限流 154

10.5 服务化 156

10.5.1 工程介绍 156

10.5.2 service-gateway工程详细介绍 157

10.6 总结 159

第11章 服务注册和发现Consul 160

11.1 什么是Consul 160

11.1.1 基本术语 160

11.1.2 Consul的特点和功能 161

11.1.3 Consul的原理 161

11.1.4 Consul的基本架构 161

11.1.5 Consul服务注册发现流程 163

11.2 Consul与Eureka比较 163

11.3 下载和安装Consul 164

11.4 使用Spring Cloud Consul进行服务注册和发现 165

11.4.1 服务提供者consul-provider 165

11.4.2 服务消费者consul-provider 167

11.5 使用Spring Cloud Consul Config做服务配置中心 168

11.6 动态刷新配置 170

11.7 总结 171

第12章 配置中心Spring Cloud Config 172

12.1 Config Server从本地读取配置文件 172

12.1.1 构建Config Server 172

12.1.2 构建Config Client 174

12.2 Config Server从远程Git仓库读取配置文件 175

12.3 构建高可用的Config Server 176

12.3.1 构建Eureka Server 177

12.3.2 改造Config Server 178

12.3.3 改造Config Client 178

12.4 使用Spring Cloud Bus刷新配置 180

12.5 将配置存储在MySQL数据库中 182

12.5.1 改造config-server工程 182

12.5.2 初始化数据库 183

第13章 服务链路追踪Spring Cloud Sleuth 184

13.1 为什么需要Spring Cloud Sleuth 184

13.2 基本术语 184

13.3 案例讲解 186

13.3.1 启动Zipkin Server 187

13.3.2 构建服务提供者 187

13.3.3 构建服务消费者 189

13.3.4 项目演示 191

13.4 在链路数据中添加自定义数据 192

13.5 使用RabbitMQ 传输链路数据 192

13.6 在MySQL数据库中存储链路数据 194

13.7 在ElasticSearch中存储链路数据 195

13.8 用Kibana展示链路数据 196

第14章 微服务监控Spring Boot Admin 198

14.1 使用Spring Boot Admin监控Spring Boot应用程序 199

14.1.1 创建Spring Boot Admin Server 199

14.1.2 创建Spring Boot Admin Client 200

14.2 使用Spring Boot Admin监控Spring Cloud微服务 202

14.2.1 构建Admin Server 202

14.2.2 构建Admin Client 204

14.3 在Spring Boot Admin中添加Security和Mail组件 205

14.3.1 Spring Boot Admin集成Security组件 206

14.3.2 Spring Boot Admin集成Mail组件 208

第15章 Spring Boot Security详解 209

15.1 Spring Security简介 209

15.1.1 什么是Spring Security 209

15.1.2 为什么选择Spring Security 209

15.1.3 Spring Security提供的安全模块 210

15.2 Spring Boot Security与Spring Security的关系 211

15.3 Spring Boot Security案例详解 211

15.3.1 构建Spring Boot Security工程 211

15.3.2 配置Spring Security 213

15.3.3 编写相关界面 215

15.3.4 Spring Security方法级别上的保护 220

15.3.5 从数据库中读取用户的认证信息 223

15.4 总结 228

第16章 使用Spring Cloud OAuth2保护微服务系统 230

16.1 什么是OAuth2 230

16.2 如何使用Spring OAuth2 231

16.2.1 OAuth2 Provider 231

16.2.2 OAuth2 Client 235

16.3 案例分析 236

16.3.1 编写Eureka Server 237

16.3.2 编写Uaa授权服务 237

16.3.3 编写service-hi资源服务 244

16.4 总结 250

第17章 使用Spring Security OAuth2和JWT保护微服务系统 251

17.1 JWT简介 251

17.1.1 什么是JWT 251

17.1.2 JWT的结构 252

17.1.3 JWT的应用场景 253

17.1.4 如何使用JWT 253

17.2 案例分析 253

17.2.1 案例架构设计 253

17.2.2 编写主Maven工程 254

17.2.3 编写Eureka Server 256

17.2.4 编写Uaa授权服务 256

17.2.5 编写user-service资源服务 262

17.3 总结 270

第18章 使用Spring Cloud构建微服务综合案例 271

18.1 案例介绍 271

18.1.1 工程结构 271

18.1.2 使用的技术栈 271

18.1.3 工程架构 272

18.1.4 功能展示 274

18.2 案例详解 277

18.2.1 准备工作 278

18.2.2 构建主Maven工程 278

18.2.3 构建eureka-server工程 279

18.2.4 构建config-server工程 280

18.2.5 构建Zipkin工程 281

18.2.6 构建monitoring-service工程 282

18.2.7 构建uaa-service工程 284

18.2.8 构建gateway-service工程 286

18.2.9 构建admin-service工程 287

18.2.10 构建user-service工程 287

18.2.11 构建blog-service工程 290

18.2.12 构建log-service工程 291

18.3 启动源码工程 294

18.4 项目演示 295

18.5 总结 296

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.