SpringCloud面试题

SpringCloud常见组件有哪些

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

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

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

服务、分组
在这里插入图片描述
集群、实例
在这里插入图片描述

Nacos如何支撑阿里内部数十万服务注册压力?

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

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

Nacos在更新实例列表时,会采用CopyOnWrite技术,首先将旧的实例列表拷贝一份,然后更新拷贝的实例列表,再用更新后的拷贝的实例列表来覆盖旧的实例列表。
这样在更新的过程中,就不会对读实例列表的请求产生影响,也不会出现脏读问题了(读旧的实例列表)。
以服务service为锁对象,同一个服务service中多个instance实例,只能串行来完成注册。多个服务service之间互不影响。

Nacos与Eureka的区别有哪些?

NacosEureka
接口方式Nacos对外暴露了Rest风格的API接口,用来实现服务注册、发现等功能Eureka都对外暴露了Rest风格的API接口,用来实现服务注册、发现等功能
实例类型Nacos的实例有永久和临时实例之分Eureka只支持临时实例
健康检测Nacos对临时实例采用心跳模式检测,对永久实例采用主动请求来检测Eureka只支持心跳模式
服务发现Nacos支持定时拉取和订阅推送(当服务发生变更时,通过订阅推送主动通知各个实例)两种模式Eureka只支持定时拉取模式(30s)

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

HystixSentinel
Hystix默认是基于线程池实现的线程隔离Sentinel是基于信号量(计数器)实现的线程隔离
每一个被隔离的业务都要创建一个独立的线程池不用创建线程池
支持主动超时,支持异步调用不支持主动超时,不支持异步调用
线程的额外开销比较大,性能一般,但是隔离性更强轻量级,无额外开销,性能较好,但是隔离性一般

在这里插入图片描述

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

限流算法常见的有三种实现:滑动时间窗口、令牌桶算法、漏桶算法。

Gateway则采用了基于Redis实现的令牌桶算法。

Sentinel限流算法

对比项滑动时间窗口令牌桶漏桶
能否保证流量曲线平滑不能,但窗口内区间越小,流量控制越平滑基本能,在请求量持续高于令牌生成速度时,流量平滑。在请求量在令牌生成速率上下波动时,无法保证曲线平滑能,所有请求进入桶内,以恒定速率放行,绝对平滑
能否应对突增流量不能,突增流量,只要高出限流阈值都会被拒绝能,桶内积累的令牌可以应对突增流量能,请求可以增存在桶内
流量控制精准度低,窗口区间越小,精度越高
默认限流模式是基于滑动时间窗口算法

滑动时间窗限流算法解决了固定时间窗限流算法的问题。其没有划分固定的时间窗起点与终点,而是将每一次请求的到来时间点作为统计时间窗的终点,起点则是终点向前推时间窗长度的时间点。这种时间窗称为“滑动时间窗”
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
将每个请求视作"水滴"放入"漏桶"进行存储;
"漏桶"以固定速率向外"漏"出请求来执行,如果"漏桶"空了则停止"漏水”;
如果"漏桶"满了则多余的"水滴"会被直接丢弃。
可以理解成请求在桶内排队等待,可以处理突发请求,请求处理曲线平滑
比如单机阈值=10,也就是100ms放行一个请求

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

在这里插入图片描述

以固定的速率生成令牌,存入令牌桶中,如果令牌桶满了以后,多余令牌丢弃
请求进入后,必须先尝试从桶中获取令牌,获取到令牌后才可以被处理
如果令牌桶中没有令牌,则请求等待或丢弃
在这里插入图片描述

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

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

相关文章

OpenCompass大模型评估

