SpringCloud-Interview

86 阅读3分钟

SpringCloud的核心组件

作用推荐组件
服务注册与发现Nacos
微服务调用OpenFeign
负载均衡Ribbon(OpenFeign集成Ribbon)
熔断与服务降级Hystrix、Sentinel(OpenFeign集成Hystrix,默认关闭,不推荐使用,推荐Sentinel
网关Gateway

微服务的优点

  • 结构简单化,利于小团队开发
  • 单个服务功能单一,方便快速开发迭代

微服务的缺点

  • 增加运维难度,增加系统复杂度
  • 增加系统网络开销

SpringCloud与Dubbo微服务之间调用的区别

SpringCloud服务之间调用是基于Http Rest方式(服务之间解耦,降低性能) Dubbo是基于RPC方式(高耦合,性能相对高)

Eureka与Zookeeper的区别

ZooKeeper保证的是CP,Eureka保证的是AP,ZooKeeper在选举期间注册服务瘫痪,虽然服务最终会恢复,但是选举期间不可用的。Eureka各个节点是平等关系,只要有一台Eureka就可以保证服务可用,而查询到的数据并不是最新的自我保护机制会导致Eureka不再从注册列表移除因长时间没收到心跳而应该过期的服务。Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点(高可用)。当网络稳定时,当前实例新的注册信息会被同步到其他节点中(最终一致性)。Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像ZooKeeper一样使得整个注册系统瘫痪.

  • Zookeeper有Leader和的角色,Eureka各个节点平衡
  • Zookeeper采用半数存活原则,Eureka采用自我保护机制解决分区问题

网关的作用

统一管理微服务请求,权限控制,负载均衡,路由转发,监控,安全控制黑名单和白名单等

什么是网关

相当于一个微服务的入口,所有的请求都必须通过网关转发到具体的服务

微服务之间如何独立通信

  1. 远程调用,如:feign调用,直接通过过程调用别的服务
  2. 消息中间件

什么是feign,优点是什么

  • feign采用的是基于接口的注解
  • 集成了Ribbon,具有负载均衡的能力
  • 集成Hystrix,具有熔断的能力

注册中心原理

涉及三大角色:服务提供者,服务消费者,注册中心

  • 各个服务在启动时将自己的网络地址等信息注册到注册中心,注册中心存储这些数据
  • 服务消费中从注册中心查询服务提供者的地址,并通过这些地址调用服务提供者的接口
  • 各个微服务与注册中心使用一定机制(心跳)进行通信,如果注册中心与某个微服务长时间无法通信,就会注销该实例
  • 微服务网络地址发送变化(如:实例增加或者ip变动,会从新注册到注册中心,这样微服务就无需人工修改提供者的网络地址

注册中心功能

  1. 服务注册表:服务注册表是注册中心的核心,用于记录各个微服务的信息(名称,ip,端口等)服务注册表提供查询API和管理API,查询API用于查询可用的微服务实例,管理API用于注册与注销
  2. 服务注册与发现:服务注册是指在服务启动时将自己的信息注册到注册中心的过程,服务发现是指查询可用的微服务列表及网络地址机制
  3. 服务检查:注册中心使用一定的机制,定时的检查已经注册的服务,如发现某实例长时间无法访问,就会从服务注册表移除该实例