Java面试——Spring Cloud 相关
1,什么是微服务?
- 以前的模式是所有的代码都在同一个工程中,部署在同一个服务器中,同一个项目中的不同模块、不同功能相互抢夺资源。
- 微服务将工程根据不同的业务规则拆分成微服务,微服务部署在不同的机器上,服务之间项目调用。
- Java的微服务的框架有dubbo,springcloud。
2,SpringCloud 介绍:
Spring cloud为开发人员提供了快速构建分布式系统的一些通用模式(配置管理、服务发现、断路器、只能路由、微代理),分布式系统的协调导致了锅炉版模式,并且使用Spring Cloud开发人员可以快速的构建起来实现这些模式的服务和应用程序。
3,Spring cloud如何实现服务的注册与发现?
-服务在发布时,指定对应的服务名(服务名包括ip地址和端口),将服务注册到注册中心(eureka)。
这一过程是Spring Cloud自动实现,只需要在main方法上添加@EnableDiscoveryClient,同一个服务修改端口就可以启动多个实例。
调用方法:传递服务名称通过注册中心获取所有的可用实例,通过负载均衡策略(ribbon和feign)调用对用的服务。
4,ribbon和feign的区别?
ribbon和feign都是用于调用其他服务,不过方式不同。
1,启动类使用注解不同:ribbon使用的是@RibbonClient,feign使用的是@EnableFeignClients
2,服务的指定位置不同:ribbon是在@RibbonClient注解上声明,feign是在定义抽象方法的接口使用@FeignClient注解声明
3,调用方式不同:(1)ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。
(2)feign则是在ribbon的基础上一次改进,采用接口的形式,将需要调用的其他服务的方法定义成抽象方法即可。不需要自己构建http请求,不过要注意的是抽象方法的注解、方法签名和提供服务的方法要完全一致。
5,Spring Cloud的断路器的作用?
1,当一个服务调用另一个服务由于网路原因或者自身原因出现问题,调用者就会等待被调者的回应。
2,当更多的服务请求这些资源时,导致更多的请求等待,这样就会发生连效应,断路器就是解决这一问题的。
3,断路器有完全打开状态。
4,一定时间内,达到一定次数的无法调用,并且多次检测没有恢复的迹象,断路器完全打开,那么下次的请求不会请求到该服务。
5,半开状态:
短时间内没有恢复迹象,断路器会将部分请求发送给服务,如果能够正常调用,断路器就会关闭。
关闭状态:
当服务器一直正常,能正常调用,断路器关闭。
6,JPA和Hibernate有哪些区别?
简而言之:
1,JPA是一个规范或者一个接口。
2,Hibernate是JPA的一个实现。
7,Zookeeper是什么框架?
分布式、开源的应用程序协调服务,原本是Hadoop、HBase的一个重要的组件。
包括:配置维护、域名服务、分布式同步、组服务等。
8,Zookeeper的应用场景:
1,Zookeeper的功能很强大,应用场景很多,Zookeeper主要做注册中心使用,
2,基于Dubbo框架开发的提供者、提供者都向zookeeper注册自己的URL,消费者还能拿到并订阅提供者的URL,以便在后续的程序中调用提供者。
3,而提供者发生了变动,也会通过zookeeper向订阅的消费者发送通知。
9,Zookeeper的节点类型:
- 持久节点:创建之后一直存在,除非有删除操作,创建节点的客户端会话失效也不影响此节点。
- 持久有序节点:跟持久一样,就是父节点在创建下一级节点的时候,记录每个子节点创建的先后顺序。会给每个子节点加上一个数字后缀。
- 临时节点:创建客户端会话失效(注意是会话失效,而不是断了),节点也就没了,不能创建子节点。
- 临时有序节点:和临时节点一样,就是父节点在创建下一级节点的时候,记录每个子节点创建的先后顺序。会给每个子节点加上一个数字后缀。