SpringCloud微服务~面试题

news2024/11/25 18:31:01

1. SpringCloud常见组件有哪些?

问题说明:这个题目主要考察对SpringCloud的组件基本了解

难易程度:简单

参考话术:

SpringCloud包含的组件很多,有很多功能是重复的。其中最常用组件包括:

  • 注册中心组件:Eureka、Nacos等

  • 负载均衡组件:Ribbon

  • 远程调用组件:OpenFeign

  • 网关组件:Zuul、GateWay

  • 服务保护组件:Hystrix、Sentinel

  • 服务配置管理组件:SpringCloudConfig、Nacos

2. Nacos的服务注册表结构是怎样的?

什么叫做注册表结构啊,我们知道Naocs首先它是一个注册中心,我们所有的微服务在启动时,就会提交自己的信息到Nacos当中,我们Nacos保存当前服务的一些信息。那么保持在哪里呢?就是保存在这个注册表当中,只有把所有的服务信息都保存下来了,将来消费者想要去获取服务时,才能够从这个注册表里得到对应服务的信息、IP端口才能进行访问。那么问题就来了,Nacos它是如何创建这样一个表,那么这个注册表结构是什么样子呢?面试官问这个问题其实就是考查两个东西,第一,就是你对于他的这个服务分级存储的一个模型是否了解,第二呢,就是Nacos的源码

Nacos采用了数据的分级存储模型,最外层是Namespace,用来隔离环境。然后是Group,用来对服务分组。接下来就是服务(Service)了,一个服务包含多个实例,但是可能处于不同机房,因此Service下有多个集群(Cluster),Cluster下是不同的实例(Instance)。

对应到Java代码中,Nacos采用了一个多层的Map来表示。结构为Map<String, Map<String, Service>>,其中最外层Map的key就是namespaceId,值是一个Map。内层Map的key是group拼接serviceName,值是Service对象。Service对象内部又是一个Map,key是集群名称,值是Cluster对象。而Cluster对象内部维护了Instance的集合。

 

3. Nacos如何支撑数十万服务注册压力?

Nacos内部接收到注册的请求时,不会立即写数据,而是将服务注册的任务放入一个阻塞队列就立即响应给客户端。然后利用线程池读取阻塞队列中的任务,异步来完成实例更新,从而提高并发写能力。

4. Nacos如何避免并发读写冲突问题?

Nacos在更新实例列表时,会采用CopyOnWrite技术,首先将旧的实例列表拷贝一份,然后更新拷贝的实例列表,再用更新后的实例列表来覆盖旧的实例列表。

这样在更新的过程中,就不会对读实例列表的请求产生影响,也不会出现脏读问题了。

5. Nacos与Eureka的区别有哪些?

Nacos与Eureka有相同点,也有不同之处,可以从以下几点来描述:

  • 接口方式:Nacos与Eureka都对外暴露了Rest风格的API接口,用来实现服务注册、发现等功能

  • 实例类型:Nacos的实例有永久和临时实例之分;而Eureka只支持临时实例

  • 健康检测:Nacos对临时实例采用心跳模式检测,对永久实例采用主动请求来检测;Eureka只支持心跳模式

  • 服务发现:Nacos支持定时拉取和订阅推送两种模式;Eureka只支持定时拉取模式

6. Sentinel的限流与Gateway的限流有什么差别?

考察对限流算法的掌握情况

限流算法常见的有三种实现:滑动时间窗口、令牌桶算法、漏桶算法。Gateway则采用了基于Redis实现的令牌桶算法。

而Sentinel内部却比较复杂:

  • 默认限流模式是基于滑动时间窗口算法

  • 排队等待的限流模式则基于漏桶算法

  • 而热点参数限流则是基于令牌桶算法

7. Sentinel的线程隔离与Hystix的线程隔离有什么差别?

Hystix默认是基于线程池实现的线程隔离,每一个被隔离的业务都要创建一个独立的线程池,线程过多会带来额外的CPU开销,性能一般,但是隔离性更强。

