简单了解SpringCloud运行原理

 更新时间:2019年11月16日 08:32:18   作者:熊猫两年后长大  
这篇文章主要介绍了简单了解SpringCloud运行原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了简单了解SpringCloud运行原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

SpringCloud是基于SpringBoot这一高度自动化的应用开发框架,将各类业界比较知名的、得到过实践反馈的开元服务治理相关的技术框架进行优化整合的框架,是一种开发方式的优化和组合,,是一组框架的统称,基于SpringBoot的starter定制,实现开箱即用的目标,通过简单的声明式注解,就能实现服务的调用、负载均衡、限流、熔断等机制

SpringCloud的核心组件

首先要通过定制一套基于SpringBoot的starter以便快速进行框架依赖的集成于配置,所以用springcloud进行微服务开发时,在项目中通过“spring-cloud-starter-parent”父依赖来实现其他框架级组件的快速引入,虽然只是很简单的引入了一个父依赖,但是实际上却是引入了整个SpringBoot的框架体系一级SpringCloud框架体系的整个依赖

核心组件:

SpringCloudStarters:SpringBoot式的启动项目,为SC提供了开箱即用的依赖管理;

Consul:是一个用Go语言编写的服务发现与配置工具,可作为整个微服务体系的服务注册中心;

Eureka:是一个用java语言编写的服务注册中心;

Feign:是一种声明式、模块化的http客户端,用于简化微服务间的调用行为;

Ribbon:是一个进程间通信库(远程过程调用),内置了软件负载均衡器,主要的使用模型包括REST调用,支持各种序列化方案;

Zuul:是一个网关服务,他提供动态路由、监视、弹性、安全性等等;

Hystrix:是一个延迟和容错库,旨在隔离对远程系统、服务和第三方库的访问点,停止级联故障,并在不可避免的复杂分布式系统中启用弹性;

SpringCloudConfig:配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion;

各个服务间进行通讯调用的核心问题,也就是通过Feign进行客户端的服务调用,微服务动支持通过Eureka进行多节点集群部署,客户端调用时还需要实现负载均衡等功能,在SpringCloud中是通过Feign框架组合Ribbon框架来实现的

微服务系统中还要实现限流熔断的核心问题:服务的限流和熔断,如果服务间的调用出现阻塞就需要进行及时的限流,并通过熔断来保证服务的基本可用性,可通过Zuul和Hystrix服务,通过注解的方式来提供这样的功能机制

服务的配置管理核心问题:通过SpringCloudConfig 独立配置服务管理来实现,通过该组件实现SC体系中所哟偶微服务应用配置的集中化管理

SpringCloud的核心注解:

@EnableDiscoveryClient:定义在spring-cloud-commons包中,便于快速实现服务注册与发现的功能注解定义。在主启动类上定义;

  @EnableDiscoveryClient注解的定义中通过“@import({EnableDiscoveryClientImportSelector.class})”类,此类通过定义“isEnable()”方法表示开始服务注册与发现等功能,染红其父类型“SpringFactoryImportSelector”通过“selectImports()”方法开始扫描eureka继承的starter依赖包。需要在项目中引入“spring-cloud-starter-consul-discovery”依赖包,这个依赖的“META-INF/spring.factories”文件指向具体依赖“spring-cloud-consul-discovery”,而该依赖中的“META-INF/spring-factories”文件则包含了一系列自动配置类,这些自动配置类会在应用启动时进行初始化和加载,完成微服务与Eureka的连接。

以上说明了SC进行微服务自动发现注册配置的基本原理,实际上还是基于SpringBoot的机制来实现的,具体怎样交互连接的可看“spring-cloud-consul-discovery”的源码

@EnableFeignClient:用于告诉框架扫描所有通过注解@FeignClient定义的feign客户端。服务消费方通过@EnableFeignClients注解开启配置后,可以通过@FeignClient注解就可以进行服务调用了,而且实现了客户端负载均衡。这个注解默认是会默认开启Ribbon代理的,而Ribbon是实现客户端负载均衡的一个组件,通过从Eureka拉取服务节点信息,从而以轮询的方式转发客户端调用请求到不同的服务端节点来实现负载均衡。

@EnableCircuitBreake:通过此注解来使用断路器,该注解会引入Hystrix的配置,其过程与@EnableEurekaClient注解的过程一致,通过导入EnableCircuitBreakerImportSelector类,开启断路器设置,如果项目中引入了“spring-cloud-starter-hystrix”依赖包,那么在应用加载时会初始化Hystrix相关的自动配置类。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JDK1.8源码下载及idea2021导入jdk1.8源码的详细步骤

    JDK1.8源码下载及idea2021导入jdk1.8源码的详细步骤

    这篇文章主要介绍了JDK1.8源码下载及idea2021导入jdk1.8源码的详细步骤,在文章开头就给大家分享了JDK1.8源码下载地址和下载步骤,告诉大家idea2021.1.3导入JDK1.8源码步骤,需要的朋友可以参考下
    2022-11-11
  • Spring Boot项目完美大一统(结果异常日志统一)

    Spring Boot项目完美大一统(结果异常日志统一)

    这篇文章主要为大家介绍了Spring Boot项目完美大一统(结果异常日志统一)的实详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Java中Socket用法详解

    Java中Socket用法详解

    本文详细讲解了Java中Socket的用法,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • SpringBoot中@Import注解的使用方式

    SpringBoot中@Import注解的使用方式

    这篇文章主要介绍了SpringBoot中@Import注解的使用方式,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • 浅析SpringBoot中常见的底层注解

    浅析SpringBoot中常见的底层注解

    Spring Boot 是一个用于创建独立的、基于Spring框架的Java应用程序的框架,它提供了许多注解,下面小编就来和大家介绍一些常见的底层注解吧
    2023-08-08
  • @Resource和@Autowired两个注解的区别及说明

    @Resource和@Autowired两个注解的区别及说明

    这篇文章主要介绍了@Resource和@Autowired两个注解的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • IDEA集成DeepSeek的详细教程(保姆级教程)

    IDEA集成DeepSeek的详细教程(保姆级教程)

    DeepSeek作为一款强大的代码搜索和分析工具,能够帮助开发者快速定位代码、理解项目结构以及优化代码质量,本文将详细介绍如何在IntelliJ IDEA中集成DeepSeek,并展示如何利用它来提升开发效率,感兴趣的朋友一起看看吧
    2025-02-02
  • JavaWeb response和request对象原理及实例解析

    JavaWeb response和request对象原理及实例解析

    这篇文章主要介绍了JavaWeb response和request对象原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Spring中的Filter过滤器详解

    Spring中的Filter过滤器详解

    这篇文章主要介绍了Spring中的Filter过滤器详解,Filter 程序是一个实现了特殊接口的 Java 类,与 Servlet 类似,也是由 Servlet 容器进行调用和执行的,需要的朋友可以参考下
    2023-08-08
  • 查看jdk(java开发工具包)安装路径的两种方法

    查看jdk(java开发工具包)安装路径的两种方法

    若已经安装好了jdk(java开发工具包),也配置了环境变量,事后却忘了安装路径在哪,如何查看jdk安装路径?本文给大家介绍了两种查看jdk(java开发工具包)安装路径的方法,需要的朋友可以参考下
    2023-12-12

最新评论