简单了解SpringCloud运行原理
作者:熊猫两年后长大 发布时间:2023-06-09 17:07:15
这篇文章主要介绍了简单了解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相关的自动配置类。
来源:https://www.cnblogs.com/joker955/p/11853768.html


猜你喜欢
- 本文实例为大家分享了java实现文件上传下载的具体代码,供大家参考,具体内容如下一.上传1.前端:<form method="
- 本文分享的示例代码实现提取2个集合中相同和不同的元素此处需要使用Collection集合所提供的一个方法:removeAll(Cellect
- 写在前面本文讲解的是如何使用Spring动态配置文件,实现不同环境不同配置,灵活切换配置文件;以及讲述了如何使用 Maven 打包,然后上传
- DataTable可以通过RowStatus来判断状态是否发生了改变。但是有些时候我们希望在行状态即使为Modified的情况下也不要提示内
- 前言在有些业务场景中,系统对于响应时间有一定的要求,而一个方法里面同步执行的业务逻辑太多势必会影响响应速度,带来不好的用户体验。比如登录时记
- 一直使用Eclipse环境开发Android,也尝鲜使用过Android Studio去开发,各种IDE配合Android SDK及SDK原
- JavaConfig,是在 Spring 3.0 开始从一个独立的项目并入到 Spring 中的。JavaConfig 可以看成一个用于完成
- 又是兴趣系列网上有很多自动强红包的例子和代码,笔者也是做了一些优化。先说说自己的两个个优势1.可以在聊天界面自动强不依赖于通知栏推送 2.可
- 本文实例讲述了C#中const用法。分享给大家供大家参考。具体用法分析如下:const是一个c语言的关键字,它限定一个变量不允许被改变。使用
- 熔断与降级为什么在RPC环节中有熔断以及降级的需求,详细的原因这里不多解释,从网上搜索一张图做示意。熔断我理解熔段主要解决如下几个问题:当所
- 以下实例演示了如何使用 retainAll () 方法来计算两个数组的交集:Main.java 文件:import java.util.Ar
- 不知道大家对千篇一律的404 Not Found的错误页面是否感到腻歪了?其实通过很简单的配置就能够让Spring MVC显示您自定义的40
- 在工作过程中,需要将一个文件夹生成压缩文件,然后提供给用户下载。所以自己写了一个压缩文件的工具类。该工具类支持单个文件和文件夹压缩。放代码:
- 一、基于配置的异常处理SpringMVC 提供了一个处理控制器方法执行过程中所出现的异常的接口:HandlerExceptionResolv
- 这个小代码是我凭自己对指针和链表的理解和认识,自己实现的,没有参考其他人的代码,如果有相同的地方,那真的只是巧合,代码我在ubuntu 15
- 本文介绍了Android轻松实现多语言的方法示例,分享给大家,具体如下:1.创建多语言包2.首先在onCreate方法中调用此方法查看上一次
- 在maven中有几种方法打包项目,在之前的一篇博客中【Java】打包Jar包并用脚本执行,已经介绍了怎么在没有maven插件的情况下,怎么打
- 一、Mybatis执行流程具体分析Mybatis是如何操作数据库的!1、定义我们的核心配置文件的路径,这个路径是从target/classe
- Android 定时器实现图片的变换在Android中,要让每秒进行一次ui更新,就需要利用到定时器和handler,message的结合,
- 前言图形相交检测常常用在伤害判定,使用自定义的图形相交检测,可以在一定程度上控制性能。比如2D格斗游戏中使用的矩形包围盒(AABB),一些动