Sentinel是基于信号量(计数器)实现的线程隔离,不用创建线程池,性能较好,但是隔离性一般。

 

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

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

相关文章

【冲刺金三银四】2023年网络安全工程师面试题合集

以下为信息/网络安全各个方向涉及的面试题&#xff0c;星数越多代表问题出现的几率越大&#xff0c;祝各位都能找到满意的工作~ 【一一帮助网络安全提升点我一一】 ①网络安全学习路线 ②20份渗透测试电子书 ③安全攻防357页笔记 ④50份安全攻防面试指南 ⑤安全红队渗透工具包 …

市场调研计划书如何写?

想要做好一个产品&#xff0c;市场调研是必不可少的一步&#xff0c;也是第一步&#xff0c;那么如何进行市场调研呢&#xff1f;以下是我整理的一份市场调研计划书&#xff0c;希望能够帮助到大家&#xff01;&#xff01;&#xff01; 一、文档版本控制 主要记录文档的版本…

Reverse_SSH:一款基于SSH的反向Shell工具

关于Reverse_SSH Reverse_SSH上一款基于SSH的反向Shell工具&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以使用SSH来实现反向Shell&#xff0c;并同时拥有下列功能&#xff1a; 1、使用原生SSH语句管理和连接反向Shell&#xff1b; 2、动态、本地和远程转发&#…

[python入门㊷] - python存储数据

目录 ❤ json.dump()存储数据 ❤ json.laod()读取数据 ❤ 保存和读取用户生成的数据 ❤ 重构 JSON(JavaScript Object Notation)格式最初是为JavaScript开发的&#xff0c;但随后成了一种常见格式&#xff0c;被包括Python在内的众多语言采用 ❤ json.dump()存储数据…

基本TCP编程

1. 基本概念 TCP (即传输控制协议) 是一种面向连接的传输层协议,它能提供高可靠性通信 (即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)。 2. 通信流程解析 TCP 通信的流程与打电话的过程相似,以下以一对情侣打电话的过程来展示TCP的通信流程: 其中服务端 …

4.4 序列化与反序列化

文章目录1.概述2.特点/应用场景3.涉及到的流对象4.代码实现序列化与反序列化4.1 步骤1&#xff1a;创建学生类Student24.2 步骤2&#xff1a;创建序列化测试类5.测试案例中常见的几种编译错误类型6.为什么反序列化版本号需要与序列化版本号一致&#xff1f;7.自动提示 生成UID …

10 亿月活用户下,快手基于 Dragonfly 的超大规模镜像分发实践

背景 挑战 快手容器云平台旨在为快手不断增长、不断变化和多样化的业务&#xff0c;提供基于容器化部署的超大规模基础设施服务。为了实现这一目标&#xff0c;快手工程师需要解决弹性、稳定性、效率和无服务器架构等挑战&#xff0c;在这些挑战中&#xff0c;镜像分发的稳定…

职场IT老手教你3步教你玩转可视化大屏设计,让领导眼前一亮!

我是制造企业的IT中心的研发人员&#xff0c;平常工作就是配合业务部门出出报表&#xff0c;选型一些商业软件&#xff0c;并在内部负责实施运维。最近领导出去参观了一些数字化转型比较领先的工厂和制造企业&#xff0c;回来就甩给我几张图&#xff0c;问能不能我们也做几个这…

4. sql 语句中常用命令

1. 数据表&#xff1a; 本文中所有命令&#xff0c;测试的数据表结构如下图&#xff1a; 2. 查询语句&#xff1a; 2.1 基础查询&#xff1a;select //查询单个字段&#xff1a; select 字段名 from 表名; //查询多个字段 select 字段名1,字段名2,... from 表名; //查询所…

数据库的安装部署

目录 方法一&#xff1a;仓库安装 一、添加MySQL仓库 二、安装装MySQL 三、启动MySQL服务器 方法二&#xff1a;本地安装 一、使用以下执行清理之前实验MySQL仓库安装的数据库&#xff1a; 二、网上下载mysql的安装包 三、将下载好的文件传入Redhat中的某个路径中 …

