Eureka和Ribbon和Hystrix和zuul
Posted lgg20
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Eureka和Ribbon和Hystrix和zuul相关的知识,希望对你有一定的参考价值。
Springcloud和Dubbo的区别?
Spring Cloud抛弃了Dubbo 的RPC通信,采用的是基于HTTP的REST方式。
eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别(优点)?
zookeeper: 当主节点故障时,zk会在剩余节点重新选择主节点,耗时过长,虽然最终能够恢复,但 是选取主节点期间会导致服务不可用,这是不能容忍的。 eureka: 各个节点是平等的,一个节点挂掉,其他节点仍会正常保证服务。
总结: 著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分
区容错性P在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。因此,Zookeeper 保证
的是CP, Eureka 则是AP。
Eureka还有一种自我保护机制?
Eureka Client:负责将这个服务的信息注册到Eureka Server中
Eureka Server:注册中心,里面有一个注册表,保存了各个服务所在的机器和端口号
首先eureka client每隔30往eureka server服务端发送心跳,15分钟内超过85%的节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,此时会出现以下几种情况:
1、Eureka不再从注册列表中移除因为长时间没收到心跳而应该过期的服务
2、Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上(即保证当前节点依然可用)。
3、当网络稳定时,当前实例新的注册信息会被同步到其它节点中因此, Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像zookeeper那样使整个注册服务瘫痪。
Ribbon 与 Nginx 的区别?
1、Ribbon是客户端的负载均衡工具,而客户端负载均衡和服务端负载均衡最大的区别在于服务清单所存储的位置不同,在客户端负载均衡中,所有客户端节点下的服务端清单,需要自己从服务注册中心上获取,比如Eureka服务注册中心。同服务端负载均衡的架构类似,在客户端负载均衡中也需要心跳去维护服务端清单的健康性,只是这个步骤需要与服务注册中心配合完成。
2、在Spring Cloud中,由于Spring Cloud对Ribbon做了二次封装,所以默认会创建针对Ribbon的自动化整合配置。
3、在 Spring Cloud 中,Ribbon 主要与 RestTemplate 对象配合起来使用,Ribbon会自动化配置 RestTemplate 对象,通过@LoadBalanced 开启 RestTemplate对象调用时的负载均衡。
Ribbon 怎么实现客户端负载均衡?
由于 Spring Cloud Ribbon 的封装, 我们在微服务架构中使用客户端负载均衡调用非常简单, 只需要如下两步
1、启动多个服务提供者实例并注册到一个服务注册中心或是服务注册中心集群
2、服务消费者通过被@LoadBalanced 注解修饰过的 RestTemplate 来调用服务提供者。
这样,我们就可以实现服务提供者的高可用以及服务消费者的负载均衡调用。
Zuul的四大过滤器?
(1) PRE:这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、在集群中选择请求的微服务、记录调试信息等。
(2) ROUTING :这种过滤器用于构建发送给微服务的请求,并使用Apache HttpClient或Netfilx Ribbon请求微服务。
(3) POST:这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加标准的HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端等。
(4) ERROR:在其他阶段发生错误时执行该过滤器。
Hystrix的作用?
相关链接:https://www.jianshu.com/p/aa79fb6d96f3
如果一个用户服务调另一个库存服务,库存服务挂了。用户服务可以正常访问,只不过调库存服务的时候就会报错。会卡着几分钟。
这时候直接做一个服务熔断,在几分钟内请求库存服务直接fallback返回一个异常页面。
服务熔断和服务降级的区别?
服务熔断:一般是某个服务异常引起的,相当于“保险丝”,当某个异常条件被触发,直接熔断整个服务,返回,不是等到此服务超时。
通过@HystrixCommand(fallbackMethod ="hystrix_GET" ) //去找备选响应,进行服务降级
服务降级:降级一般是从整体负荷考虑,当某个服务熔断之后,服务器将不再被调用,客户端可自己准备一个本地的fallback回调,返回一个缺省值,虽然服务水平下降,当能用,比直接挂掉要强。
以上是关于Eureka和Ribbon和Hystrix和zuul的主要内容,如果未能解决你的问题,请参考以下文章
:初探Spring Cloud Eureka+Hystrix+Ribbon+Feign微服务搭建
Hystrix 可以在没有 Eureka/ Ribbon 或其他 Netflix OSS 模块的情况下使用吗
SpringCloud——Eureka Feign Ribbon Hystrix Zuul等关键组件的学习与记录
Spring Cloud中五大神兽总结(Eureka/Ribbon/Feign/Hystrix/zuul)
Eureka+Feign+Ribbon+Zuul+Hystrix+Config+Bus构建一套SpringCloud项目