微服务面试题

五大组件

注册中心/配置中心

nacos

服务注册 服务启动时 将自己的id等信息发送给nacos 完成注册

服务发现 服务需要调用其他服务时 从nacos获取服务列表 交给负载均衡选择

服务监控

  1. 临时实例 由服务每隔一段时间注册中心发送信息 表示自己存活 若注册中心超过一定时间没有接收到信息 则默认服务已死亡 直接从列表中剔除

  2. 非临时实例 由注册中心每隔一段时间向服务发送信息 询问是否存活 若未收到信息 则剔除

  3. 当注册中心服务变更时 nacos会主动推送新服务列表信息给其他服务

负载均衡

loadbalance/ribbon

当同一个服务有多个实例可使用时 由负载均衡根据策略选择使用哪个服务

策略

轮询 随机询问 询问最小连接数 询问最长无连接时间数 按优先级询问

网关

gateway

限流 采用令牌桶算法 即预先准备好一批令牌存入桶中 令牌生成效率固定 当桶满时 停止生成令牌 当流量通过时 需要获取一个令牌 才会被放行 当大量请求发送时 桶中令牌会被获取 被获取的同时 新的令牌也正在生成 每生成一批令牌就可以使一些流量被放行 其他没有获得令牌的 请求被丢弃或者阻塞

也可以采用nginx的限流方法 nginx采用的是漏桶算法 即将请求存入桶中 一段时间放行一批请求 当桶满时 其他请求阻塞

熔断

sentinel

熔断方法 内部有一个开关 正常情况为开 当通过的请求失败次数达到预设值时 开关关闭 等待一段时间后 开关半开 尝试发送一个请求 看是否正常执行 若正常执行 则开关开放 若失败 则继续关闭 继续等待一段时间

远程调用

openfeign

用于微服务之间相互调用 可以设置兜底回调 当请求发送失败或者超时时 默认执行兜底回调的方法 返回默认数据

分布式事务
seata

seata分为TC TM RM三个部分 RM管理事务资源 TM管理全局事务 负责开启提交回滚事务 TC负责维护各个服务中的事务状态 协助TM

模式

XA

RM注册各分支事务 此时若分支执行成功 暂不提交 将事务状态提交给TC 当TC收到所有事务的成功状态时 通知所有RM提交事务 若出现一个失败分支 则通知所有RM回滚事务

AT

RM注册各分支事务 提交事务后 记录数据库更新前后快照 将执行结果发给TC 若所有事务均成功完成 TC通知RM将快照删除 若出现失败 则通知RM根据快照回滚

TCC

xxljob

路由策略

轮询

故障转移依次询问所有实例 获取健康心跳 使用第一个获取到的健康实例

分片广播 当大量事件需要执行时 xxljob集群通过取模等方式 将事件分配给不同单机去执行

相关推荐
面试官E先生8 分钟前
【极兔快递Java社招】一面复盘|数据库+线程池+AQS+中间件面面俱到
java·面试
琢磨先生David12 分钟前
构建优雅对象的艺术:Java 建造者模式的架构解析与工程实践
java·设计模式·建造者模式
小雅痞27 分钟前
[Java][Leetcode simple]26. 删除有序数组中的重复项
java·leetcode
青云交35 分钟前
Java 大视界 -- 基于 Java 的大数据分布式存储在工业互联网海量设备数据长期存储中的应用优化(248)
java·大数据·工业互联网·分布式存储·冷热数据管理·hbase 优化·kudu 应用
纸包鱼最好吃44 分钟前
java基础-package关键字、MVC、import关键字
java·开发语言·mvc
唐山柳林1 小时前
城市生命线综合管控系统解决方案-守护城市生命线安全
java·安全·servlet
PgSheep1 小时前
Spring Cloud Gateway 聚合 Swagger 文档:一站式API管理解决方案
java·开发语言
蒂法就是我2 小时前
详细说说Spring的IOC机制
java·后端·spring
程序员拂雨2 小时前
Java知识框架
java·开发语言
秋野酱2 小时前
基于javaweb的SpringBoot高校图书馆座位预约系统设计与实现(源码+文档+部署讲解)
java·spring boot·后端