spring的IOC和AOP
Spring:
Spring:框架是个轻量级的Java EE框架。所谓轻量级,是指不依赖于容器就能运行的。
spring提供了AOP技术,支持将一些通用任务,如安全,事物,日志,权限等进行集中
式管理,从而提供了跟那个好的复用
springAOP
一般为面向切面,作为面向对象的一种补充。他减少了系统中的重复代码,降低了
模块间的耦合度,同时提高了系统的可维护性。可用于权限认证,日志,事务处理
spring的五种通知类型:前置通知,正常返回通知 ,异常返回通知,返回通知,环绕通知
springAOP使用的动态代理,所谓的动态代理就是说AOP框架不会去修改字节码,而是每
次运行时在内存中临时为方法生成一个AOP对象,这个AOP对象包含了目标对象的全部方法,
并且在特定的切点做了增强处理,并回调对象的方法。
Spring AOP中的动态代理主要有两种模式,JDK动态代理和CGLIB动态代理:
spring IOC
ioc是一个容器,在spring中,他会认为一切Java资源都是JavaBean。容器的目标
就是管理这些bean和他们之间的关系;spring ioc容器能够对其管理,只是springioc
管理。对象和其依赖关系,采取的不是为的主动创建。
SpringMVC
Spring MVC 提供了一种分离式的方法来开发 Web 应用。通过运用像 DispatcherServelet,MoudlAndView 和 ViewResolver 等一些简单的概念,开发 Web 应用将会变的非常简单。
spring boot
为什么使用springboot(或者说有点)!
独立于运行,简单配置,自动配置,无代码生成和XML配置,应用监控,上手容易
什么是spring boot
是spring开源组织下的子项目,是spring组成一站式解决方案,主要简化了使用spring
的难度,简省了繁重的配置,提供了各种启动器
如何理解springboot中的starters
Starters可以理解成启动器,它包含了一系列可以集成到应用里面看你的依赖包,
你可以一站式集成spring及其其他技术,而不需要到处找示例代码和依赖包,
如果你想使用springJPA访问数据库,只要加入spring-boot-starter-data-jpa启动器,依赖
就能使用了
springboot支持那些日志框架,推荐和默认那个
支持:java util logging,log4j,logback,如果使用starters启动器,springboot将使用
log back作为默认日志框架
springcloud
什么是Eureka的自我保护机制?
Eureka如果收到的微服务心跳相对于应该收到的微服务心跳来说,如果低于了85%,那么就会触发Eureka的自我保护机制。一旦自我保护机制启动,Eureka会保护所有的微服务,不被移除,哪怕当前微服务已经下线,仍然会保留到Eureka微服务列表中。
自我保护机制的作用
为什么Eureka要一种看起来如此傻逼的设计?- 自我保护机制是为了保证微服务间的高可用性,避免脑裂的影响
为什么Zookeeper要设计一个过半数存活原则?感觉特别浪费资源? - 为了让整个集群一定只有一个Leader
CAP原则:任何一个分布式系统,都只能满足CAP中的2个原则,因为分区问题不可避免,所以P是必选的,一般的系统,都是从C和A中做选择。Zookeeper是CP设计,而Eureka是AP设计。
C(一致性)
A(可用性)
P(分区容错性)
什么是Ribbon?
Ribbon是一个客户端的负载均衡器,用来进行SpringCloud间的微服务负载均衡调用
为什么有了Ribbon还有用Feign?
Feign底层也调用了Ribbon,Feign其实本质上是Ribbon + Hystrix(豪猪)的集合体,因为Ribbon本身的写法不够面向对象,很多Java程序员对这种写法会很不习惯。
Hystrix-断路器
1、 什么是断路器
断路器 - 就是微服务架构的保险丝
2、为什么需要Hystrix(保险丝)?
在微服务架构中,根据业务会拆分成一个一个为微服务,服务于服务之间可以互相调用。为了保证高可用性,单个服务通常会集群部署,但是由于网络等原因,不能保证服务100%可用。如果单个服务出现问题,调用这个服务的服务就有可能出现线程阻塞,刚好这个时候大量的请求在访问当前服务,就会导致当前服务的线程资源不足,从而导致服务瘫痪,形成故障转移,导致**“服务雪崩”**
3、Hystrix是如何解决服务间调用问题的
资源隔离:鸡蛋不要放在一个篮子里(线程池隔离、信号量隔离)
服务降级:当调用目标服务出问题(超时、报错…)时,会自动的调用一个本地的方法,返回一个默认值
请求熔断:一旦确定目标服务出问题(失败比例),Hystrix的熔断器会自动打开,拦截后续的所有请求,立刻判定失败,进行服务降级。过了单位时间之后,熔断器变成半开状态,放行一个请求,如果还是失败,继续全开,拦截请求,否则熔断器关闭。
Hystrix是如何解决服务间调用问题的?
资源的隔离:线程池、信号量隔离
服务的降级(自动降级):当调用目标服务出问题后,会自动降级调用一个默认的方法返回一个默认值
调用的熔断:一旦目标服务出现问题,熔断器就会触发,后续的服务就不会再尝试调用目标服务,而是直接走降级流程
路由网关
1、什么是路由网关?
简单来说,路由网关往往是微服务架构的入口组件,外来的所有的请求,都需要通过路由网