springcloud3 注册中心以及cloud启动原理总结(含面试)

news2024/11/18 11:39:01

一 Springcloud微服务面试题

1.1 为何使用注册中心

1)问题描述

在多个单体微服务之间,可以直接通过http请求进行通信,但是存在以下问题:

1.调用服务提供者时需要写ip和端口,如果出现ip和端口进行了修改,没有及时告知调用者,那么将无法调用服务提供者。

2.被调用的服务,因为机器迁移,多个被调用的服务修改了ip和端口,被调用者需要手动进行修改维护,成本比较高,维护困难。

2)注册中心的作用

注册中心便解决了这些问题,当服务注册到注册中心,我们只需要知道服务名,便可以从注册中心拉取服务提供者最新的信息。当服务变更的时候,注册中心也会通知到各个客户端。

服务注册:就是服务启动的时候吧自己的一些信息(包括ip、端口)等发送给注册中心,由注册中心统一管理。当每个注册中心客户端启动时,会从注册中心获取所有服务的信息存到客户端本地

服务发现:当注册中心发现有新的服务注册进来的时候,会把新服务的信息群发给所有的服务客户端

健康检查和服务摘除:主动的检查服务健康情况,对于宕机的服务将其摘除服务列表。

3)总结

所有各个微服务需要首先注册到注册中心里面去, 调用者然后从注册中心拿到服务信息,再对具体的微服务发起调用。

注册中心是所有服务的一个统一的管理者。微服务的之间的访问是通过一个注册中心来实现的。

谈一谈我所理解的微服务中的注册中心-WinFrom控件库|.net开源控件库|HZHControls官网

运维高阶必知——微服务注册中心那些事 - 知乎

https://blog.csdn.net/qq_41316955/article/details/127031155

1.2 springcloud的网关为何要注册到注册中心中

Gateway它是间接的起了一个内部微服务的作用,app请求过来是一个具体的微服务的地址连接,网关拿到这个东西以后仍然是要去注册中心去寻址去找到到具体的调用地址,然后再去直接调用下面的微服务。

【微服务】一文读懂为什么需要微服务网关+注册中心_网关和注册中心_Old丶x的博客-CSDN博客

1.3 springcloud如何优雅的进行关闭

1.自定义程序实现:设置预留时间,比如关闭前40s,清除掉nacos需要关闭服务的信息,让请求方刷新到最新的服务列表(最新列表中不包含删除的服务信息),防止请求方再次请求到要删除的服务。

2.使用springboot 版本大于2.3 自带的优雅停机方案。在配置文件中配置server.shutdown=graceful,在web容器关闭时,web 服务器在设定的时间缓冲其内将不再接收新请求。使用 timeout-per-shutdown-phase配置最长等待时间,超过该时间后关闭。

3.使用插件ShutdownHook进行优雅关闭

Spring Cloud 框架优雅关机和重启 - 简书

1.4 @autoconfiguration注解是怎么自动配置的

1)springbootapplication的作用:Springboot最重要的功能是:自动配置。

Spring Boot 的开启注解是:@SpringBootapplication,其实它就是由下面三个注解组成的:@Configuration,@componentscan,@EnableAutoConfiguration这3个注解。

2)@autoconfiguration注解作用

其中最核心的就是这个@EnableAutoConfiguration注解,@EnableAutoConfiguration注解是Spring Boot自动配置机制的入口点,它会启用Spring Boot的自动配置机制,并根据当前应用程序所依赖的jar包和类路径上的资源,自动装配各种组件和配置。

该注解通过@Import注解导入了EnableAutoConfigurationImportSelector类,这个类是自动配置机制的核心实现,负责加载META-INF/spring.factories文件中的自动配置类,并将它们注入Spring容器中。

springboot 自动配置原理

截图如下:

3)总结

@EnableAutoConfiguration 代表开启 SpringBoot的自动装配。

总的来说,Spring Boot自动配置机制的核心就是基于条件注解和类路径扫描机制在应用程序启动时自动装配各种组件和配置。通过Starter包的定义,Spring Boot可以实现对各种功能模块的自动配置,大大简化了应用程序的开发和部署。

https://blog.csdn.net/yyxiaozhang/article/details/119903577

https://www.zhihu.com/tardis/bd/art/621911639?source_id=1001

https://www.bilibili.com/read/cv11916999/

1.5 @enablexxx注解的理解

@EnableXX内部工作原理就是 @Import导入一个或多个配置@EnableXX的工作原理实际上就是通过@Import导入指定的配置文件或bean装配到spring容器

https://blog.csdn.net/ye17186/article/details/88052910

SpringBoot入门(6)- @EnableXXX 注解的工作原理_上官天夜的博客-CSDN博客

【SpringBoot】SpringBoot自定义@EnableXX_程序员小菜鸡QAQ的博客-CSDN博客

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

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

相关文章

SAP_ABAP_接口技术_RFC远程函数实践总结

SAP ABAP顾问能力模型梳理_企业数字化建设者的博客-CSDN博客SAP Abap顾问能力模型,ALV/REPORT|SMARTFROM|SCREEN|OLE|BAPI|BDC|PI|IDOC|RFC|API|WEBSERVICE|Enhancement|UserExits|Badi|Debughttps://blog.csdn.net/java_zhong1990/article/details/132469977 SAP接…