作业链接: Tutorial/opencompass/homework.md at camp2 InternLM/Tutorial GitHub 项目链接: GitHub - open-compass/opencompass: OpenCompass is an LLM evaluation platform, supporting a wide range of models (Llama3, Mistral, InternLM2,GPT-…

Docker快速搭建NAS服务——FileBrowser

Docker快速搭建NAS服务——FileBrowser 文章目录 前言FileBrowser的搭建docker-compose文件编写运行及访问 总结 前言 本文主要讲解如何使用docker在本地快速搭建NAS服务,这里主要写如下两种: FileBrowser1:是一个开源的Web文件管理器&…

【吊打面试官系列】Java高并发篇 - 为什么 wait(), notify()和 notifyAll ()必须在同步方法或者同步块中被调用?

大家好,我是锋哥。今天分享关于 【为什么 wait(), notify()和 notifyAll ()必须在同步方法或者同步块中被调用?】面试题,希望对大家有帮助; 为什么 wait(), notify()和 notifyAll ()必须在同步方法或者同步块中被调用?…

这3种深拷贝实现,你都知道吗?

目录: 1、JSON.parse 2、structuredClone 3、cloneDeep

【竞技宝jjb.lol】MSI:换线战术或将成为BLG命门

北京时间2024年5月10日,英雄联盟2024MSI季中赛继续进行,昨日迎来胜败分组赛首轮BLG对阵PSG。本以为这场比赛没有任何悬念,BLG将会非常轻松地击败PSG,没想到最终PSG两度扳平比分,BLG决胜局抗住压力才艰难取胜。虽然赢下了比赛,但BLG低迷的状态还是在比赛结束后遭到网友们的热议。…

超全MySQL锁机制介绍

前言 MySQL作为关系型数据库管理系统中的佼佼者,为了保证数据的一致性和完整性,在并发控制方面采用了锁机制。锁机制是数据库管理系统用于控制对共享资源的访问,避免多个事务同时修改同一数据造成的数据不一致问题。了解MySQL的锁机制对于数…

【组合博弈】介绍

本文为学习笔记,详细内容参考"Lessons in Play,Michael H. Albert Richard J. Nowakowski David Wolfe" 文章目录 组合博弈介绍(Combinatorial Games)DOMINEERING游戏组合游戏选手介绍Options博弈树(game tree) 组合博弈介绍(Combi…

*****水上飞机:继承,虚函数,虚继承

一题目 请设计以下航行器、飞机、船、水上飞机等 4 个类。 CRAFT 为航行器类,是公共基类,提供航行器的基本特性。包括: 一个保护数据成员:speed(速度)。 三个公有成员函数:构造函数(初始化速度)、析构函数和 Show 函数…

ASP.NET学生成绩管理系统

摘要 本系统依据开发要求主要应用于教育系统,完成对日常的教育工作中学生成绩档案的数字化管理。开发本系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用&#xf…

操作系统实战(三)(linux+C语言实现)

实验目的 加深对进程调度概念的理解,体验进程调度机制的功能,了解Linux系统中进程调度策略的使用方法。 练习进程调度算法的编程和调试技术。 实验说明 1.在linux系统中调度策略分为3种 SCHED_OTHER:默认的分时调度策略,值为0…

通俗的理解网关的概念的用途(四):什么是网关设备?(网络层面)

任何一台Windows XP操作系统之后的个人电脑、Linux操作系统电脑都可以简单的设置,就可以成为一台具备“网关”性质的设备,因为它们都直接内置了其中的实现程序。MacOS有没有就不知道,因为没用过。 简单的理解,就是运行了具备第二…

使用nmcli命令在Linux系统上配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)

前言:原文在我的博客网站中,持续更新数通、系统方面的知识,欢迎来访! 使用nmcli命令在Linux系统上配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)https://myweb.myskillstree.cn/123.html 你是否会…

使用GitLab自带的CI/CD功能在远程服务器部署项目(三)

前置内容: 通过Docker Compose部署GitLab和GitLab Runner(一) 使用GitLab自带的CI/CD功能在本地部署项目(二) 目录 一、在GitLab服务器上生成私钥与公钥 二、将公钥拷贝到应用服务器上 三、将私钥给到Docker Exec…

Windows系统下通过nginx配置多项目

文章目录 前言大概思路实际操作记录:查看nginx 错误日志问下AI注意点: 当访问域名根路径时,重定向到/pc总结 前言 在windows电脑启动一个nginx 测试配置多前端项目,一个pc端(vue3tsvite ,history路由&…

Vue3专栏项目 -- 二、自定义From组件(下)

需求分析: 现在我们还需要一个整体的表单在单击某个按钮的时候可以循环的验证每个input的值,最后我们还需要有一个事件可以得到最后验证的结果,从而进行下一步的操作 如下,我们应该有一个form表单包裹着全部的input表单&#xf…

【C语言】整数和浮点数在内存中的存储

大家可能在学习的时候会经常疑惑数据在内存中是怎样存储的,今天用一篇博客给你讲清楚!!!从此不再疑惑!!! 文章目录 1. 整数在内存中的存储2. 大小端字节序和字节序判断2.1 什么是大小端2.2 为什…

[VulnHub靶机渗透] Hackademic: RTB1

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

day2_greedyIntervalsLRU/LFU

二、贪心算法之区间调度问题 0.计算一个区间集合中无重复的区间的最大数量(模板) public int intervalSchedule(int[][] intvs) {if (intvs.length 0) return 0;// 按 end 升序排序Arrays.sort(intvs, (a, b) -> Integer.compare(a[1], b[1]));// 至少有一个区间不相交in…

Baidu Comate 编程插件:提升开发效率的利器

文章目录 引言简介目的 Baidu Comate插件概述定义与功能市场现状竞品分析 安装与配置VsCode 安装:注意事项 版本选择 核心特性详解功能介绍代码生成实时续写错误纠正 使用体验体验地址 引言 简介 基于文心大模型,结合百度积累多年的编程现场大数据和外…