56.微服务面试篇

目录

一、SpringCloud常见组件有哪些?

二、Nacos源码分析和Sentinel源码分析。

三、Nacos的服务注册表结构是怎样的?

四、Nacos如何支撑数十万服务注册压力?

五、Nacos如何避免并发读写冲突问题?

六、Nacos与Eureka的区别有哪些?

七、Sentinel的限流与Gateway的限流有什么差别?

八、Sentinel的线程隔离与Hystix的线程隔离有什么差别?

(1)常见的三种限流算法。

(2)固定窗口计数器算法。

(3)滑动窗口计数器算法。

(4)令牌桶算法。

(5)漏桶算法。

(6) 限流算法对比。

(7)Sentinel在实现漏桶时,采用了排队等待模式。

(8)Sentinel的限流与Gateway的限流有什么差别?


一、SpringCloud常见组件有哪些?

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

难易程度:简单

参考话术

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

注册中心组件: Eureka Nacos
负载均衡组件: Ribbon
远程调用组件: OpenFeign
网关组件: Zuul Gateway
服务保护组件: Hystrix Sentinel
服务配置管理组件: SpringCloudConfig Nacos

二、Nacos源码分析和Sentinel源码分析。

1.下载Nacos源码并运行。
2.服务注册。

3.服务心跳。

4.服务发现。

sentinel源码分析                 

三、Nacos的服务注册表结构是怎样的?

nacos的分级存储模型:命名空间 ->分组->服务->集群->实例(IP+端口)

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

问题说明考察对Nacos数据分级结构的了解,以及Nacos源码的掌握情况

难易程度:一般

参考话术

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

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

四、Nacos如何支撑数十万服务注册压力?

下面的onChange方法是service类的方法,即服务对象自己更新服务列表。

下面的方法在cluster类。

五、Nacos如何避免并发读写冲突问题?

并发读写:当一个客户端正在读取某个配置或服务信息的同时,另一个客户端对该数据进行了修改,那么读取的结果就可能是不一致的。

nacos的集群封装的实例是对象:Set<Instance>,比如修改了实例对象的数据的时候,还没改完,但是有客户端对其进行读,那么就会出现中间状态,出现脏读。

六、NacosEureka的区别有哪些?

nacos临时实例:客户端发送心跳检测。

nacos永久实例:主动请求检测模式。(服务端请求客户端)

七、Sentinel的限流与Gateway的限流有什么差别?

八、Sentinel的线程隔离与Hystix的线程隔离有什么差别?

(1)常见的三种限流算法。

(2)固定窗口计数器算法。

题目:假如一个窗口时间跨度为1秒钟,服务器一秒内最多处理3个请求,那么在0.5秒到1秒期间有3个请求,1秒到1.5秒期间有3个请求。这种算法有什么缺陷?

答案:第1秒内没有超过3个请求,第2秒内也没有超过3个请求,但是0.5到1.5这一秒内有6个请求,已经超出了服务器的请求数量。这就是固定窗口计数器算法的缺陷。

(3)滑动窗口计数器算法。

下面的图中请求分别在200ms、400ms、900ms、1250ms、1300ms、1400ms、1600ms、2100ms时间点过来。

窗口范围公式:当前请求的时间点 - 窗口时间跨度 = 结果,窗口范围是结果所在的窗口的下一个窗口到当前请求的所在窗口这段范围。

假如最新请求是1250ms请求,1250ms - 1000ms = 250ms,即250ms在第一个窗口,它的下一个窗口就是从500ms算起,此时的请求数量是2个。

假如最新请求是1300ms请求,1300ms - 1000ms = 300ms,即300ms在第一个窗口,它的下一个窗口就是从500ms算起,此时的请求数量是3个。

假如最新请求是1400ms请求,1400ms - 1000ms = 400ms,即400ms在第一个窗口,它的下一个窗口就是从500ms算起,此时的请求数量是4个,所以1400ms请求被拒绝。

假如最新请求是1600ms请求,1600ms - 1000ms = 600ms,即600ms在第二个窗口,它的下一个窗口就是从1000ms算起,此时的请求数量是3个。

