Spring Cloud ----> 几个组件的总结
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的各类组件
Spring cloud 的各类组件 1.注册中心 eureka 2.ribbon 3.feign 4.hystirx 断路器 5.高速缓存器 redis 6.断路器Dashboard监控仪表盘
- spring cloud链路追踪组件sleuth和zipkin
spring cloud链路追踪组件sleuth 主要作用就是日志埋点 操作方法 1.增加依赖 <dependency> <groupId& ...
- Spring Boot版本,Spring Cloud版本与组件版本关系
我们在学习Spring Cloud时,可能总是碰到以下问题: 1.Spring Boot版本与Spring Cloud版本关系 2.启动时,报莫名其妙的错,稀里糊涂的换个版本就好了 3.这么多版本,用 ...
- 一句话概括下spring框架及spring cloud框架主要组件
作为java的屌丝,基本上跟上spring屌丝的步伐,也就跟上了主流技术.spring 顶级项目:Spring IO platform:用于系统部署,是可集成的,构建现代化应用的版本平台,具体来说当你 ...
- Spring Cloud的常规组件和简单实战(一)
最近一段时间在学习Spring Cloud,从Eureka到Hystrix,常用的配置和方法都有涉及一些,以此笔记来记录一下学习到的东西,也分享一下.内容以实战为起点,主要以介绍常规用法为主,最后也会 ...
- Spring Cloud 5大组件
服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix Zuul 分布式配置——Spring C ...
- 【问题】:spring cloud sleuth日志组件冲突问题
在使用spring cloud sleuth的时候,启动工程报错如下: 根据错误信息明显就是jar包冲突,spring boot默认用的是logback,所以移除其中一个依赖就可以了,修改pom依赖为 ...
- spring cloud Alibaba --sentinel组件的使用
sentinel组件 对于sentinel的前置知识这里就不多说了: 直接上代码: Release v1.8.1 · alibaba/Sentinel · GitHub 下载地址 springclo ...
- Spring cloud Hystrix使用@HystrixCommand使用Hystrix组件及@EnableCircuitBreaker原理介绍
通过@HystrixCommand注解实现在Spring Cloud使用Hystrix组件相关的工程 cloud-registration-center:注册中心 cloud-service-hyst ...
随机推荐
- c# 设置开机启动
private static RegistryKey _rlocal = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Wi ...
- 图表管理账单的NABCD
首先,我们团队的项目目标是记账本.就我个人理解,记账本中心功能有两项,第一,记录:第二,显示.而本篇博客主要描述用各种不同的图表来显示的NABCD. 首先是N(need),用户的需求就是我们的动力!利 ...
- centos6 更新gcc glibc2.17
curl -Lks http://www.hop5.in/yum/el6/hop5.repo > /etc/yum.repos.d/hop5.repo yum install gcc wget ...
- iframe子页面与父页面元素的访问以及js变量的访问
1.子页面访问父页面元素 parent.document.getElementById('id')和document相关的方法都可以这样用 2.父页面访问子页面元素 document.getEle ...
- nodejs 前端项目编译时内存溢出问题的原因及解决方案
现象描述 昨天用webpack打包Vue的项目时,node内存溢出而停止build项目,即是项目构建过程中频繁报内存溢出:FATAL ERROR: CALL_AND_RETRY_LAST Alloca ...
- 单链表反转java代码
据说单链表反转问题面试中经常问,而链表这个东西相对于数组的确稍微难想象,因此今天纪录一下单链表反转的代码. 1,先定义一个节点类. public class Node { int index; Nod ...
- ava新手入门详细介绍
Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案.在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考. 我在学习Java的过程中主要围绕以下几个 ...
- node获取当前路径的三种方法
node提供了3种获取路径的方法 ,在当前目录下,运行node const {resolve} = require('path') console.log('__dirname : ' + __di ...
- Hunspell介绍及试用
1.简介 Hunspell是一个为拥有多态和复杂组合词的语言所设计的拼写检查器,原本为匈牙利语设计. Hunspell是一个自由软件,在GPL.LGPL和MPL三许可证下发行. Hunspell对主要 ...
- redis的架构(一)
redis认证 redis的认证比较简单,这里简单来说明一下怎么设置redis的认证: redis的配置文件中有一个requirepass字段,在后面直接写上对应的密码即可.默认redis的不开启认证 ...