1.Spring Cloud 常见的组件有哪些?
Spring Cloud 5大组件有哪些?
- 基础的内容考察
- 回答原则:简单的问题不能答错(一道面试题就能淘汰一个人)新手和老手都要注意
面试参考回答:
面试官:Spring Cloud 5大组件有哪些?
候选人:早期我们一般认为的Spring Cloud五大组件是
- Eureka:注册中心
- Ribbon:负载均衡
- Feign:远程调用
- Hystrix:服务熔断
- Zuul/Gateway:网关
随着SpringCloudAlibba在国内兴起 , 我们项目中使用了一些阿里巴巴的组件
- 注册中心/配置中心 Nacos
- 负载均衡 Ribbon
- 服务调用 Feign
- 服务保护 sentinel
- 服务网关 Gateway
2.服务注册和发现是什么意思?(Spring Cloud 如何实现服务注册发现)
- 微服务中必须要使用的组件,考察我们使用微服务的程度
- 注册中心的核心作用是:服务注册和发现
- 常见的注册中心:eureka、nocas、zookeeper
我做过的哪个微服务项目,使用了哪个注册中心
Eureka的作用
服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?
- 我们当时项目采用的eureka作为注册中心,这个也是spring cloud体系中的一个核心组件
- 服务注册:服务提供者需要把自己的信息注册到eureka,由eureka来保存这些信息,比如服务名称、ip、端口等等
- 服务发现:消费者向eureka拉取服务列表信息,如果服务提供者有集群,则消费者会利用负载均衡算法,选择一个发起调用
- 服务监控:服务提供者会每隔30秒向eureka发送心跳,报告健康状态,如果eureka服务90秒没接收到心跳,从eureka中剔除
我看你之前也用过nacos、你能说下nacos与eureka的区别?
- 简历上有体现
- 面试官比较熟悉nacos和eureka
我看你之前也用过nacos、你能说下nacos与eureka的区别?
- Nacos与eureka的共同点(注册中心)
- 都支持服务注册和服务拉取
- 都支持服务提供者心跳方式做健康检测
- Nacos与Eureka的区别(注册中心)
- Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
- 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
- Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
- Nacos集群默认采用AP(高可用)方式,当集群中存在非临时实例时,采用CP(强一致)模式;Eureka采用AP方式
- Nacos还支持了配置中心,eureka则只有注册中心,也是选择使用nacos的一个重要原因
3.你们项目负载均衡如何实现的 ?
- 负载均衡 Ribbon,发起远程调用feign就会使用Ribbon
- Ribbon负载均衡策略有哪些 ?
- 如果想自定义负载均衡策略如何实现 ?
Ribbon负载均衡流程
- RoundRobinRule:简单轮询服务列表来选择服务器
- WeightedResponseTimeRule:按照权重来选择服务器,响应时间越长,权重越小,被选择概率较低
- RandomRule:随机选择一个可用的服务器
- BestAvailableRule:忽略那些短路的服务器,并选择并发数较低的服务器(最小连接数)
- RetryRule:重试机制的选择逻辑(按照轮询方式进行选择,如果出现宕机,会在指定时间内重试)
- AvailabilityFilteringRule:可用性敏感策略,先过滤非健康的,再选择连接数较小的实例
- ZoneAvoidanceRule:以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询(默认,区域就近)
如果想自定义负载均衡策略如何实现 ?
可以自己创建类实现IRule接口 , 然后再通过配置类或者配置文件配置即可 ,通过定义IRule实现可以修改负载均衡规则,有两种方式:
你们项目负载均衡如何实现的 ?
微服务的负载均衡主要使用了一个组件Ribbon,比如,我们在使用feign远程调用的过程中,底层的负载均衡就是使用了ribbon
Ribbon负载均衡策略有哪些 ?