SpringCloud框架的复习(面试)

SpringCloud的概念:       

        SpringCloud,我们都知道它是微服务的一个框架, 但它又不仅仅是一个框架 , 它更像是在springboot基础上的一份工具包的集合, 是为了方便开发者更方便的开发 , 旨在让开发者更容易地构建分布式系统服务,尤其是微服务架构的应用。它提供了许多开箱即用的特性,如服务发现、配置管理、智能路由、断路器、负载均衡、微代理、控制总线、一次性令牌、全局锁、领导选举、分布 式会话、集群状态等。

        我们来看看springcloud光放是如何形容的::

Spring Cloud 为开发人员提供了一些工具,可以快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、短期微服务和合约测试)。分布式系统的协调导致了样板模式,使用 Spring Cloud 开发人员可以快速建立实现这些模式的服务和应用程序。它们可以在任何分布式环境中很好地工作,包括开发人员自己的笔记本电脑、裸机数据中心和托管平台,如 Cloud Foundry。

他包含了那些功能呢?

Spring Cloud 专注于为典型用例提供良好的开箱即用体验,并为其他用例提供扩展性机制。

  • 分布式/版本控制配置

  • 服务注册和发现

Eureka:Spring Cloud Netflix项目的一部分,用于服务的自动注册与发现。

Consul:由HashiCorp开发,除了服务发现外,还支持健康检查和KV存储。

  • 路由

  • 服务到服务呼叫

  • 负载均衡

    • Ribbon:客户端负载均衡器,通常与Feign或RestTemplate一起使用。
      • LoadBalancerClient:Spring Cloud Load Balancer提供的负载均衡抽象。
  • 断路器和容错

    • Hystrix:Spring Cloud Netflix项目的一部分,提供断路器模式,防止雪崩效应。

      • Resilience4j:轻量级的故障恢复库,提供断路器、重试、缓存、批量执行等功能。
  • 分布式消息传递

  • 短期微服务(任务)

  • 消费者驱动和生产者驱动的合同测试

以上更多还是springcloud光放已经集成了的 , 但国内目前还是使用springcloud Allibaba使用的更多,Alibaba还包含nacos这个服务发现和注册中心

SpringCloud的生命周期:

因为,springcloud是在springboot的基础上的 , 所以springcloud的生命周期中自然包含了很多springboot的步骤 :

Spring Cloud 项目启动时的生命周期:

  1. Classpath扫描: 当应用启动时,Spring Boot首先会扫描classpath下的所有类,寻找带有@SpringBootApplication注解的主配置类。这个注解包含@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan,它们分别用于定义配置类、启用自动配置和组件扫描。 (先扫描配置了的组件, 即 看重要的几个配置的注解 ,此步骤重要的是 扫描 , 而非加载配置)

  2. ApplicationContext创建: Spring Boot创建一个ApplicationContext(通常是AnnotationConfigApplicationContext),然后加载配置类和自动配置类。自动配置类基于类路径上的可用jar包来决定哪些配置应该被激活。  ApplicationContext是spring IoC容器的高级版, 它包含了Bean的管理 AnnotationConfigApplicationContext 则是 ApplicationContext的一个实现, 它有 注解驱动的配置 , 自动配置

  3. Bean定义加载: 根据@ComponentScan扫描的范围,所有的@Component@Repository@Service@Controller注解的类会被注册为bean定义。

  4. Bean实例化与依赖注入: Spring容器开始实例化这些bean,并通过依赖注入填充bean之间的依赖关系。

  5. Spring Cloud组件初始化: Spring Cloud的自动配置会在此阶段初始化,例如:

    • 服务注册:如果项目配置了Eureka、Consul,Nacos等服务发现组件,那么服务会在启动时向服务注册中心注册自身。
    • 配置中心:如果使用Spring Cloud Config Server,应用会尝试从配置中心拉取配置信息。
    • 断路器和容错组件:如Hystrix或Resilience4j,会初始化并准备提供服务。
    • API网关:如Zuul或Spring Cloud Gateway,会初始化路由和过滤器规则。
  6. 初始化事件监听器: 应用上下文的初始化事件被触发,允许监听器执行必要的操作。

  7. ApplicationRunner和CommandLineRunner: 如果应用中有实现ApplicationRunnerCommandLineRunner接口的bean,它们将在应用上下文初始化完成后执行。

  8. 启动完成: 应用启动完成,Spring Boot会输出启动日志,显示应用运行的端口和其他信息。

