Spring Cloud(1) - 服务治理相关技术汇总

什么是分布式系统的CAP理论?

在分布式系统中,有一个重要的理论,即CAP理论.即C-一致性,A-高可用性,P-服务对网络分区故障的容错性(除非整个网络发生故障,分布式服务不能由于单点的网络故障而彻底瘫痪).这三个特性,在任何的分布式系统中,都只能知足其中两个.算法

Zookeeper 和 Eureka的区别

Zookeeper

Zookeeper 是著名 Hadoop 的一个子项目,不少场景下 Zookeeper 也做为 Service 发现服务解决方案.Zookeeper 保证的是 CP,即任什么时候刻对Zookeeper进行访问,都会获得一致的结果,可是它不能保证服务的高可用性.例如,当zookeeper集群正在进行选主操做的时候,或者zookeeper集群有半数以上的机器不可用时.缓存

Eureka

Eureka是Netflix开源的一款服务注册与发现产品,并提供了基于Java的封装.在它的实现理念中,全部的节点都是平等的.Eureka保证的是AP.一个节点挂掉,不会影响到其余的节点提供服务.哪怕是全部的服务所有挂掉,Eureka Client也会根据缓存的服务列表,尽最大可能保证调用是连同的.服务器

Spring Cloud Netflix 主要组件

服务注册与发现 —— Eureka

Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分,基于 Netflix Eureka
作了二次封装,主要负责完成微服务架构中的服务治理功能,服务治理能够说是微服务架构中最为核心和基础的模块,他主要用来实现各个微服务实例的自动化注册与发现.
  • 服务注册
    在服务治理框架中,一般都会构建一个注册中心.每个服务单元向注册中心注册本身的服务地址,版本号,通讯协议等信息.同时,注册中心还须要经过心跳等方式,来维护服务可用列表.
  • 服务发现
    因为运行在服务治理框架下,服务间的调用不经过指定具体的位置来执行,而是经过注册中心获取可用的位置列表来执行.

Eureka是由多运行实例组成的.大体分为两类:Eureka Server(服务端) 和 Eureka Client(客户端).为了便于理解,咱们将 Eureka client 再分为 Service Provider 和 Service Consumer.以下图所示:网络

clipboard.png

Eureka Server

Eureka Server 做为一个独立的部署单元,以 REST API 的形式为服务实例提供了注册、管理和查询等操做.同时,Eureka Server 也为咱们提供了可视化的监控页面,能够直观地看到各个 Eureka Server 当前的运行状态和全部已注册服务的状况.架构

Eureka Server 的高可用集群

Eureka Server 能够经过部署多个实例,来实现高可用集群.不一样于Zookeeper选举的过程(PS:ZK选主的算法本身也不是很是的了解,在这里也很少赘述.之后研究明白了再写出来~),Eureka Server是基于 Peer to Peer的模式.这是一种去中心化的架构,没有 M/S 的区别,你们在集群中都是对等的.在这种架构中,节点经过彼此互相注册来提升可用性,每一个节点须要添加一个或多个有效的 serviceUrl 指向其余节点.每一个节点均可被视为其余节点的副本.框架

若是某台 Eureka Server 宕机,Eureka Client 的请求会自动切换到新的 Eureka Server 节点,当宕机的服务器从新恢复后,Eureka 会再次将其归入到服务器集群管理之中.当节点开始接受客户端请求时,全部的操做都会进行replicateToPeer(节点间复制)操做,将请求复制到其余 Eureka Server 当前所知的全部节点中.分布式

一个新的 Eureka Server 节点启动后,会首先尝试从邻近节点获取全部实例注册表信息,完成初始化.Eureka Server 经过getEurekaServiceUrls()方法获取全部的节点,而且会经过心跳续约的方式按期更新.默认配置下,若是 Eureka Server 在必定时间内没有接收到某个服务实例的心跳,Eureka Server 将会注销该实例(默认为 90 秒,经过eureka.instance.lease-expiration-duration-in-seconds配置).当 Eureka Server 节点在短期内丢失过多的心跳时(好比发生了网络分区故障),那么这个节点就会进入自我保护模式。下图为 Eureka 官网的架构图:ide

clipboard.png

雪崩效应

在微服务或者说是SOA的架构下,一次业务请求须要调用多个服务来完成.单个服务或者基础服务的故障,因为级联的效果,会致使整个服务变得不可用.雪崩效应是一种因为"服务提供方"不可用,最后致使"服务消费者"不可用的过程.
在Spring Cloud中,为咱们提供了完善的降级,熔断支持.本人也是一边学习一边总结,以后会慢慢的更新到后续的文章中.微服务

相关文章
相关标签/搜索