【微服务】面试 1、概述和服务发现

news2025/1/13 6:11:50

微服务面试题

在这里插入图片描述

课程内容架构

  1. Spring Cloud 部分
    • 服务注册:重点讲解(Nacos)和(Eureka),这是微服务架构中实现服务发现与注册的关键组件,确保服务间能够相互定位与通信。
    • 负载均衡:涵盖 ribbon 的负载均衡策略及自定义负载均衡方法。ribbon 可依据不同规则将请求合理分配到多个服务实例,如轮询、随机等策略,自定义负载均衡则能根据特定业务需求灵活调整分配方式。
    • 熔断和降级:在微服务系统面临高并发或部分服务故障时,熔断机制可及时切断故障服务调用链路,防止故障蔓延;降级策略则通过暂时关闭或简化非关键服务功能,保障核心服务稳定运行,确保系统整体可用性。
    • 监控:介绍 sky working 链路追踪技术,它能够对微服务调用链路进行跟踪记录,帮助开发人员快速定位问题根源,如请求延迟、错误发生位置等,有效提升系统运维与故障排查效率。
  2. 业务相关内容
    • 限流:随着业务快速发展,流量可能超出服务承载能力,需进行限流。主要讲解漏桶算法和令牌桶算法,漏桶算法以固定速率处理请求,令牌桶算法则是按一定速率生成令牌,请求需获取令牌才能被处理,通过这些算法可有效控制进入系统的流量。
    • 分布式事务:先阐述 CAP 和 BASE 理论,CAP 强调强一致性和分区容错性,BASE 则在牺牲一定一致性的基础上保证可用性和分区容错性。接着讲解分布式事务的解决方案,最后介绍主流分布式事务框架 SEATA,其为解决微服务架构下分布式事务问题提供了可靠的实现方式,确保跨多个服务的事务操作数据一致性。
    • 分布式服务接口幂等:在分布式环境中,由于网络波动等原因可能导致同一请求多次发送,幂等方案可保证同一操作多次执行结果与一次执行结果相同,避免重复操作带来的数据不一致等问题。
    • 分布式任务调度:基于插槽 job 讲解如何在分布式系统中合理安排任务执行时间、顺序及资源分配,确保任务高效、准确执行,满足业务定时或触发式任务处理需求。
  3. 消息中间件部分
    • 主要包含 RabbitMQ 和 Kafka。消息中间件在微服务架构中起着重要的异步通信、解耦作用,RabbitMQ 以其丰富的消息路由机制和可靠性保障在企业级应用中广泛使用,Kafka 则擅长处理高吞吐量的实时数据流场景。

在这里插入图片描述

一、Spring Cloud 面试题引入

  • 面试官常问 Spring Cloud 5 大组件相关问题,如“spring cloud 5 大组件有哪些”或“spring cloud 组件有哪些”,旨在考查对 Spring Cloud 的基本认识。
  • 此题为送分送命题,即使经验丰富也需充分准备,若回答不出可能导致面试无法继续。

二、基于架构图分析组件

  • 展示微服务项目简易架构图,微服务按业务划分(如用户、文章等)。
  • 微服务间远程调用需管理服务地址,引出注册中心组件。
  • 远程调用组件在服务集群场景下需结合 ribbon 进行负载均衡。

在这里插入图片描述

三、Spring Cloud 五大组件详解

  • 注册中心:管理微服务地址,是重要基础组件。
  • Feign:实现微服务间通信。
  • ribbon:用于服务集群的负载均衡。
  • hystrix:在远程调用中处理降级和熔断。
  • 网关:作为微服务对外暴露接口的统一入口。
  • 虽 Spring Cloud 组件不止 5 个,但面试时这 5 个必须回答,可结合项目架构图或示例图进行说明。

四、回答面试题及阿里体系组件对比

  • 回答 Spring Cloud 五大组件为注册中心(如 Eureka)、负载均衡(ribbon)、远程调用(Feign)、熔断(Hystrix)、网关(Gateway)。
  • 对比阿里巴巴体系组件:注册中心和配置中心可用 Nacos,负载均衡仍为 ribbon,服务保护是 Sentinel,网关为 Gateway。

在这里插入图片描述


注册中心面试题

一、面试题引入

  • 核心问题:服务注册和发现的含义以及 Spring Cloud 如何实现。此问题用于考察应聘者对微服务中注册中心的理解与运用,常见注册中心有(Eureka)、(Nacos)、Zookeeper(常与 Dubbo 搭配),重点讲解 Eureka 和 Nacos。
  • 回答要点:先说明项目所用注册中心,再分别阐释服务注册与发现机制。

