1.Springboot自动配置的原理
在spring程序的main方法中田间@SpringBootApplication或者是@EnableAutoConfiguration会自动去maven中读取starter中的spring.factories文件,该文件配置了所有需要被spring容器创建的bean
2.springboot读取配置文件的方式
springboot默认读取配置文件为application.properties或者是application.yml
3.springcloud如何实现服务的注册和发现
服务在发布时,指定服务的名称(服务的名称包含ip和端口),将服务注册到注册中心(Eureka或者时zookeeper)
这一个过程时springcloud自动实现,只需要在main方法中添加@EnableDiscoveryClient 同一个服务修改端口就可以
启动多个实例。
调用方法:传递服务名称通过注册中心获取所有的可用的服务的实例,通过负载均衡策略(ribbo/feign)对服务进行调用
4.ribbon和feign的区别
①启动类不同,ribbon用的时@RibbonClient,feign用的时@EnableFeignClients
②服务的指定位置不同,Ribbon是在@RibbonClient注解上申明,Feign则是定义在抽象方法的接口中使用@FeignClient声明
③调用的方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐,
Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可
不需要自己构建http请求,不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。
5.springcloud断路器的作用
当一个服务调用另一个服务时由于网络原因或者自身的原因,调用者就会等待被调用着的响应,当更多的请求
调用被调用着时而导致更多的服务调用着等待,这就引起了来连锁反应(雪崩效应),断路器就是为了解决这个问题
①断路器全开状态:一定的时间内,达到一定的调用次数无法调用,并且多少检测没有恢复的迹象,断路器全开
那么下一次请求就不会请求到该服务
②断路器半开状态:短时间内 有恢复的迹象,断路器就会将请求发送给该服务,当能正常使用时,断路器关闭
③关闭状态:当服务一直处于正常状态,能正常调用,断路器关闭