SpringBoot第一弹;
1.SpringBoot如何实现自动配置?(自动配置原理)
引出问题:
大家知道,SpringBoot有一个全局的配置文件:application.properties或application.yml。关于项目的各种属性都可以在这个文件中进行配置。那么为什么这些配置只需要配置在yml中项目就可以自动配置呢?
解答:
SpringBoot有一个启动类,运行SpringBoot项目需要从main方法开始,所以我们可以猜想,自动配置应该在启动类中被搞定了。
@SpringBootApplication是启动类不可缺少的一个注解(复合注解),在SpringBootApplication注解中最为重要的应该就是@EnableAutoConfiguraution注解了,即自动开启配置注解,其中import中的AutoConfigurationImportSelector注解中的方法SpringFactroyiesLoader.LoadFactoryNames()扫描所有具有META-INF/spring.factories的jar包。从而得到所有的配置类。
2.什么是SpringCloud?
SpringCloud是一系列框架的有序集合,他利用SpringBoot的开发便利性巧妙的简化了分布式系统基础设施的开发和搭建,可以做到一键部署和使用。
3.对负载均衡的理解?
1.负载均衡存在的意义?
负载均衡是我们处理高并发、缓解网络压力和进行服务端扩容的重要手段之一。多用于并发量高的分布式程序中
2.服务端负载均衡
服务端负载均衡分为两种:1.硬件负载均衡 2.软件负载均衡
硬件负载均衡主要通过在服务器节点之间安装用于负载均衡的设备,常见的如F5
软件负载均衡主要在服务器上安装一些具有负载均衡功能的软件来实现请求的分发进而实现负载均衡,常见的就是Nginx
无论是硬件负载均衡还是软件负载均衡,工作原理都如下图:
3.客户端负载均衡
官方解释:
“Ribbo是一个基于HTTP和TCP的客户端负载均衡器,当我们将Ribbon和Eureka一起使用时,Ribbon会从Eureka注册中心去获取服务端列表,然后进行轮询访问以到达负载均衡的作用,客户端负载均衡中也需要心跳机制去维护服务端清单的有效性,当然这个过程需要配合服务注册中心一起完成。”
个人理解:当请求到达客户端的时候,这个时候客户端通过从注册中心获取服务器列表,分发请求,然后进行轮询访问已达到负载均衡的作用。
4.什么是服务熔断?
请求,然后进行轮询访问已达到负载均衡的作用。**
4.什么是服务熔断?
服务熔断就是相当于我们电闸的保险丝,一旦服务发生异常,请求访问的时候就直接返回fallback的默认值