假如最新请求是2100ms请求,2100ms - 1000ms = 1100ms,即1100ms在第三个窗口,它的下一个窗口就是从1500ms算起,此时的请求数量是2个。

问题:1250ms、1300ms、1600ms、2100ms这四个请求的时间最大时间差是850ms(2100-1250),此时一秒内有四个请求,已经超过了三个请求,这时又出现了固定窗口算法的问题。(小区间时间跨度越好越准确即窗口跨度越小越准确)

(4)令牌桶算法。

实现令牌桶算法的基本步骤如下:

  1. 定义一个桶,用于存放令牌。桶中有一个最大容量(maxTokens)和当前的令牌数量(currentTokens)。
  2. 以固定速率往桶中添加令牌,直到桶满为止。这个速率可以通过计算得出,保证在单位时间内往桶中添加一定数量的令牌。
  3. 当需要传输数据时,先检查桶中是否有足够的令牌。如果有足够的令牌,则取出相应数量的令牌进行传输;如果没有足够的令牌,则根据具体策略进行处理(如等待或丢弃数据包)。

(5)漏桶算法。

(6) 限流算法对比。

(7)Sentinel在实现漏桶时,采用了排队等待模式。

(8)Sentinel的限流与Gateway的限流有什么差别?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

locust 压测 websocket

* 安装 python 3.8 https://www.python.org/ py --version * 安装 locust pip install locust2.5.1 -i http://pypi.douban.com/simple/ pip install locust2.5.1 -i https://pypi.mirrors.ustc.edu.cn/simple/ locust -V 备注&#xff1a;-i 是切换下载源 * 安装依赖 pip ins…

ElasticSearch - networking配置global

版本8.11 单机部署了一个节点 在elasticsearch.yml中 配置了network.host: 8.8.8.8(之前为127.0.0.1) 但启动服务失败 报错信息为: BindTransportException: Failed to bind to 8.8.8.8:[9300-9399] 为啥要配置8.8.8.8 是因为参考的官方说明 Networking | Elasticsearch Gu…

Docker知识点整理

Docker和虚拟机技术的区别&#xff1a; 传统的虚拟机&#xff0c;可以虚拟出一条硬件&#xff0c;运行一个完整的操作系统&#xff0c;在这个操作系统上安装和运行所需的软件 容器内的应用可以直接运行在宿主 主机的内核中&#xff0c;容器没有自己的内核&#xff0c;也不用虚…

云上丝绸之路| 云轴科技ZStack成功实践精选(西北)

古有“丝绸之路” 今有丝绸之路经济带 丝路焕发新生&#xff0c;数智助力经济 云轴科技ZStack用“云”护航千行百业 沿丝绸之路&#xff0c;领略西北数字化。 古丝绸之路起点-陕西 集历史与现代交融&#xff0c;不仅拥有悠久的历史文化积淀&#xff0c;而且现代化、数字化发…

卡片C语言(2021年蓝桥杯B)

分析&#xff1a;我们用一个数组来记录卡牌&#xff0c;我们每使用一张卡牌&#xff0c;就减一张&#xff0c;当卡牌数为-1的时候&#xff0c;说明不够用了&#xff0c;此时我们就打印上一个组合的数字。 #include <stdio.h> int main(){int num[10],i,m,n,j;for(i0;i&l…

AIGC重塑教育:AI大模型驱动的教育变革与实践

目录 引言 AI与教育工作者 ​教育资源不平衡 引言 AI正迅猛地改变着我们的生活。 根据高盛发布的一份报告&#xff0c;AI有可能取代3亿个全职工作岗位&#xff0c;影响全球18%的工作岗位。在欧美&#xff0c;或许四分之一的工作可以用AI完成。另一份Statista的报告预测&…

Nginx 服务器安装及配置文件详解

1. 安装nginx 1.1 选择稳定版本 我们编译安装nginx来定制自己的模块&#xff0c;机器CentOS 6.2 x86_64。首先安装缺少的依赖包&#xff1a; # yum -y install gcc gcc-c make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel 这些软件包如果yum上没有的话…

springoot集成kafka

1.常见两种模式 2.高可用 和 负载均衡 组内:消费者 一个只能消费一个分区 组外:消费者消费是订阅者模式

【Https】工作流程

