文档章节

spring cloud 简介 内置服务 zuul、Eureka、Ribbon、Hystrix 等

FH-Admin
 FH-Admin
发布于 03/27 11:55
字数 1269
阅读 45
收藏 0

一、什么是springcloud,有什么作用

  Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

Spring Cloud是一个全家桶式的技术栈,包含了很多组件。实例 www.b123.com  。先从其最核心的几个组件入手,来剖析一下其底层的工作原理。也就是Eureka、Ribbon、Feign、Hystrix、Zuul这几个组件。

Eureka

 Eureka是微服务架构中的注册中心,专门负责服务的注册与发现。库存服务、仓储服务、积分服务中都有一个Eureka Client组件,Eureka Client这个组件专门负责将这个服务的信息注册到Eureka Server中(就是告诉Eureka Server,自己在哪台机器上,监听着哪个端口)。而Eureka Server是一个注册中心,里面有一个注册表,保存了各服务所在的机器和端口号。

订单服务里也有一个Eureka Client组件,这个Eureka Client组件会找Eureka Server问一下:库存服务在哪台机器啊?监听着哪个端口啊?仓储服务呢?积分服务呢?然后就可以把这些相关信息从Eureka Server的注册表中拉取到自己本地缓存起来。

总结:

Eureka Client:负责将这个服务的信息注册到Eureka Server中

Eureka Server:注册中心,里面有一个注册表,保存了各个服务所在的机器和端口号

Feign

Feign的一个关键机制就是使用了动态代理。

 首先,如果你对某个接口定义了@FeignClient注解,Feign就会针对这个接口创建一个动态代理

接着你要是调用那个接口,本质就是会调用 Feign创建的动态代理,这是核心中的核心

Feign的动态代理会根据你在接口上的@RequestMapping等注解,来动态构造出你要请求的服务的地址

最后针对这个地址,发起请求、解析响应

Ribbon

Ribbon的作用是负载均衡,会帮你在每次请求时选择一台机器,均匀的把请求分发到各个机器上。Ribbon的负载均衡默认使用的最经典的Round Robin轮询算法。

Ribbon是和Feign以及Eureka紧密协作,完成工作的,具体如下:

首先Ribbon会从 Eureka Client里获取到对应的服务注册表,也就知道了所有的服务都部署在了哪些机器上,在监听哪些端口号。

然后Ribbon就可以使用默认的Round Robin算法,从中选择一台机器

Feign就会针对这台机器,构造并发起请求。

Hystrix

Hystrix会搞很多个小小的线程池,比如订单服务请求库存服务是一个线程池,请求仓储服务是一个线程池,请求积分服务是一个线程池。每个线程池里的线程就仅仅用于请求那个服务。

降级:每次调用积分服务,你就在数据库里记录一条消息,说给某某用户增加了多少积分,因为积分服务挂了,导致没增加成功!这样等积分服务恢复了,你可以根据这些记录手工加一下积分。这个过程,就是所谓的降级。

Zuul

Zuul,也就是微服务网关。这个组件是负责网络路由的。所有请求都往网关走,网关会根据请求中的一些特征,将请求转发给后端的各个服务。有一个网关之后,还有很多好处,比如可以做统一的降级、限流、认证授权、安全,等等。

总结:

Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里

Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台

Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求

Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题

Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务

© 著作权归作者所有

FH-Admin
粉丝 3
博文 78
码字总数 59948
作品 0
济南
架构师
私信 提问
加载中

评论(0)

Spring Cloud框架的有序集合

[简介] Spring cloud是一系列框架的有序集合。它基于Spring boot,简化了分布式系统基础设施的开发:服务注册、配置中心、消息总线、负载均衡、数据监控等。 Spring cloud将各种比较成熟的服...

Red_Ant_hoyl
03/31
0
0
Spring Cloud全家桶主要组件及简要介绍

一、微服务简介 微服务是最近的一两年的时间里是很火的一个概念。感觉不学习一下都快跟不上时代的步伐了,下边做一下简单的总结和介绍。 何为微服务?简而言之,微服务架构风格这种开发方法,...

小致Daddy
2019/06/04
362
0
杨大仙的程序空间 - 疯狂Spring Cloud连载

疯狂Spring Cloud连载(1)Spring Cloud概述 疯狂Spring Cloud连载(2)搭建开发环境 疯狂Spring Cloud连载(3)Spring Boot简介与配置 疯狂Spring Cloud连载(4)第一个Eureka程序 疯狂Spr...

晨猫
2018/11/26
2
0
Spring Cloud 新一代Web框架微服务翘楚(一)

序言 springcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易。 通过一些简单的注解,我们就可以快速的在应用...

张龙豪
2019/07/19
0
0
跟我学Spring Cloud(Finchley版)-16-Zuul

至此,已实现基于Eureka的服务发现,基于Ribbon的负载均衡,Feign也为我们提供了很不错的远程调用能力,使用Hystrix后,高并发场景下应用也不会被别人拖死——咱们的微服务架构已经日趋完善!...

周立_ITMuch
2019/01/24
102
0

没有更多内容

加载失败,请刷新页面

加载更多

Apache OpenMeetings开源线上会议系统——安装配置

OpenMeetings是一个开源的在线会议系统,支持音频和视频,同时支持桌面分享。 官网地址:http://openmeetings.apache.org/index.html 安装 当前版本为4.0.6,需要最低jre8的安装环境。 下载a...

JustForFly
22分钟前
21
0
Android知识体系总结2020之Android部分Handler篇

1.什么是Handler?   Handler是可以通过发送和处理Message和Runnable对象来关联相应线程的MessageQueue。通常我们认为它是一种异步机制。   a.可以让对应的Message和Runnable在未来的某个...

ClAndEllen
23分钟前
29
0
命令模式

命令模式(Command Pattern)在我们生活中非常常见,比如开关灯、电视遥控器换台等。 我们使用摇控器换台的时候,我们按下一个换台的按钮,然后电视机就会换台,按下调整音量调节按钮,电视机...

鸣沙山
26分钟前
20
0
基于 rsync 和 ln 实现“写时复制”的快照备份功能

一、基本原理 这里“写时复制”加了一个引号,因为这是专门针对使用rsync备份时的写时复制效果,而不是事实上的写时复制(copy-on-write),其达到的目的如下: 使用 rsync 备份数据后,立即...

Inpool
今天
28
0
郑州哪哪里可以开工程款发票-郑州_新闻网

【电薇同步;1.3.8 - 2.7.4.1 - 5.2.9.7.】张生、诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridge,是Android手机通用...

yyqqvip
今天
30
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部