在这里插入图片描述

二、Eureka 注册中心详解

  • 作用阐释:在微服务架构中,如订单服务(Order Service)调用用户服务(User Service)场景下,若用户服务存在集群,注册中心可管理服务地址。服务提供者(如 User Service)启动时将自身信息(服务名、IP、端口等)注册到 Eureka,服务消费者(如 Order Service)从 Eureka 拉取信息,并经负载均衡选择服务器调用。
  • 工作流程:服务提供者启动注册信息,注册中心存储;服务消费者从注册中心拉取信息,通过负载均衡确定调用目标。
  • 健康监控:服务提供者每隔 30 秒向 Eureka 发送心跳报告健康,若 90 秒未收到心跳,Eureka 认定实例宕机并从服务列表删除。
  • 回答面试官问题要点:告知项目采用 Eureka 作为 Spring Cloud 核心组件,解释服务注册是提供者信息注册到 Eureka 保存,服务发现是消费者拉取信息,有集群和消费者时利用负载均衡算法选择调用,同时提及服务监控的心跳机制及宕机处理。

在这里插入图片描述

三、Nacos 与 Eureka 对比

在这里插入图片描述

  • 相同点:均支持服务注册、拉取及以心跳方式进行健康检测。
  • 不同点
    • 实例类型与监测方式:Nacos 有临时实例(默认创建,采用心跳监测健康)和非临时实例(需设置,由 Nacos 主动探测)之分,Eureka 无此概念。
    • 信息变更处理:服务地址变更时,Nacos 注册中心主动推送更新信息,Eureka 仅依靠服务消费者拉取信息。
    • 集群模式与功能扩展:Nacos 集群默认 AP 模式,存在非临时实例时为 CP 模式,且 Nacos 3 支持配置中心,Eureka 仅为注册中心。
  • 回答面试官问题要点:先指出共同点,再详细说明不同点,包括实例类型差异、信息变更处理、集群模式及功能扩展等方面。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2275840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mybatis冲冲冲00(含如何配置模版文件)

官方网站:mybatis – MyBatis 3 | 入门 mybatis安装方式1.下jar包(网址在上),2.Maven(代码也由上可找) 两个核心配置文件 1.核心主配置文件:configuration.xml(文件名自定义),通常设置为mybatis-config.xml 2.SQL映射文件:mapper.xml(文件名自定义),通常设置为:实体类名.xml…

【Rust】引用与借用

目录 思维导图 1. 引用与借用的基本概念 1.1. 引用示例 2. 借用的规则 2.1. 可变借用示例 2.2. 借用的限制 3. 引用的生命周期 思维导图 1. 引用与借用的基本概念 引用的定义:引用是一种指向数据的指针,但与裸指针不同,Rust的引用在编…

django网上商城系统

Django网上商城系统是一种基于Django框架构建的电子商务解决方案,它充分利用了Django框架的强大功能,为开发者提供了一个快速构建在线商店的平台。 一、系统架构与技术栈 Django网上商城系统采用MVC(模型-视图-控制器)架构&…

Node.js - 模块化与包管理工具

1. 前言 模块化是代码组织的方式,而包管理工具是管理模块的工具。在现代项目开发中,模块化和包管理工具几乎是不可分割的一部分,它们一起构成了高效的开发工作流。 包代表了一组特定功能的源码集合,包管理工具可以对包进行下载安…

贪心算法汇总

1.贪心算法 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 如何能看出局部最优是否能推出整体最优 靠自己手动模拟,如果模拟可行,就可以试一试贪心策略,如果不可行,可能需要动态规划。 如何验证可不可以…

leetcode-最长递增子序列

300. 最长递增子序列 - 力扣(LeetCode) 动态规划的题目我真的不想看题解,题解都是直接推出来动态转移方程,我就很纳闷,到底是怎么推出来的呢?什么样的智慧,上来分析问题就是那么的清晰有条理。我…

Qt 5.14.2 学习记录 —— 십일 QLCDNumber、ProgressBar、QCalendarWidget

文章目录 1、QLCDNumber2、ProgressBar3、QCalendarWidget 1、QLCDNumber 写一个倒计时程序。拖一个LCD Number到界面: 定时器用Qt的QTimer类,这个类的对象会产生一个timeout信号,通过start方法来开启定时器,并且参数中设定触发ti…