CentOS7安装配置OpenVNP连接远端服务器

在项目当中需要访问一个三方接口及数据库&#xff0c;但是需要在CentOS7服务器上先配置OpenVPN&#xff0c;然后才能连接&#xff0c;现将整体配置过程记录如下。 安装 yum -y install epel-release yum -y install openvpn 查看版本 openvpn --version 配置客户端证书 打开…

电脑ip地址查询要怎么做?查询IP地址就看这3种方法

电脑无法运转时&#xff0c;我们需要别人的帮忙的话&#xff0c;那就需要知道自己电脑的IP地址是什么。但是很多人不知道该从电脑哪里找到IP地址。电脑ip地址查询就看下面2种方法&#xff0c;让你轻松就能Get到技巧&#xff01; 操作环境&#xff1a; 演示机型&#xff1a;华为…

【数据库】 数据库的理论基础详解

目录 一&#xff0c; 什么是数据库 二&#xff0c; 数据库管理系统(DBMS) 三&#xff0c;数据库与文件系统的区别 1&#xff0c;对比区别&#xff1a; 2&#xff0c;优缺点总结&#xff1a; 四&#xff0c;数据库的发展史 五&#xff0c;常见数据库 1&#xff0c; 关系型…

vue directive 注册局部指令

注册局部指令 vue directive 在注册局部指令时&#xff0c;是通过在组件 options 选项中设置 directives 属性。如下&#xff1a; directives: {focus: {// 指令的定义inserted: function (el) {el.focus()}} }在模板中的任何元素上都可以使用新的 v-focus property&#xff…

前端登录状态验证Session和Token的区别

&#xff08;1&#xff09;Session客户端发送一个登录请求&#xff0c;服务器验证登录数据无误&#xff0c;会生成一个sessionID&#xff0c;此ID对应的值即登录状态为已登录。服务器有一个key-value映射表&#xff0c;会把这个ID和登录状态存到此表中。服务器返回的响应头的se…

好用的iPhone 数据恢复软件精选

随着 Apple 的 iTunes / iCloud 备份服务的兴起&#xff0c;我们总是假设这些信息在我们需要的时候可以随时访问。然而&#xff0c;事实是&#xff0c;意想不到的“不幸”发生了&#xff0c;比如 iOS 升级失败、忘记密码&#xff0c;或者更严重的情况&#xff0c;如进水或被盗。…

Ansible的脚本------playbook剧本

一、剧本的前置知识点1、主机清单ansible默认的主机清单是/etc/ansible/hosts文件主机清单可以手动设置&#xff0c;也可以通过Dynamic Inventory动态生成一般主机名使用FQDNvi /etc/ansible/hosts [webserver] #使用方括号设置组名 www1.example.org #定…

想要精通算法和SQL的成长之路 - 接雨水

想要精通算法和SQL的成长之路 - 接雨水前言一. 接雨水前言 想要精通算法和SQL的成长之路 - 系列导航 一. 接雨水 原题链接 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 输入&#xff1a;height [0,…

【RabbitMQ】注册成功后的通知操作

目录前提说明代码实现1. 依赖2. 配置类3. 生产方创建测试类&#xff0c;目的&#xff1a;查看是否队列交换机创建成功&#xff0c;且在队列里面是否有一条待消费的信息。4. 消费方最后前提说明 背景条件&#xff1a;主要是自己学完了RabbitMQ后&#xff0c;想自己多去动手实践…

基于SSM的教务管理系统设计与实现

技术&#xff1a;Java、JSP等摘要&#xff1a;伴随着数字化、网络化、信息化发展的社会&#xff0c;越来越多的行业与时俱进融入到了互联网中&#xff0c;而高校作为为了一个更是培养各色人才之地&#xff0c;更是拥有大量的高科技人才&#xff0c;因此也更应该运用科技来完善教…