动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

30天自动登录
微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

SpringCloud原理详解

07-30 08:51 264浏览
举报 T字号
  • 大字
  • 中字
  • 小字

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

SpringCloud原理详解

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相关的自动配置类。

动力节点在线课程涵盖零基础入门,高级进阶,在职提升三大主力内容,覆盖Java从入门到就业提升的全体系学习内容。全部Java视频教程免费观看,相关学习资料免费下载!对于火爆技术,每周一定时更新!如果想了解更多相关技术,可以到动力节点在线免费观看SpringCloud入门视频教程哦!

0人推荐
共同学习,写下你的评论
0条评论
代码小兵286
程序员代码小兵286

45篇文章贡献179882字

作者相关文章更多>

推荐相关文章更多>

SpringBoot是什么框架

代码小兵99203-29 17:29

简述SpringBoot与Spring区别

杨晶珍08-02 11:09

使用Docker搭建开发环境

代码小兵98808-09 14:38

重启Docker容器命令

代码小兵87208-09 15:04

简述微服务的3个优点

代码小兵69606-10 10:02

发评论

举报

0/150

取消