CAP原则笔记

在一个分布式系统当中,具备三大原则

  • C原则(一致性),指的是consistency,表示当存在多个节点的时候,任意节点提供的服务数据是不是相同的。
  • A原则(可用性),指的是Availabiility,表示当注册中心的某个几点崩溃了,那么整体其他的节点是不是仍然能够提供服务,响应客户端的请求。
  • P原则(分区容错性),指的是Partition tolerance,表示系统中任意信息的丢失或失败不会影响系统的继续运作。

It states, that though its desirable to have Consistency, High-Availability and Partition-tolerance in every system, unfortunately no system can achieve all three at the same time.
在分布式系统的设计中,没有一种设计可以同时满足一致性,可用性,分区容错性 3个特性

根据CAP原理,将NoSql数据库分成了满足CA原则,满足CP原则和满足AP原则三大类

  • CA:单点集群,满足一致性,可用性的系统,通常可扩展性比较差。
  • CP:满足一致性,分区容错性的系统,通常性能并不是特别高。
  • CA:满足可用性,分区容错性的系统,通常可能对一致性要求低一些。

zookeeper和eureka的设计理念

zookeeper

zookeeper保证了CP原则,也就是说,它能够保证注册中心的所有信息都是最新的,但是有一个问题,就是当因为网络问题,导致主节点服务瘫痪与其他节点失去联系的话,这个时候,需要重新选举一个节点作为主节点,并且时间维持在30s到120秒以内,在选举的过程当中,整个服务是不可用的,只有当重新选举出来了主节点,服务才能生效,这么长的等待时间对于用户而言,是不能够接受的,这也就是zookeeper的弊端之一。

eureka

eureka保证了AP原则,在设计的时候,优先考虑可用性,尽管服务的信息不是最新的,但是可以为用户提供服务,本身就已经比较好了,为什么eureka能够做到这一点呢,在eureka的模式下,各个节点是平等的,一个或者多个节点挂掉,并不会影响其他节点的正常工作,剩余的节点依然可以提供服务的注册与查询的任务。

另外,eureka还提供了一种自我保护的机制,如果它发现在15分钟以内,大多数节点都没有了心跳,那么会认为客户端与注册中心之间发生了网络异常,此时,会有三种操作

  1. eureka会维持保护服务数据,不会删除注册中心的服务。
  2. 能够再次接受新服务的注册和查询请求(不会同步到其他节点上)。
  3. 网络稳定后,再把注册的服务信息重新推到其他节点上。

因此可以说,eureka和zooker的区别就在于,eureka可以很好的应付因网络故障导致部分节点失去联系的情况,而不会系像zookeeper那样使整个注册服务瘫痪一段时间。

猜你喜欢

转载自blog.csdn.net/qq_41486775/article/details/114441188