Spring Cloud

Eureka
多个服务,对应多个Eureka Client
只有一个Eureka Server ,充当注册中心的角色
每个Eureka Client 有ip 地址和端口号,它们注册到Eureka Server
一个服务调用其他多个服务,通过ip 地址和端口号找到对应的服务

Feign
一个服务与另一个服务建立网络连接,发送请求,接收响应。
在接口上使用注解@FeignClient ,接口中的方法使用注解@RequestMapping 和@PathVariable 指明要访问的资源,restful 风格,Feign 通过动态代理的方式,根据在使用的注解@RequestMapping 和@PathVariable 创建出请求服务的地址,帮我们发起请求,处理响应。

Ribbon
Ribbon的作用是负载均衡。当一个服务分别部署在不同机器的时候,另一个服务需要通过Ribbon 来轮询访问服务器上的服务。Ribbon默认采用的算法是Round Robin算法。
Ribbon 从Eureka Server 中的地址注册表选择一个地址作为服务访问地址。
Feign 根据选择出的地址进行对应服务访问。

Hystrix
Hystrix 是充当隔离,熔断,降级的角色。Hystrix 的底层使用线程池的机制处理并发处理。
一个个线程池的线程就仅仅用于请求那个服务。如果某个服务挂了,不走网络请求,直接返回。由于某个服务挂了,数据库不能插入相应的记录,比如积分服务无法为用户增加积分,这时候可以可以往数据库增加为用户增加多少积分的消息记录,等服务恢复后手动去增加服务。

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

Spring Cloud核心组件,在微服务架构中,分别扮演的角色:

* Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里
* Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台
* Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求
* Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题
* Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务

以上参考博客:

拜托!面试请不要再问我Spring Cloud底层原理

Spring Cloud ----> 几个组件的总结的更多相关文章

  1. Spring cloud的各类组件

    Spring cloud 的各类组件 1.注册中心 eureka 2.ribbon 3.feign 4.hystirx 断路器 5.高速缓存器 redis 6.断路器Dashboard监控仪表盘

  2. spring cloud链路追踪组件sleuth和zipkin

    spring cloud链路追踪组件sleuth     主要作用就是日志埋点 操作方法 1.增加依赖             <dependency>      <groupId& ...

  3. Spring Boot版本,Spring Cloud版本与组件版本关系

    我们在学习Spring Cloud时,可能总是碰到以下问题: 1.Spring Boot版本与Spring Cloud版本关系 2.启动时,报莫名其妙的错,稀里糊涂的换个版本就好了 3.这么多版本,用 ...

  4. 一句话概括下spring框架及spring cloud框架主要组件

    作为java的屌丝,基本上跟上spring屌丝的步伐,也就跟上了主流技术.spring 顶级项目:Spring IO platform:用于系统部署,是可集成的,构建现代化应用的版本平台,具体来说当你 ...

  5. Spring Cloud的常规组件和简单实战(一)

    最近一段时间在学习Spring Cloud,从Eureka到Hystrix,常用的配置和方法都有涉及一些,以此笔记来记录一下学习到的东西,也分享一下.内容以实战为起点,主要以介绍常规用法为主,最后也会 ...

  6. Spring Cloud 5大组件

    服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix Zuul 分布式配置——Spring C ...

  7. 【问题】:spring cloud sleuth日志组件冲突问题

    在使用spring cloud sleuth的时候,启动工程报错如下: 根据错误信息明显就是jar包冲突,spring boot默认用的是logback,所以移除其中一个依赖就可以了,修改pom依赖为 ...

  8. spring cloud Alibaba --sentinel组件的使用

    sentinel组件 对于sentinel的前置知识这里就不多说了: 直接上代码: Release v1.8.1 · alibaba/Sentinel · GitHub  下载地址 springclo ...

  9. Spring cloud Hystrix使用@HystrixCommand使用Hystrix组件及@EnableCircuitBreaker原理介绍

    通过@HystrixCommand注解实现在Spring Cloud使用Hystrix组件相关的工程 cloud-registration-center:注册中心 cloud-service-hyst ...

随机推荐

  1. Pycharm中Python3连接Oracle

    一.环境配置:系统:win7.10 (64位)软件:1.Python3.7.2 (64位)2.instantclient-basic-windows.x64-11.2.0.4.0.zip(64位) - ...

  2. 030-IHttpModule

    MyHttpModule.cs public class MyHttpModule : IHttpModule { public void Dispose() { } public void Init ...

  3. beego 初体验 - 上传文件

    页面: controller: 将form表单文件上传到本地,并保存.

  4. ubuntu16.04利用deb包安装mysql

    https://blog.csdn.net/zht741322694/article/details/79013093

  5. HTML表单简单练习

    代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <tit ...

  6. 18.12.02-C语言练习:韩信点兵

    C语言练习:韩信点兵 题目说明:本题是中国经典问题,有多种解法,从数论课程角度看,是一个不定方程组,而且答案不唯一. 但这里采用程序解法,使用的是暴力破解.枚举可能的解,然后根据条件判断,满足所有条件 ...

  7. 5个最好的TensorFlow网络课程

    1. Introduction to TensorFlow for Artificial Intelligence, Machine Learning and Deep Learning This c ...

  8. 通过js或jq增加的代码,点击事件或其他一些事件不起作用时

    通过js或jq增加的代码,点击事件或其他一些事件不起作用时,可使用 $(document).on("click",".noshow",function() { ...

  9. [转载]C# TimeSpan 计算时间差(时间间隔)

    TimeSpan 结构  表示一个时间间隔. 命名空间:System 程序集:mscorlib(在 mscorlib.dll 中) 说明: 1.DateTime值类型代表了一个从公元0001年1月1日 ...

  10. Literal绑定数据

    前台: <asp:Literal ID = "ChiCunShow" runat = "server"></asp:Literal> 后 ...