HTTPS 也是⼀个应用层协议。是在 HTTP 协议的基础上引入了⼀个加密层。 前言 由于Http是明文传输&#xff0c;因此如果有人想修改/截获数据都是非常容易&#xff0c;因此就出现了运营商劫持问题。 加密基础知识 明文密钥>密文 加密 密文密钥>明文 解密 对称加密和非对…

ssm基于HTML5的OA办公系统论文

基于HTML5的OA办公系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;作为一个一般的企业都开始注重与自己的信息展示平台&#xff0c;实现基于HTML5的OA办公系统在技术上已成熟。本文介绍了基于HTML5的OA办公系统的开发全过程。通过分析企业对于博客网站的需…

【Proteus仿真】【51单片机】视力保护仪

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使LCD1602液晶&#xff0c;按键、HC-SR04超声波、PCF8591 ADC、光敏传感器、蜂鸣器、LED等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示…

Linux基本操作

常用快捷键 按键 作用 Ctrld 键盘输入结束或退出终端 Ctrls 暂停当前程序&#xff0c;暂停后按下任意键恢复运行 Ctrlz 将当前程序放到后台运行&#xff0c;恢复到前台为命令fg Ctrla 将光标移至输入行头&#xff0c;相当于Home键 Ctrle 将光标移至输入行末&#xf…

LeetCode Hot100 146.LRU缓存

题目&#xff1a; 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&…

编译Sqlite3记录

下载源文件&#xff1a; 下载地址&#xff1a;SQLite Download Page 打开QtCreator创建新的工程&#xff0c;选择纯C工程&#xff0c;将main.c删除&#xff0c;将下载的源码解压后的文件复制到并添加到工程中&#xff0c;其中的文件包括&#xff1a;sqlite3ext.h、sqlite3.h、…

威睿三合一电驱动系统斩获“2023汽车新供应链百强-金辑奖”

10月19日&#xff0c;2023第五届“金辑奖”颁奖盛典在上海圆满落幕。威睿公司“高效低噪碳化硅电驱动系统”在动力总成电气化领域脱颖而出&#xff0c;荣获“2023中国汽车新供应链百强”荣誉称号。 “金辑奖”由盖世发起&#xff0c;旨在“发现好公司推广好技术成就汽车人”&a…

iPhone 16 的电池供应可能来自印度

据英国《金融时报》报道&#xff0c;据报道&#xff0c;苹果已通知其供应链&#xff0c;包括中国德赛公司和台湾新普科技等电池供应商&#xff0c;其倾向于将 iPhone 16 的电池供应转移到印度。苹果鼓励供应商将现有产能迁往印度&#xff0c;以扩大该地区的生产规模。 鉴于电池…

ShenYu网关注册中心之Zookeeper注册原理

文章目录 1、客户端注册流程1.1、读取配置1.1.1、用于注册的 ZookeeperClientRegisterRepository1.1.2、用于扫描构建 元数据 和 URI 的 SpringMvcClientEventListener 1.2、扫描注解&#xff0c;注册元数据和URI1.2.1、构建URI并写入Disruptor1.2.2、构建元数据并写入Disrupto…

防火墙在网络安全中的作用有什么?部署模式有什么?

防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备&#xff0c;帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障&#xff0c;以保护用户资料与信息安全性的一种技术。 防火墙在网络安全中的作用主要有以下几个方面&#xff1a; 1.保护网络安全——…

设计模式——适配器模式(结构型)

引言 适配器模式是一种结构型设计模式&#xff0c; 它能使接口不兼容的对象能够相互合作。 问题 假如你正在开发一款股票市场监测程序&#xff0c; 它会从不同来源下载 XML 格式的股票数据&#xff0c; 然后向用户呈现出美观的图表。 在开发过程中&#xff0c; 你决定在程序…

Process On在线绘制流程图

目录 一.ProcessOn 1.1.介绍 1.2.直接网上使用 二.绘制门诊流程图 三.绘制住院流程图 四.绘制药库采购入库流程图 五.绘制OA会议流程图 今天就到这里了哦!!!希望能帮到你哦&#xff01;&#xff01;&#xff01; 一.ProcessOn 1.1.介绍 ProcessOn&#xff08;流程&#…