Java2024-高频面试题(附答案)

* 1、SpringCloud有哪些常用组件?分别是什么作用?

答:

Nacos, OpenFeign, Sentinel,Seata,RabbitMQ,Gateway

Nacos: 服务注册中心,提供服务注册和发现功能

OpenFeign: 实现远程调用

Sentinel: 提供服务容错保护

Seata: 实现分布式事务管理

RabbitMQ: 实现异步通知

Gateway:(API网关服务):作用:安全,路由,限流,监控

* 2、服务注册发现的基本流程是怎样的?

答:

 服务启动时就会注册自己的服务信息(服务名、IP、端口)到注册中心

* 调用者可以从注册中心订阅想要的服务,获取服务对应的实例列表(1个服务可能多实例部署)

* 3、Eureka和Nacos有哪些区别?

答: Nacos与Eureka的区别

1.Nacos支持服务端主动检测提供者状态: 临时实例采用心跳模式,非临时实例采用主动检测模式

2.临时实例心跳不正常会被剔除,非临时实例则不会被剔除

3.Nacos支持服务列表变更的消息推送模式,服务列表更新更及时

4.Nacos集群默认采用AP方式,但也支持CP;Eureka采用AP方式

* 4、Nacos的分级存储模型是什么意思?

答:

任何一个微服务的实例在注册到Nacos时,都会生成以下几个信息,用来确认当前实例的身份,从外到内依次是:

namespace:命名空间

group:分组

service:服务名

cluster:集群

instance:实例,包含ip和端口

这就是nacos中的服务分级模型。

* 5、OpenFeign是如何实现负载均衡的?

答:

Spring在整合OpenFeign的时候,实现org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient类,其中定义了OpenFeign发起远程调用的核心流程。也就是四步:

* 获取请求中的serviceId
  
* 根据serviceId负载均衡,找出一个可用的服务实例
  
* 利用服务实例的ip和port信息重构url
  
* 向真正的url发起请求
  

而具体的负载均衡则是不是由OpenFeign组件负责。而是分成了负载均衡的接口规范,以及负载均衡的具体实现两部分。

负载均衡的接口规范是定义在Spring-Cloud-Common模块中,包含下面的接口:

* LoadBalancerClient:负载均衡客户端,职责是根据serviceId最终负载均衡,选出一个服务实例
  
* ReactiveLoadBalancer:负载均衡器,负责具体的负载均衡算法
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值