广告
返回顶部
首页 > 资讯 > 精选 >Spring Cloud的底层架构原理
  • 444
分享到

Spring Cloud的底层架构原理

2023-06-19 13:06:23 444人浏览 薄情痞子
摘要

本篇内容主要讲解“spring cloud的底层架构原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“spring Cloud的底层架构原理”吧!Eureka首先,我们得说说服务注册中心 Eur

本篇内容主要讲解“spring cloud的底层架构原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习spring Cloud的底层架构原理”吧!

Eureka

首先,我们得说说服务注册中心 Eureka 了,它应该是SpringCloud 技术栈中最核心的东西。

服务注册与发现怎么实现的

服务注册与发现是 Eureka 中最核心的东西。

比如现在我们有一个服务消费者 服务A,和两个节点的服务提供者,服务B。服务A 和服务B 在启动的时候都会向注册中心进行服务注册。

服务A 也会定时从服务注册中心定时去拉取服务注册表信息到本地来,这个过程叫服务发现,默认是30S 一次,当然了可以自己去配置。

如下图:

Spring Cloud的底层架构原理

实际上当服务在拉取服务注册表的时候,其实客户端不是直接从 Eureka 中的 服务注册表中获取数据的。

Eureka 做了二级缓存,第一级叫做 ReadOnly 缓存,二级叫做 ReadWrite 缓存。

客户端会直接从ReadOnly 缓存中读取注册表信息。

当服务在进行注册的时候,先往服务注册表中写入注册信息,服务注册表更新了,立马会同步一份数据到 ReadWrite 缓存中去。

那什么时候 ReadWrite 缓存中的数据会到 ReadOnly 缓存中去?

此时有一个定时任务会定时去检查 ReadWrite 是否跟  ReadOnly 不一致,不一致就把数据同步到 ReadOnly 中去。

这个定时任务也默认是 30S。也可以自己配置。

Spring Cloud的底层架构原理

大家可以考虑一下,这么做的好处是什么,为什么要这么去做二级缓存?

这么做的好处在于,优化并发读写的冲突。

如果服务进行注册的时候,同时有服务来读去注册表信息,就会存在频繁的读写加的操作,写的时候就不能读,导致性能下降,所以我们需要避免大量的读写都去操作一个表。

那么有了这两层,其实大部分的读操作都会走 ReadOnly 缓存。只需要定时把 ReadWrite 缓存中的数据写入到 ReadOnly 就好了。

 
心跳与故障检测

服务注册中心还有一个很重要的功能就是 心跳与故障检查。心跳跟故障检测其实就是为了知道注册上来的这些服务是不是还活着的。

Eureka 还会开启一个定时任务定时去检查心跳,默认也是30秒,也可以自己设置。

当出现机器故障没有在约定的时间间隔内上报自己的状态,那么Eureka 就会把这台机器剔除注册表,同时更新到 ReadWrite 缓存中去。如图:

Spring Cloud的底层架构原理

但是把数据从ReadWrite 缓存同步到 ReadOnly 缓存是有时间间隔的。当服务消费者A 也只有等待下一次请求更新的时候才会把自己列表里面的服务给更新掉。

所以有时候会出现你注册上去的服务经过及时秒才被服务消费者发现,或者服务的某个节点出现故障,没有及时剔除掉。这里就是同步机制的时间差问题。

以上就是 Eureka 的核心运行原理了。

 

Feign & Ribbon

Feign,它其实就是对一个接口打了一个注解,它会针对这个注解标注的接口生成动态代理对象,然后针对你的 feign 的动态代理代理对象去调用他方法的时候,此时会在底层生成,Http 协议格式的请求如:/order/create?productId=1

Feign底层的使用的HTTP 通信框架 HttpClient ,先会使用 Ribbon 从本地的 Eureka 注册表的缓存里面取出要调用服务的机器列表出来,然后根据负载均衡算法,选择一台机器出来,然后针对选择出来的机器发送 Http 请求过去。

 

Zuul

Zuul 配置请求路径与服务的对应关系,你的请求到网关,他就直接查找到匹配的服务,然后就直接把请求转发给那个服务的某台机器, Ribbon 从 Eureka 本地缓存列表里面获取一台机器,然后通过负载均衡算法选择一台,把请求直接用 http 通信框架发送到指定的机器上面去。

 

Hystrix

微服务的架构中,会存在很多的服务调用,如果一个服务出现故障,就很容易导致整个调用链发生故障,发生服务雪崩的情况。

例如,当一个服务出现故障,或者超时的问题,但是服务调用方不知道,一直在发送请求过去,那么等待的请求越来越多,形成任务积压,最终导致服务崩溃,瘫痪。

Hystrix 的出现就是为了解决这种问题。它提供了服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能。

Hystrix使用舱壁模式实现线程池的隔离,它会为每一个依赖服务创建一个独立的线程池,这样就算某个依赖服务出现延迟过高的情况,也只是对该依赖服务的调用产生影响,而不会拖慢其他的依赖服务。

