Spring Cloud Netflix五大组件简介( 二 )


使用自我保护模式,可以让集群更加的健壮、稳定 。可以使用..-self-=false 禁用自我保护模式
和的区别
著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性) 。由于分区容错性P是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡 。
保证的是CP(一致性和分区容错性)、则是AP(可用性和分区容错性) 。
当节点因为网络故障与其他节点失去联系时,剩余节点会重新进行选举 。问题在于选举时间过长,30~120s,且选举期间zk集群都是不可用的,这会直接导致选举期间注册服务瘫痪 。这是不可容忍的 。
在设计优先保证可用性 。各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依赖可以提供注册和查询服务 。如何某个注册失败,则自动切换至其他节点,所以只要有一台还在,就能保证注册服务可用,只是查到的信息可能不是最新的 。
简单对比一下CAP和ACID
提供客户端的软件负载均衡算法 。会自动根据配置的某个负载算法去连接机器,也可以自定义负载均衡算法 。
内置的七大负载均衡算法Feign
是一个声明式的Web服务客户端,使得编写Web服务客户端变得非常容器 。只需要创建一个接口,然后在上面添加@注解即可 。
断路器
能保证在一个依赖服务出现问题的时候,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性 。“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控,向调用方返回一个符合预期的、可处理的备选响应(),而不是长时间的等待或者抛出调用方无法处理的异常,从而避免了服务故障的蔓延 。给予事先定义的响应结果,总比直接报错也友好的多
服务雪崩、熔断与降低
Zuul
包含了对请求的路由和过滤两个最主要的功能
Zuul和进行整合,将Zuul自身注册为服务治理下的应用,同时从中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得 。Zuul服务最终还是会注册进 。
Zuul、、微服务之间的关系,就类似于小区保安,小区物业和业主的关系,物业知道有哪些业主,业主需要去物业登记,当请求(外卖或物业)保安根据物业登记的业务住址,告诉请求(外卖或物业)该前往那栋楼 。
分布式配置中心
Cloud为微服务架构中的微服务提供集合化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置 。
当需要改变或添加环境配置时,之前的常规操作,都是需要打包重启服务,才能读取到最新的配置信息,而使用 Cloud 可以进行非常灵活的配置,实时生效