SpringCloud:Eureka的集群环境配置及CAP原则

1.Eureka集群环境配置

本质:互相注册。

注意:但在一个服务器上去模拟集群部署时,需修改配置本地host文件的loaclhost镜像,因为相同intance.name会被默认为只有一个注册中心,而不会去访问其他EurekaSever

大致跟一个Eureka相似,不同之处在于EurekaServer之间要相互绑定,

eg:

注意:7001,7002,7003均是EurekaSever,就是端口号不同,上图就是7001绑定了7002,7003;7002,7003也这样修改就可以了,实现了互相的绑定,三者是平行关系,作用是备份

服务提供者相关配置:yaml格式

eureka:
client:
service-url:
defaultZone:注册到所有EurekaSever中(url),每个url用逗号隔开

CAP原则

RDBMS(mysql,sqlsever,oracle)=》ACID原则

NoSql(redis,mongdb)=》CAP

ACID:

 A  原子性(atomicity)

C   一致性(consistency)

I  隔离性(isolation)

D  持久性(durability)

CAP:

C  一致性(Consistency)

A  可用性(Availability)

P  分区容错性(Partition tolerance)

CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。(重点)

各组合的特点:

CA:单点集群,满足一致性和高可用性,通常扩展性比较差

CP;分区容错系统,因为一致性比可用性强,所以拉低了性能

AP;分区容错系统,一致性较低

注意:因为zookeeper和eureka都必须保留集群部署的能力所以,两者只能在CP,AP中选择

ZooKeeper保证的是CP

因为保证了CP,强调一致性(要体现一致性就必须保持主从关系才能实现),所以当集群中的master(主要的)节点,因网络故障等原因与其它节点失去联系时,剩余的节点会重新选举leader,er选举leader的时间会很长30s~120S这之间所有注册的服务都会瘫痪,这时不可容忍的情况

Eureka保证AP

自我保护机制就是AP的主要体现,注册中心和其他服务(包括注册中心服务)都是依靠心跳去监控各服务的健康的,当同一时间有大量服务没有心跳,就会自动触发自我保护机制,核心思想是,宁可保护一个可能是坏掉的服务,也不消除一个可能健康的服务,

这样的结果就是,即便在EurekaSever集群中的某个节点坏掉了,也不会影响整个系统的正常运行

总结:

  zookeeper为强调一致性,他的注册中心集群会有主从关系,当主节点挂掉后,剩余的节点会重新选取leader,这期间整个注册与发现服务将会瘫痪,影响项目的运行

  Eureka强调高可用性,集群节点间是平行关系,即便其中一个节点挂掉,并不会影响其他服务的运行

原文地址:https://www.cnblogs.com/CL-King/p/14315114.html