关于注册中心(Eureka)的一些知识点

eureka是springCloud中的一个负责服务注册与发现的组件 遵循CAP原则。

  CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。

  一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
  可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
  分区容忍性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

 

 

eureka中分为两部分,eureka server 和 eureka client 。

    eureka server:是作为服务注册与发现中心的

    eureka client :服务的生产者、消费者

    当eureka client项目启动时它会向 eureka server 提交自己的IP地址 , 端口,name等信息,完成注册。

服务者注册到注册中心步骤

  导包--配置yml--在启动类配置@EnableEurekaClient

  这样就可以完成在注册中心注册了

  Eureka的具体配置访问:https://www.cnblogs.com/april-chen/p/10617066.html

Eureka和zookeeper的区别

那他们的区别在哪里呢?为什么要使用Eureka来进行服务注册呢?

1、Zookeeper当master(父类)挂了,会在30-120s进行leader(领导)选举,这点类似于redis的哨兵机制,在选举期间Zookeeper是不可用的。这时Zookeeper集群会瘫痪,这也是Zookeeper的CP,保持节点的一致性,牺牲了A/高可用。而Eureka不会,即使Eureka有部分挂掉,还有其他节点可以使用的,他们保持平级的关系,只不过信息有可能不一致,这就是AP,牺牲了C/一致性。

2、Eureka有自我保护机制(15分钟内超过85%的服务节点没有心跳/down),这点我觉得确实要比Zookeeper好,即使服务不可用,也会保留当前失效的微服务,默认90秒,在这90秒Eureka不会注销微服务,在这90秒内仍然可以接受新的服务注册,只是不会同步到其他节点上。当坏掉的服务恢复的时候,会自动加入到节点上,也是高可用的一种。然后退出自我保护机制,这也是应对网络异常的一种机制

总结:Zookeeper出现网络等故障的时候导致整个服务注册瘫痪。而Eureka能很好的应对网络故障导致失去节点的情况。

  



posted @ 2020-12-02 16:07  嘟嘟嘟z  阅读(381)  评论(0)    收藏  举报