前段调用接口时的生命周期:

  • HTTP请求到达: 当前端发起HTTP请求时,请求首先到达Spring Boot的内嵌Web服务器(如Tomcat、Jetty或Undertow)。

  • DispatcherServlet处理: 请求被传递给DispatcherServlet,这是Spring MVC的核心组件,它负责解析请求URL并找到对应的Handler。

  • HandlerMapping查找HandlerDispatcherServlet使用HandlerMapping策略来查找处理请求的Handler,即Controller方法。

  • HandlerAdapter执行Handler: 找到Handler后,DispatcherServlet使用HandlerAdapter来执行Handler方法,即Controller中的方法。

  • 参数解析: 在执行Controller方法前,HandlerAdapter会解析请求中的参数,并将它们绑定到Controller方法的参数上。

  • 执行Controller方法: Controller方法执行,这可能涉及到调用Service层的业务逻辑。调用service层代码是springmvc方面的知识了 ,这里就不多介绍了

  • 返回ModelAndView或直接返回响应体: Controller方法返回ModelAndView对象或直接返回响应体内容。

  • 视图渲染: 如果返回的是ModelAndViewDispatcherServlet会使用视图解析器(ViewResolver)来渲染视图,并将Model数据填充到视图中。

  • 响应生成: 最终的响应被构建并发送回前端,这可以是HTML页面、JSON数据或其他格式

其实这部分还差一个步骤 , 即去项目中进行一个调试,但我现在嫌麻烦 , 还没搞 , 因为一条是就必然是僵尸100多条项目,挑个半天都不一定调试的完

除了Spring Cloud 框架还有其他的一些的框架:

例如:

  • Dubbo:阿里巴巴开源的RPC框架,专注于高性能和高可用的微服务通信。Dubbo提供了服务注册、服务发现、负载均衡、服务调用、服务降级、服务限流、动态配置等核心功能。

  • Zookeeper:不是一个完整的微服务框架,而是一个协调服务,主要用于分布式系统的协调工作,比如维护集群成员信息、配置同步、命名服务等。在微服务架构中,Zookeeper常被用来作为服务注册和发现的底层实现。

除了前面已经聊到的中间键外 , 还有其他的一些没有聊到 , 例如:

1 Feign:声明式HTTP客户端,简化HTTP请求

2 ,Spring Cloud Sleuth:用于追踪分布式系统的请求 \

3 , Sentinel 是Alibaba开源的用于保护微服务架构的流量控制组件 , 主要用于提升分布式服务网集群的稳定性, 他提供有丰富的流量控制手段 , 包括限流 ,熔断 ,降级 ,热点防护等 , 咦帮助系统在高并发和高负载下依然保持稳定运行

4 .MQ (消息队列)

消息队列是一种应用程序间通信的方法,它允许进程之间异步传递消息,从而解耦合生产者和消费者。MQ的主要优点包括:

  • 解耦:生产者和消费者无需直接交互,也不必同时在线。
  • 可靠性:即使消费者暂时不可用,消息也会被持久化存储直到成功处理。
  • 缓冲:在高负载时,消息队列可以作为缓冲区,避免直接压垮后端服务。
  • 扩展性:可以轻松增加消费者来处理更多消息,提高系统吞吐量。

常见的MQ有RabbitMQ、Apache Kafka、Amazon SQS等。

5 OAuth

OAuth是一种开放标准,用于授权应用程序访问用户在另一个服务提供商处的数据,而无需共享用户的凭据。OAuth主要应用于:

  • 授权:允许第三方应用在用户授权后访问其在其他服务上的数据。
  • 访问令牌:使用访问令牌代替密码,提高安全性。
  • 细粒度权限:可以授予不同级别的访问权限,例如只读或读写。

OAuth广泛用于社交登录、API访问控制等场景。

6 线程池

线程池是一种管理线程的机制,它可以重用已存在的线程来执行新任务,而不是每次都需要创建新的线程。线程池的主要优势包括:

  • 减少开销:避免了频繁创建和销毁线程的开销。
  • 控制资源消耗:限制最大线程数量,防止资源过度消耗。
  • 提高响应时间:线程复用可以更快地响应新任务。

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

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

相关文章

单例集合:Collection

一.Collection Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。 一.add添加 1.细节1 如果我们要往List系列集合中添加数据,那么方法永远返回true,因为List系列的是允许元素重复的。 2.细节2 如果要往Set系列集合中添加数据,如果当前要添加元素不…

语义分割的数据集各式

比较经典的2种 1. PASCAL VOC格式 VOCdevkit/ └── VOC2012/├── Annotations/│ ├── 2007_000032.xml│ ├── 2007_000033.xml│ ├── ...├── ImageSets/│ └── Segmentation/│ ├── train.txt│ ├── val.txt│ ├── tr…

镜头跟随实例

1、原理 (1) 使球与摄像机保持固定的角度和距离 (2) LateUpdate用于处理相机的跟随 2、方法 (1) 给Main Camera添加CamraCtrller.cs组件 public Transform Player;//小球的Transformprivate Vector3 offset;//小球与摄像机位置的偏移(在三轴上的距离&#xff09…

CSRF令牌解析:保护web应用免受攻击

背景介绍 跨站请求伪造(CSRF)是一种广泛存在的网站攻击手段。与另一常见的攻击手段XSS(跨站脚本攻击)相比,CSRF并不试图窃取用户的数据,而是欺骗用户执行未授权的操作。这种攻击方式利用了Web应用中用户会…

【Linux】进程间通信1——管道概念,匿名管道

1.进程间通信介绍 进程是计算机系统分配资源的最小单位(严格说来是线程)。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。 进程间通信,顾名…