[C/C++]天天酷跑超详细教程-中篇

个人主页:北海 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏✨收录专栏:C/C🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!&#x1f9…

stable diffusion实践操作-hypernetworks

本文专门开一节写hypernetworks的内容,在看之前,可以同步关注: stable diffusion实践操作 一、hypernetworks是什么? 中文名字叫超网络,功能和embedding,lora类似,都是对生成的图片进行针对性…

Spring Cloud--从零开始搭建微服务基础环境【二】

😀前言 本篇博文是关于Spring Cloud–从零开始搭建微服务基础环境【二】,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,…

02-Flask-对象初始化参数

对象初始化参数 前言对象初始化参数import_namestatic_url_pathstatic_foldertemplate_floder 前言 本篇来学习Flask中对象初始化参数 对象初始化参数 import_name Flask程序所在的包(模块),传__name__就可以 _name_ 是一个标识 Python 模块的名字的变量&#x…

随记-多租户数据隔离

数据隔离 DataBase 隔离 ( 独立数据库 )Schema 隔离 ( 共享数据库,但隔离数据架构 )Table 隔离 ( 共享数据库,共享数据架构 ) DB 隔离 即一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本较高 …

软件外包开发人员分类

在软件开发中,通常会分为前端开发和后端开发,下面和大家分享软件开发中的前端开发和后端开发分类和各自的职责,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 前端开发&…

通俗易懂的子网划分(第八课)

博主换个思维方式来讲述自己学习的内容>学习这个技术的背景是啥?为什么要学习这个技术?如何去学习好这项技术?如何讲好自己学习这项技术。 一 思考下面问题带着问题找答案? 1 思考一下为什么要子网划分? 2 如何去子网划分&a…

c++11 标准模板(STL)(std::basic_stringstream)(三)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_stringstream;(C11 前)template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::alloc…

解决Linux Ubuntu上安装RabbitMQ服务后的公网远程访问问题,借助cpolar内网穿透技术

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

使用Windbg动态调试排查软件启动不了的问题

目录 1、问题说明 2、初步分析 3、使用Windbg启动程序进行动态调试 4、进一步分析 5、何时使用Windbg静态分析&#xff1f;何时使用Windbg进行动态调试&#xff1f; 6、最后 VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&…

Java_理解方法调用

理解方法调用 首先什么是隐式参数 --->隐式参数是调用该方法的对象本身。 接下来方法的名称和参数列表被称为方法的签名&#xff08;signature&#xff09;。在Java中&#xff0c;方法的签名由方法的名称和参数列表组成&#xff0c;用于唯一标识一个方法。返回类型不是签名的…

windows 10通过IP连接hp打印机192.168.8.115

一直点下一步。完成后要等一会儿才出现在列表里。

Win7下设置“定时关机”的方法

【Win7下设置定时关机的方法】 ●【所有程序】→【附件】→【系统工具】→【任务计划程序】 ● 右键单击&#xff0c;选择【创建基本任务】&#xff0c;然后在【任务名称】中填自定义名称&#xff0c;如“定时关机” ● 之后&#xff0c;按照下面各图的提示进行“任务触发器”…

MySQL left join 和 left outer join 区别

先说结论: left join 和 left outer join 的结果是一致的。 我不知道各位大神是怎么测试的&#xff0c;网上面就说两个不一样&#xff0c;我A、B表都是有重复数据的&#xff0c;为啥结果是一样的。 表A 表B 左连接 SELECT ta.*,tb.Result ResultB FROM TableA ta LEFT JOIN…

Linux常用命令——cupsenable命令

在线Linux命令查询工具 cupsenable 启动指定的打印机 补充说明 cupsenable命令用于启动指定的打印机。 语法 cupsenable(选项)(参数)选项 -E&#xff1a;当连接到服务器时强制使用加密&#xff1b; -U&#xff1a;指定连接服务器时使用的用户名&#xff1b; -u&#xff…

pip安装第三方库与设置

pip的使用 假如下载numpy pip install numpypypi 镜像源「配置」 常用镜像源列表 官方&#xff1a;https://pypi.org/simple 百度&#xff1a;https://mirror.baidu.com/pypi/simple/ 清华&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple 阿里&#xff1a;https://m…

JVM介绍

一、介绍 1. JVM是什么 JVM是Java Virtual Machine的缩写&#xff0c;即咱们经常提到的Java虚拟机。虚拟机是一种抽象化的计算机&#xff0c;有着自己完善的硬件架构&#xff0c;如处理器、堆栈等&#xff0c;具体有什么咱们不做了解。目前我们只需要知道想要运行Java文件&…

sqlibs安装及复现

sqlibs安装 安装phpstudy后&#xff0c;到github上获取sqlibs源码 sqli-labs项目地址—Github获取&#xff1a;GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based. 在phpstudy本地文件中的Apache目录中解压上方下载的源码。 将sq…

沃尔玛,eBay买家号成号率低如何解决?

eBay是一个很庞大的系统&#xff0c;买家号必须在本土环境才会安全。要想养出高权重的买家号&#xff0c;需要花大量的时间跟精力&#xff0c;一旦养出一批高质量且时间周期较长的买家号&#xff0c;就可以做很多事情&#xff0c;比如可以帮产品上排名&#xff0c;提高产品的权…