微服务面试考点

微服务面试考点

Spring Cloud

Spring Cloud 大组件有哪些?

注册中心、配置中心:Nacos
远程调用:Feign
网关:Gateway
负载均衡:Ribbon
服务熔断限流:Sentinel

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

在这里插入图片描述

  • 服务注册:服务提供者需要把自己的信息注册到Nacos,有Nacos来保存这些信息,比如服务名称、ip、端口等等
  • 服务发现:消费者像nacos拉取服务列表信息,如果服务提供者有集群,则消费者会利用负载均衡算法,选择一个发起调用
  • 服务监控:服务提供者会每个一段时间向Nacos发送心跳,报告健康状态,如果Nacos服务一段时间没接收到心跳,从Nacos中剔除。Naocs还有非临时实例向服务询问。

负载均衡是如何实现的?

微服务的负载均衡策略使用了一个组件Ribbon,比如feign远程调用的过程中,底层的负载均衡就是ribbon
Ribbon负载均衡流程
在这里插入图片描述

负载均衡策略有哪些?

  • RoundRobinRule:简单轮询服务列表选择服务器
  • WeightedResponseTimeRule:按照权重来选择服务器,响应时间越长,权重越小
  • RandomRule:随机选择一个可用服务器
  • ZoneAvoidanceRule:以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询(默认策略)
  • BestAvailableRule:忽略那些短路的服务器,并选择并发数较低的服务器
  • RetryRule:重试机制的选择服务器
  • AvailabilityFilteringRule:可用性敏感策略,先过滤非健康的,在选择连接数较小的实例

如果自定义负载军很策略如何实现?

  1. 可以自己创建类实现IRuke接口,然后在通过配置类或者配置文件配置即可,通过定义IRule实现可以修改负载均衡策略(全局)
  2. 在application.yml配置文件进行配置(局部)
xxxservice:
	ribbon:
		NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 随机负载均衡策略

什么是服务雪崩?怎么解决这个问题?(熔断、限流)

  • 服务雪崩:一个服务失败,导致整条链路都失败的情形
  • 怎么解决:熔断降级(解决)Sentinel服务熔断降级。限流(预防)
  • 服务降级:服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃(兜底策略)
  • 服务熔断:熔断机制用于监控服务调用情况,默认是关闭的,如果需要开启需要在引导类上添加注解@EnableCircuitBreaker如果检测到10秒内请求的失败率超过50%,就会触发熔断机制。之后每隔5秒重新尝试请求微服务,如果微服务不能响应,继续走熔断机制。如果微服务可达,则关闭熔断机制,恢复正常请求
    在这里插入图片描述

微服务是怎么监控的?

可以使用skywalking进行监控

  1. skywalking主要可以监听接口、服务、物理实例的一些状态。特别是在压测的时候可以看到众多服务中那些服务和接口比较慢,可以针对性的分析和优化
  2. skywalking可以设置告警规则,特别是在项目上线后,如果报错,可以设置给相关负责人发送短信和邮件,第一时间知道项目bug情况以及修复

skywalking:分布式系统的应用程序性能监控工具(APM),提供了完善的链路追踪能力,apache的顶级项目(前华为产品经理吴晟主导开源)

  • 服务:业务资源应用系统(微服务)
  • 断电:应用系统对外暴露的功能接口(接口)
  • 实例:物理机

业务相关

项目中有没有做过限流?怎么做的?

为什么要限流?

  1. 并发大(突发流量)
  2. 防止用户恶意刷接口

限流的实现方式:

  • Tomcat:设置最大连接数
  • Nginx:漏桶算法
  • 网关:令牌桶算法
  • 自定义拦截器

Nginx限流:
控制速率(突发流量)
控制并发连接数

网关限流:
yml配置文件中,微服务路由设置添加局部过滤器RequestRateLimiter

限流常见的算法有哪些?

网关令牌桶算法、Nginx漏桶算法

解释一下CAP和BASE

C:一致性
A:可用性
P:分区容错性
CAP理论:分布式系统节点之间是需要网络连接的,分区(P)是必然存在的。C,A只能二者选一无法共同存在。所以分布式系统只能只能取CP或者AP。CP是指强一致,AP是指高可用。

Base理论:

  • Basically Available(基本可用):分布式系统在出现故障时,允许损失部分可用性既保证核心可用。
  • Soft state(软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态
  • Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致

分布式事务解决方案?

Seata架构:
Seata事务管理中有三个重要角色:

  • TC:事务协调者,维护全局和分支事务的状态,协调全局事务提交或回滚
  • TM:事务管理器,定义全局事务的范围、开始全局事务、提交或回滚全局事务
  • RM:资源管理器,管理分支事务处理的资源。与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚

在这里插入图片描述
MQ分布式事务:
在这里插入图片描述

分布式服务的接口幂等性如何设计?

幂等:多次调用方法或者接口不会改变业务状态,可以保证重复调用的结果和单词调用的结果一致
可以使用数据库唯一索引、分布式锁(性能较低)、token+redis(性能好)来实现。
token+redis
在这里插入图片描述

项目中使用了什么分布式任务调度

xxl-job

xxl-job路由策略有哪些?

  1. FIRST(第一个):固定选择第一个机器
  2. LAST(最后一个):固定选择最后一个机器
  3. ROUND(轮询):轮询
  4. RANDOM(随机):随机选择在线的机器
  5. CONSISTENT_HASH(一致性HASH):每一个任务按照Hash算法固定选择某一台机器,且所有任务均匀散列在不同机器上
  6. LEAST_FREQUENTLY_USED(最不经常使用):使用频率最低的机器优先被选举
  7. LEAST_RECENTLY_USED(最经最久未使用):最久未使用的机器优先被选举
  8. FAILOVER(故障转移):按照顺序依次进行心跳检测,第一个心跳检测成功的机器选定为目标执行器并发起调度
  9. BUSYOVER(忙碌转移):按照顺序依次进行空闲检测,第一个空闲检测成功的机器选定为目标执行器并发起调度
  10. SHARDING_BROADCAST(分片广播):广播出发对应集群中所有机器执行一次任务,同时系统自动传递分片参数;可根据分片参数开发分片任务

xxl-job任务执行失败怎么解决?

故障转移+失败重试,查看日志分析====>邮件告警

  • 路由策略选择故障转移,使用健康的实例来执行任务
  • 设置重试次数
  • 查看日志+邮件告警来通知相关负责人解决

如果有大数据量的任务同时都需要执行,怎么解决?

执行器集群部署时,任务路有策略选择分片广播情况下,一次任务调度将会广播触发对应集群中所有执行器执行一次任务
在这里插入图片描述
分片参数

  • index:当前分片序号(从0开始),执行器集群列表中当前执行器的序号
  • total:总数分片,执行器集群的总机器数量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值