springcloud面试:常见分类概览、服务注册(nacos、eureka)、负载均衡(ribbon)、服务雪崩和熔断降级机制、服务监控(skywalking)

常见分类概览

springcloud面试:常见分类概览、服务注册(nacos、eureka)、负载均衡(ribbon)、服务雪崩和熔断降级机制、服务监控(skywalking)_第1张图片

springcloud常用组件/常见架构

springcloud面试:常见分类概览、服务注册(nacos、eureka)、负载均衡(ribbon)、服务雪崩和熔断降级机制、服务监控(skywalking)_第2张图片
通常情况下,我们使用以下五大组件构成的框架:

  • Eureka : 注册中心
  • Ribbon : 负载均衡
  • Feign : 远程调用
  • Hystrix : 服务熔断
  • Zuul/Gateway : 网关

但随着SpringCloudAlibba在国内兴起 , 我们逐渐使用以下五大组件构成的阿里巴巴框架:

  • 注册中心/配置中心 Nacos
  • 负载均衡 Ribbon
  • 服务调用 Feign
  • 服务保护 sentinel
  • 服务网关 Gateway

服务注册与发现中心

eureka

eureka的上手使用具体可以见:http://t.csdnimg.cn/YYw3o

springcloud面试:常见分类概览、服务注册(nacos、eureka)、负载均衡(ribbon)、服务雪崩和熔断降级机制、服务监控(skywalking)_第3张图片

nacos

具体可见:http://t.csdnimg.cn/V6lJg
springcloud面试:常见分类概览、服务注册(nacos、eureka)、负载均衡(ribbon)、服务雪崩和熔断降级机制、服务监控(skywalking)_第4张图片

负载均衡(Ribbon)

详情可以看:http://t.csdnimg.cn/SclNT
springcloud面试:常见分类概览、服务注册(nacos、eureka)、负载均衡(ribbon)、服务雪崩和熔断降级机制、服务监控(skywalking)_第5张图片

常见负载均衡策略

  • 简单轮询
  • 权重选择。服务器响应时间越长,权重越小。
  • 随机选择
  • 区域内轮询(譬如北京的机房算一个区域,上海的机房算一个区域)

自定义负载均衡策略

springcloud面试:常见分类概览、服务注册(nacos、eureka)、负载均衡(ribbon)、服务雪崩和熔断降级机制、服务监控(skywalking)_第6张图片

服务雪崩

服务雪崩,即一个服务失败,导致该节点的请求以及其他依赖于它的整条链路的服务都失败或超时的情形。

熔断降级(解决方案)

服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式。被降级的服务会返回一个简化的响应或者一个友好的错误提示,以保证整体系统的稳定性。一般在实际开发中与feign接口整合,编写具体的降级逻辑。

譬如现在有个服务leadnews-article,其发出的post请求article/save不可达。
那么我们代码如下:

@FeignClient(value="leadnews-article",fallback= IArticleClientFallback.class)
public interface IArtcleClient{
	@PostMapping("/api/v1/article/save")
	public ResponseResult saveArticle(@RequestBody ArticleDto dto);
}

@Component
public interface IArtcleClientFallback implements IArtcleClient{
	@Override
	public ResponseResult saveArticle(@RequestBody ArticleDto dto){
		return ResponseResult.errorResult(AppHttpCodeEnum.SERVER_ERROR,"获取数据失败");
	}
}

相当于请求正常时走上一段代码,但是失败时走下一段代码,获得并返回具体的错误通知。但是仅仅如此的话,就缺少了自动恢复机制。因此我们往往还需要配合熔断机制。

Hystrix 熔断机制,用于监控微服务调用情况, 默认是关闭的,如果需要开启需要在引导类上添加注解:@EnableCircuitBreaker
如果检测到 10 秒内请求的失败率超过 50%,就触发熔断机制。之后每隔 5 秒重新尝试请求微服务,如果微服务不能响应,继续走熔断机制。如果微服务可达,则关闭熔断机制,恢复正常请求。

服务监控(skywalking)

skywalking,一个分布式系统的应用程序性能监控工具,提供了完善的链路追踪能力, apache的开源项目。可以用来实现服务监控。
具体可以看本人的其他博客。

常见面试题回答模板

springcloud的五大组件有哪些?

回答:
早期我们一般认为的Spring Cloud五大组件是

  • Eureka : 注册中心
  • Ribbon : 负载均衡
  • Feign : 远程调用
  • Hystrix : 服务熔断
  • Zuul/Gateway : 网关

随着SpringCloudAlibba在国内兴起 , 我们项目中使用了一些阿里巴巴的组件

  • 注册中心/配置中心 Nacos

  • 负载均衡 Ribbon

  • 服务调用 Feign

  • 服务保护 sentinel

  • 服务网关 Gateway

服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?

回答:
springcloud一般用eureka或者nacos来实现服务注册和发现。
我们项目当时采用的是eureka。
服务注册就是服务提供者需要把自己的信息注册到eureka,由eureka来保存这些信息,比如服务名称、ip、端口等等
服务发现就是服务消费者向eureka拉取服务列表信息,如果服务提供者有集群,则消费者会利用负载均衡算法,选择一个发起调用。

能说下nacos与eureka的区别吗?

回答:
Nacos与eureka都支持服务注册和拉取,以及心跳检查机制。
但第一,Nacos支持主动检测提供者状态,其中分为临时实例和非临时实例。临时实例采用心跳模式,非临时实例采用主动检测模式。临时实例心跳不正常会被剔除,非临时实例则不会被剔除。
第二,如果服务列表变更,Nacos支持主动推送,通知给服务消费者。
第三,Nacos还支持配置中心,但eureka则只有注册中心。

负载均衡如何实现的?

回答:

在服务调用过程中的负载均衡一般使用SpringCloud的Ribbon 组件实现 , Feign的底层已经自动集成了Ribbon , 使用起来非常简单。
当发起远程调用时,ribbon先从注册中心拉取服务地址列表,然后按照一定的路由策略选择一个发起远程调用,一般的调用策略是轮询。

你们的微服务是怎么监控的?

回答:
我们项目使用的是skywalking。它可以监控接口、服务、物理实例的一些状态。特别是在压测的时候可以看到众多服务中哪些服务和接口比较慢,我们可以针对性的分析和优化。同时skywalking的告警页面可以自定义告警规则,且可以接入钉钉、企微等接口,使得项目上线以后报错可以第一时间给相关负责人发短信和发邮件。

你可能感兴趣的:(spring,cloud,面试,eureka,java,后端,负载均衡,ribbon)