* [SpringBoot和SpringCloud的区别?](about:blank#SpringBootSpringCloud_193)
* [使用 Spring Boot 开发分布式微服务时,我们面临以下问题](about:blank#_Spring_Boot__209)
* [服务注册和发现是什么意思?Spring Cloud 如何实现?](about:blank#Spring_Cloud__225)
* [Spring Cloud 和dubbo区别?](about:blank#Spring_Cloud_dubbo_231)
* [负载平衡的意义什么?](about:blank#_241)
* [什么是 Hystrix?它如何实现容错?](about:blank#_Hystrix_247)
* [什么是 Hystrix 断路器?我们需要它吗?](about:blank#_Hystrix__269)
* [什么是 Netflix Feign?它的优点是什么?](about:blank#_Netflix_Feign_281)
* [什么是 Spring Cloud Bus?我们需要它吗?](about:blank#_Spring_Cloud_Bus_325)
* [Spring Cloud断路器的作用](about:blank#Spring_Cloud_343)
* [什么是Spring Cloud Config?](about:blank#Spring_Cloud_Config_355)
* [什么是Spring Cloud Gateway?](about:blank#Spring_Cloud_Gateway_369)
Java面试总结汇总,整理了包括Java基础知识,集合容器,并发编程,JVM,常用开源框架Spring,MyBatis,数据库,中间件等,包含了作为一个Java工程师在面试中需要用到或者可能用到的绝大部分知识。欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。文章持续更新中…
| 序号 | 内容 | 链接地址 |
| — | — | — |
| 1 | Java基础知识面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104390612](
) |
| 2 | Java集合容器面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104588551](
) |
| 3 | Java异常面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104390689](
) |
| 4 | 并发编程面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104863992](
) |
| 5 | JVM面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104390752](
) |
| 6 | Spring面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104397516](
) |
| 7 | Spring MVC面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104397427](
) |
| 8 | Spring Boot面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104397299](
) |
| 9 | Spring Cloud面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104397367](
) |
| 10 | MyBatis面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/101292950](
) |
| 11 | Redis面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/103522351](
) |
| 12 | MySQL数据库面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104778621](
) |
| 13 | 消息中间件MQ与RabbitMQ面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104588612](
) |
| 14 | Dubbo面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104390006](
) |
| 15 | Linux面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104588679](
) |
| 16 | Tomcat面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104397665](
) |
| 17 | ZooKeeper面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104397719](
) |
| 18 | Netty面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/104391081](
) |
| 19 | 架构设计&分布式&数据结构与算法面试题(2020最新版) | [https://thinkwon.blog.csdn.net/article/details/105870730](
) |
[](
)为什么需要学习Spring Cloud
不论是商业应用还是用户应用,在业务初期都很简单,我们通常会把它实现为单体结构的应用。但是,随着业务逐渐发展,产品思想会变得越来越复杂,单体结构的应用也会越来越复杂。这就会给应用带来如下的几个问题:
代码结构混乱:业务复杂,导致代码量很大,管理会越来越困难。同时,这也会给业务的快速迭代带来巨大挑战;
开发效率变低:开发人员同时开发一套代码,很难避免代码冲突。开发过程会伴随着不断解决冲突的过程,这会严重的影响开发效率;
排查解决问题成本高:线上业务发现 bug,修复 bug 的过程可能很简单。但是,由于只有一套代码,需要重新编译、打包、上线,成本很高。
由于单体结构的应用随着系统复杂度的增高,会暴露出各种各样的问题。近些年来,微服务架构逐渐取代了单体架构,且这种趋势将会越来越流行。Spring Cloud是目前最常用的微服务开发框架,已经在企业级开发中大量的应用。
[](
)什么是Spring Cloud
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
[](
)设计目标与优缺点
)设计目标
协调各个微服务,简化分布式系统开发。
)优缺点
微服务的框架那么多比如:dubbo、Kubernetes,为什么就要使用Spring Cloud的呢?
优点:
产出于Spring大家族,Spring在企业级开发框架中无人能敌,来头很大,可以保证后续的更新、完善
组件丰富,功能齐全。Spring Cloud 为微服务架构提供了非常完整的支持。例如、配置管理、服务发现、断路器、微服务网关等;
Spring Cloud 社区活跃度很高,教程很丰富,遇到问题很容易找到解决方案
服务拆分粒度更细,耦合度比较低,有利于资源重复利用,有利于提高开发效率
可以更精准的制定优化服务方案,提高系统的可维护性
减轻团队的成本,可以并行开发,不用关注其他人怎么开发,先关注自己的开发
微服务可以是跨平台的,可以用任何一种语言开发
适于互联网时代,产品迭代周期更短
缺点:
微服务过多,治理成本高,不利于维护系统
分布式系统开发的成本高(容错,分布式事务等)对团队挑战大
总的来说优点大过于缺点,目前看来Spring Cloud是一套非常完善的分布式框架,目前很多企业开始用微服务、Spring Cloud的优势是显而易见的。因此对于想研究微服务架构的同学来说,学习Spring Cloud是一个不错的选择。
[](
)Spring Cloud发展前景
Spring Cloud对于中小型互联网公司来说是一种福音,因为这类公司往往没有实力或者没有足够的资金投入去开发自己的分布式系统基础设施,使用Spring Cloud一站式解决方案能在从容应对业务发展的同时大大减少开发成本。同时,随着近几年微服务架构和Docker容器概念的火爆,也会让Spring Cloud在未来越来越“云”化的软件开发风格中立有一席之地,尤其是在五花八门的分布式解决方案中提供了标准化的、全站式的技术方案,意义可能会堪比当年Servlet规范的诞生,有效推进服务端软件系统技术水平的进步。
[](
)整体架构
[](
)主要项目
Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架"Spring Boot化"的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色。
)Spring Cloud Config
集中配置管理工具,分布式系统中统一的外部配置管理,默认使用Git来存储配置,可以支持客户端配置的刷新及加密、解密操作。
)Spring Cloud Netflix
Netflix OSS 开源组件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件。
Eureka:服务治理组件,包括服务端的注册中心和客户端的服务发现机制;
Ribbon:负载均衡的服务调用组件,具有多种负载均衡调用策略;
Hystrix:服务容错组件,实现了断路器模式,为依赖服务的出错和延迟提供了容错能力;
Feign:基于Ribbon和Hystrix的声明式服务调用组件;
Zuul:API网关组件,对请求提供路由及过滤功能。
)Spring Cloud Bus
用于传播集群状态变化的消息总线,使用轻量级消息代理链接分布式系统中的节点,可以用来动态刷新集群中的服务配置。
)Spring Cloud Consul
基于Hashicorp Consul的服务治理组件。
)Spring Cloud Security
安全工具包,对Zuul代理中的负载均衡OAuth2客户端及登录认证进行支持。
)Spring Cloud Sleuth
Spring Cloud应用程序的分布式请求链路跟踪,支持使用Zipkin、HTrace和基于日志(例如ELK)的跟踪。
)Spring Cloud Stream
轻量级事件驱动微服务框架,可以使用简单的声明式模型来发送及接收消息,主要实现为Apache Kafka及RabbitMQ。
)Spring Cloud Task
用于快速构建短暂、有限数据处理任务的微服务框架,用于向应用中添加功能性和非功能性的特性。
)Spring Cloud Zookeeper
基于Apache Zookeeper的服务治理组件。
)Spring Cloud Gateway
API网关组件,对请求提供路由及过滤功能。
)Spring Cloud OpenFeign
基于Ribbon和Hystrix的声明式服务调用组件,可以动态创建基于Spring MVC注解的接口实现用于服务调用,在Spring Cloud 2.0中已经取代Feign成为了一等公民。
[](
)Spring Cloud的版本关系
Spring Cloud是一个由许多子项目组成的综合项目,各子项目有不同的发布节奏。 为了管理Spring Cloud与各子项目的版本依赖关系,发布了一个清单,其中包括了某个Spring Cloud版本对应的子项目版本。 为了避免Spring Cloud版本号与子项目版本号混淆,Spring Cloud版本采用了名称而非版本号的命名,这些版本的名字采用了伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序,例如Angel是第一个版本,Brixton是第二个版本。 当Spring Cloud的发布内容积累到临界点或者一个重大BUG被解决后,会发布一个"service releases"版本,简称SRX版本,比如Greenwich.SR2就是Spring Cloud发布的Greenwich版本的第2个SRX版本。目前Spring Cloud的最新版本是Hoxton。
)Spring Cloud和SpringBoot版本对应关系
| Spring Cloud Version | SpringBoot Version |
| — | — |
| Hoxton | 2.2.x |
| Greenwich | 2.1.x |
| Finchley | 2.0.x |
| Edgware | 1.5.x |
| Dalston | 1.5.x |
)Spring Cloud和各子项目版本对应关系
| Component | Edgware.SR6 | Greenwich.SR2 |
| — | — | — |
| spring-cloud-bus | 1.3.4.RELEASE | 2.1.2.RELEASE |
| spring-cloud-commons | 1.3.6.RELEASE | 2.1.2.RELEASE |
| spring-cloud-config | 1.4.7.RELEASE | 2.1.3.RELEASE |
| spring-cloud-netflix | 1.4.7.RELEASE | 2.1.2.RELEASE |
| spring-cloud-security | 1.2.4.RELEASE | 2.1.3.RELEASE |
| spring-cloud-consul | 1.3.6.RELEASE | 2.1.2.RELEASE |
| spring-cloud-sleuth | 1.3.6.RELEASE | 2.1.1.RELEASE |
| spring-cloud-stream | Ditmars.SR5 | Fishtown.SR3 |
| spring-cloud-zookeeper | 1.2.3.RELEASE | 2.1.2.RELEASE |
| spring-boot | 1.5.21.RELEASE | 2.1.5.RELEASE |
| spring-cloud-task | 1.2.4.RELEASE | 2.1.2.RELEASE |
| spring-cloud-gateway | 1.0.3.RELEASE | 2.1.2.RELEASE |
| spring-cloud-openfeign | 暂无 | 2.1.2.RELEASE |
注意:Hoxton版本是基于SpringBoot 2.2.x版本构建的,不适用于1.5.x版本。随着2019年8月SpringBoot 1.5.x版本停止维护,Edgware版本也将停止维护。
[](
)SpringBoot和SpringCloud的区别?
SpringBoot专注于快速方便的开发单个个体微服务。
SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](
理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
[外链图片转存中…(img-ECTpFZFq-1631181174026)]
[外链图片转存中…(img-SbwRkY6F-1631181174028)]
[外链图片转存中…(img-jtMsMaRN-1631181174029)]
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
[外链图片转存中…(img-tqfDLaJP-1631181174031)]
[外链图片转存中…(img-W9ia1GEL-1631181174032)]
**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](
)**