如何利用 TypeScript 的判别联合类型提升错误处理与代码安全性

欢迎回到 TypeScript 高级技巧系列文章。我们之前已经讨论了Extract、Exclude和Indexed Access Types,接下来我们将深入探讨我最喜欢的TypeScript特性之一:判别联合类型(Discriminated Unions)。为什么我如此钟爱它呢?…

毛胚房需要验收吗

雅静说毛环房验收避坑指南,毛胚房需要验收吗?      那要不以后出了问题,你都签了字了,谁还管你      所以咱们毛胚房拿到手,先别签字,急着装修,      一定要先验房,收藏着,不然后续容易吃亏      1,先看看门窗,看入户门推拉是否顺滑      有无划痕,有没有…

【ROS里程计】中部分代码解释

bool OdomNodePub::Odom_Reset(ubt_odom::odomreset::Request& req, ubt_odom::odomreset::Response& res) {if(req.cmd "reset"){OdomResetFlag true;}else{OdomResetFlag false;}res.state "success";return true; } 该函数是一个ROS节点中…

【Mybatis-Plus】根据自定义注解实现自动加解密

背景 我们把数据存到数据库的时候,有些敏感字段是需要加密的,从数据库查出来再进行解密。如果存在多张表或者多个地方需要对部分字段进行加解密操作,每个地方都手写一次加解密的动作,显然不是最好的选择。如果我们使用的是Mybati…

学习vite的核心原理

Vite主要由两个部分组成 开发服务器 基于原生ES模块(ESM)提供开发环境支持。提供了丰富的内建功能,如速度快到惊人的模块热更新(HMR)。这意味着开发者在修改代码时,可以实时地看到更新效果,而…

边缘微型AI的宿主?—— RISC-V芯片

一、RISC-V技术 RISC-V(发音为 "risk-five")是一种基于精简指令集计算(RISC)原则的开放源代码指令集架构(ISA)。它由加州大学伯克利分校在2010年首次发布,并迅速获得了全球学术界和工…

嵌入式门槛高不高,工资怎么样?

一般来说,嵌入式岗位的准入门槛其实并不是特别高。通常情况下,只要能够熟练掌握 C 语言编程以及单片机相关知识,就能够去制作一些较为简单的电子产品,由此可见其门槛相对而言是比较低的,相应的薪水可能也不会特别高。 …

数据库-数据定义和操纵-初始MySQL数据库

连接数据库: mysql -u用户名 -p密码 创建数据库: create database 数据库名; 命令查看MySQL中已存在的数据库 show database; 数据库中创建表的规则: CREATE TABLE 表名 (字段名,数据类型,字段名,数据类型,..... ) eg: 首先创建数据库&am…

速盾:cdn影响seo吗?

CDN (Content Delivery Network) 是一个分布式网络架构,用于在全球范围内加速网站内容的传输和分发。它通过将网站的静态资源(例如图片、CSS、JavaScript 文件等)存储在多个服务器上,使用户可以从最接近他们位置的服务器上获取这些…

计算机专业:黄金时代是否依旧?

计算机专业:黄金时代是否依旧? 随着2024年高考落幕,数百万高三学生将面临人生中的重要抉择:选择大学专业。在这个关键节点,计算机相关专业是否仍是“万金油”的选择?在过去的几十年里,计算机科…

LC1091:二进制矩阵中的最短路径

1091 二进制矩阵中的最短路径 这道题做起来还挺顺利的,挺常见的套路求最短路径,因为做的时候没有卡住就做完了,不过要注意特殊用例的判断,以下是AC代码: class Solution {// Dimensions of the gridint n, m; ​// I…

资治通鉴(二)

今天是6月15日,大约两个月的时间里我看完了《资治通鉴(二)》,回顾一下这本书主要讲了哪些帝王的故事。 汉武帝刘彻,公元前141年至前87年在位54年,他加强了中央集权,尊崇儒术,开创了丝…

AI Agents 的五个级别

原文地址:https://cobusgreyling.medium.com/five-levels-of-ai-agents-5ac39a7b07ed AI Agents 被定义为能够感知环境、做出决策并根据可用工具采取行动的人工实体。 2024 年 5 月 16 日 介绍 这是我非常喜欢研究的一个主题,我很期待写这篇文章。主要是因为我想揭开代理的概…

fetch_lfw_people()报错urllib.error.HTTPError: HTTP Error 403: Forbidden的解决方案

零、实验报告地址 计算机视觉实验二:基于支持向量机和随机森林的分类(Part one: 编程实现基于支持向量机的人脸识别分类 )-CSDN博客 一、代码报错 fetch_lfw_people()报错urllib.error.HTTPError: HTTP Error 403: Forbidden 二、报错原因 通常是由于访问权限不足导致的…

Mysql中索引详解

1、什么是索引 在日常学习中,最常见使用索引的例子就是词典,通过对字母进行排序,并设置对应的页数,从而循序定位某个单词,除了词典,如火车站的车次表、图书的目录等都是使用了索引。它们的原理都是一样的&…