到此,相信大家对“Spring Cloud的底层架构原理”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Spring Cloud的底层架构原理

本文链接: https://www.lsjlt.com/news/296230.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring Cloud的底层架构原理
    本篇内容主要讲解“Spring Cloud的底层架构原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Cloud的底层架构原理”吧!Eureka首先,我们得说说服务注册中心 Eur...
    99+
    2023-06-19
  • 深度剖析Spring Cloud底层原理
    毫无疑问,Spring Cloud 是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对 Spring Cloud 功能使用的层面,其底层的很多原理,很多人可能并不知晓。实际上,Spring Cloud 是一...
    99+
    2023-06-05
  • Spring框架IOC容器底层原理详解
    目录1、什么是IOC2、IOC容器的底层原理3、那么上边提到的三种技术如何实现IOC的呢4、IOC(接口)1、什么是IOC IOC – Inverse of Contro...
    99+
    2022-11-13
  • Spring底层原理是什么
    这篇文章主要讲解了“Spring底层原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring底层原理是什么”吧!Spring简介ClassPathXmlApplicationCo...
    99+
    2023-07-05
  • Spring Cloud 的核心架构原理是怎么样的
    Spring Cloud 的核心架构原理是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。最近在补一些分布式系列的面试内容,提前几个月做做准备吧,你们懂的,也跟大家分享分...
    99+
    2023-06-19
  • Spring Boot的底层原理是什么
    这篇文章主要讲解了“Spring Boot的底层原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Boot的底层原理是什么”吧!1.基于你对springboot的理解描述...
    99+
    2023-06-27
  • Spring底层原理深入分析
    目录bean生命周期推断构造方法的底层原理1、使用哪个构造方法2、如果有参把哪个bean对象赋值给入参AOP实现原理spring事务@Configuration循环依赖为什么会出现循...
    99+
    2022-11-13
  • Spring底层事务原理解析
    目录一、@EnableTransactionManagement工作原理二、Spring事务基本执行原理四、Spring事务传播机制五、Spring事务传播机制分类六、Spring事...
    99+
    2022-12-10
    Spring底层事务原理 Spring底层事务 Spring底层原理
  • Spring Boot底层原理实例分析
    这篇“Spring Boot底层原理实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring ...
    99+
    2023-06-29
  • Spring AOP底层原理及代理模式
    目录Spring AOP底层原理代理模式一、什么是 AOP二、AOP 底层原理1. 什么是代理?2. 什么是静态代理3. 什么是动态代理Spring AOP底层原理代理模式 一、什么...
    99+
    2022-11-13
  • php框架的底层原理是什么
    这篇文章主要介绍了php框架的底层原理是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二...
    99+
    2023-06-14
  • spring aop底层原理及如何实现
    目录前言 使用 源码分析 总结 前言 相信每天工作都要用spring框架的大家一定使用过spring aop,aop的概念是面向切面编程,相对与传统的面向对象编程oop,aop更关...
    99+
    2022-11-12
  • Spring boot整合tomcat底层原理剖析
    目录本文结论spring-boot-starter-web内部有什么?TomcatServletWebServerFactory的作用:获取WebServer对象spring boo...
    99+
    2022-11-13
    Spring boot整合tomcat Spring boot 整合tomcat原理
  • Spring底层原理由浅入深探究
    目录Spring简介Spring中是如何创建一个对象Bean的创建过程推断构造方法AOP大致流程Spring事务Spring简介 ClassPathXmlApplicationCon...
    99+
    2023-02-24
    Spring底层原理 Spring核心原理 Spring底层核心
  • 深入探究Spring底层核心原理
    目录Spring底层核心原理Bean的生命周期推断构造方法AOP原理Spring事务Spring底层核心原理 下面这几行代码是一个Spring的入门代码,第一行是通过java配置类 ...
    99+
    2023-05-16
    Spring底层核心原理 Spring底层原理
  • spring aop底层原理及实现方法
    这篇文章主要介绍spring aop底层原理及实现方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用要分析spring aop的底层原理,首先要会使用,先创建一个普通maven webapp项目,引入spring...
    99+
    2023-06-14
  • Spring底层架构核心概念Environment怎么使用
    这篇“Spring底层架构核心概念Environment怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring底...
    99+
    2023-07-04
  • spring boot集成kafka的spring-kafka底层原理是什么
    这篇“spring boot集成kafka的spring-kafka底层原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一...
    99+
    2023-06-29
  • Spring注解Autowired的底层实现原理详解
    目录一、Autowired注解的用法1、概述2、应用3、具体用法二、Autowired自动装配的过程一、Autowired注解的用法 1、概述 使用spring开发时,进行配置主要有...
    99+
    2022-11-13
    Spring注解Autowired原理 Spring注解Autowired Spring Autowired
  • spring注解的底层实现原理是什么
    Spring注解的底层实现原理主要依赖于Java的反射机制。在Spring中,通过使用注解来标识类、方法或字段,从而告诉Spring...
    99+
    2023-10-09
    spring
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作