VDN 微服务架构搭建篇(二)服务注册与配置中心Nacos

VDN 微服务架构搭建篇(二):服务注册与配置中心 Nacos 本文将介绍如何使用 Spring Cloud Alibaba 和 Nacos 搭建服务注册与配置中心,重点讲解如何实现微服务架构中的服务发现、自动注册、配置管理以及动态配置刷新等功能。通过整合…

高等数学学习笔记 ☞ 单调性、凸凹性、极值、最值、曲率

1. 单调性 1. 单调性定义:设函数在区间上有定义,对于区间上任意两点,若: ①:当时,恒有,则称函数在区间上单调递增。 ②:当时,恒有,则称函数在区间上单调递减…

38家医药股回购,9家注销,丽珠集团公告犯低级错误

作者 庄泽 编辑 雨菲 2025年以来至1月10日,申万医药生物板块共有38家公司发布股票回购公告,其中包括介绍公司2024年股票回购情况,以及新发起股票回购事项等。 从回购股票用途来看,38家公司中,有26家回购股票用于股权激…

最近在盘gitlab.0.先review了一下docker

# 正文 本猿所在产品的代码是保存到了一个本地gitlab实例上,实例是别的同事搭建的。最近又又又想了解一下,而且已经盘了一些了,所以写写记录一下。因为这个事儿没太多的进度压力,索性写到哪儿算哪儿,只要是新了解到的…

GitLab本地服务器配置ssh和克隆项目

1. 本地安装好git git链接:https://git-scm.com/downloads/win 无脑点击下一步安装即可,打开Git Bash命令终端如下: 2. 配置本地用户名和邮箱 git config --global user.name "你的名字" git config --global user.email "你的邮箱&quo…

【2024年华为OD机试】 (A卷,100分)- 二元组个数(Java JS PythonC/C++)

一、问题描述 以下是题目描述的 Markdown 格式: 题目描述 给定两个数组 a 和 b,若 a[i] b[j],则称 [i, j] 为一个二元组。求在给定的两个数组中,二元组的个数。 输入描述 第一行输入 m,表示第一个数组的长度。第二…

中学综合素质笔记2

第一章职业理念 第二节学生观 考情提示: 单选题材料分析题 学习要求: 理解、 识记、 一、以人为本的学生观 (一)学生是发展的人——动态变化 学生的身心发展是有规律的(单选) 顺序性、阶段性、不平衡…

Spring AMQP-保证消费者消息的可靠性

为什么要保证消息的可靠性? 当MQ向消费者发送一个消息之后需要得到消费者的状态,因为消息并不一定就真的被消费者给消费了,可能在消费的过程中出现了一些意外,比如 1. 网络问题 2. 消息转换有问题 3. 消费者本身的业务处理有问题 …

AI刷题-数位长度筛选问题、数值生成与运算问题

目录 一、数位长度筛选问题 问题描述 测试样例 解题思路: 问题理解 数据结构选择 算法步骤 关键点 最终代码: 运行结果: 二、数值生成与运算问题 问题描述 测试样例 解题思路: 问题理解 数据结构选择 算法步骤…

算法学习(24)—— BFS解决拓扑排序

关于拓扑排序 ①有向无环图(DAG图) 就跟它的名字一样,有方向但是没有环的图,如下图:我们了解下入度和出度,二者都是针对一个点来说的,就以上图为例入度:表示有多少条边指向一个点&am…

【深度学习入门_基础篇】概率论

开坑本部分主要为基础知识复习,新开坑中,学习记录自用。 学习目标: 随机事件与概率、随机变量及其分布、多维随机变量及其分布、大数定律与中心极限定理。 强烈推荐此视频: 概率论_麻省理工公开课 废话不多说,直接…

Gitlab-Runner配置

原理 Gitlab-Runner是一个非常强大的CI/CD工具。它可以帮助我们自动化执行各种任务,如构建、测试和部署等。Gitlab-Runner和Gitlab通过API通信,接收作业并提交到执行队列,Gitlab-Runner从队列中获取作业,并允许在不同环境下进行作…

多并发发短信处理(头条项目-07)

1 pipeline操作 Redis数据库 Redis 的 C/S 架构: 基于客户端-服务端模型以及请求/响应协议的 TCP服务。客户端向服务端发送⼀个查询请求,并监听Socket返回。通常是以 阻塞模式,等待服务端响应。服务端处理命令,并将结果返回给客…