java面试总结借鉴 微服务springboot

1. spring boot和springcloud区别和优点

  Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务

Spring Cloud基于Spring Boot,为微服务体系开发中的架构问题,提供了一整套的解决方案——服务注册与发现,服务消费,服务保护与熔断,网关,分布式调用追踪,分布式配置管理等。
Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring boot专注于快速、方便集成的单个个体,Spring Cloud是关注全局的服务治理框架;spring boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring boot来实现。

2. springboot 和spring 其他架构优点

学过Spring的都知道,Spring开发有非常头疼的三点:

以启动一个带Hibernate的Spring MVC为例。

  1. 依赖太多了,而且要注意版本兼容。这个应用,要添加10-20个依赖,Spring相关的包10多个,然后是Hibernate包,Spring与Hibernate整合包,日志包,json包一堆,而且要注意版本兼容性。

  2. 配置太多了,要配置注解驱动,要配置数据库连接池,要配置Hibernate,要配置事务管理器,要配置Spring MVC的资源映射,要在web.xml中配置启动Spring和Spring MVC等

3.部署和运行麻烦。要部署到tomcat里面。不能直接用java命令运行。

3、简单组件配置
spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持
spring-boot-starter-data-jpa 数据库支持
spring-boot-starter-aop aop代理,controller拦截
proper #aop
spring.aop.proxy-target-class=true
spring.aop.auto=true
spring-boot-starter-data-redis redis数据库支持

4、springcloud 工作效用之一
springcloud断路器的作用

    当一个服务调用另一个服务由于网络原因或者自身原因出现问题时 调用者就会等待被调用者的响应 当更多的服务请求到这些资源时

            导致更多的请求等待 这样就会发生连锁效应(雪崩效应) 断路器就是解决这一问题

            断路器有完全打开状态

                    一定时间内 达到一定的次数无法调用 并且多次检测没有恢复的迹象 断路器完全打开,那么下次请求就不会请求到该服务

            半开

                    短时间内 有恢复迹象 断路器会将部分请求发给该服务 当能正常调用时 断路器关闭

            关闭

                    当服务一直处于正常状态 能正常调用 断路器关闭

spring 事务: 在这里插入图片描述传播行为7个:
事务的传播机制定义在TransactionDefinition的接口中,我们也可以通过枚举类传播类调用,下面我也附上两个类的源码供参考。

REQUIRED(默认):支持使用当前事务,如果当前事务不存在,创建一个新事务。
技术支持:支持使用当前事务,如果当前事务不存在,则不使用事务。
强制性:中文翻译为强制,支持使用当前事务,如果当前事务不存在,则抛出异常。
REQUIRES_NEW:创建一个新事务,如果当前事务不存在,把当前事务挂起。
NOT_SUPPORTED:无事务执行,如果当前事务不存在,把当前事务挂起。
NEVER:无事务执行,如果当前有事务则抛出异常。
NESTED:嵌套事务,如果当前事务存在,那么在嵌套的事务中执行如果当前事务不存在,则表现跟REQUIRED一样。
重点讲一下REQUIRES_NEW和嵌套的区别,REQUIRES_NEW完全是一个新事务,嵌套是一个外部事务的子事务,是外部事务的一部分,
如果嵌套事务发生异常回滚,则只回滚嵌套事务部分。而外部事务的提交和回滚均会提交/回滚嵌套事务。
要求这是两个事务互不干扰,如果内部事务发生异常且异常抛到了外部调用方法,那么两个事务都回滚,
如果内部事务提交成功,外部事务提交失败,外部事务不影响内部事务,
或者外部事务提交成功,但内部事务失败的异常被外部事务捕捉住,则不影响外部事务
spring事务隔离级别(Isolation Level)

ISOLATION_DEFAULT
这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.

另外四个与JDBC的隔离级别相对应;

ISOLATION_READ_UNCOMMITTED (未提交读)
这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。
这种隔离级别会产生脏读,不可重复读和幻像读。

ISOLATION_READ_COMMITTED (提交读)
保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。
这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。

ISOLATION_REPEATABLE_READ (可重复读)
这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。
它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)。

ISOLATION_SERIALIZABLE (序列化)
这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。
除了防止脏读,不可重复读外,还避免了幻像读。

========================================================================================

脏读:指一个事务读取了一个未提交事务的数据

不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不同.一个事务读取到了另一个事务提交后的数据.

虚读(幻读):在一个事务内读取了别的事务插入的数据,导致前后读取不一致(insert)

五个隔离级别:

脏不幻(金不换)

第一个是数据库默认

第二个会出现:脏读、不可重复读、幻读

第三个会出现:不可重复读、幻读

第四个会出现:幻读

第五个全部都不会出现

MySQL

mysql默认的事务处理级别是 REPEATABLE-READ,也就是可重复读

Oracle

oracle数据库支持READ COMMITTED 和 SERIALIZABLE这两种事务隔离级别。

默认系统事务隔离级别是READ COMMITTED,也就是读已提交

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值