美文网首页javaJava 杂谈raft
eureka 为什么选用AP,为什么不需要选举算法

eureka 为什么选用AP,为什么不需要选举算法

作者: Cc_7397 | 来源:发表于2019-06-21 21:09 被阅读0次

    在分布式领域中像zokeerper,etcd,这些应用都需要选主算法来选定主服务器,为什么eureka却不需要呢。

    CAP

    在解释之前我们需要先了解下分布式领域的CAP理论,

    • C - Consistency 一致性
    • A - Availability 可用性
    • P - Partition tolerance 分区容忍性

    CAP的理论提出这三者不可兼得,而p分区容忍性显然是不可或缺的。

    P

    分区容忍性 表示分布式系统在一部分服务不可用时依然可以向外提供服务。

    这显然是分布式应用的基础,所以只能在a和c上做文章了

    C

    一致性 意思是,写操作之后的读操作,必须返回该值

    要实现这一功能,那必须在写后同步到其它节点才算写入成功,这无疑降低了性能,也就是失去了A 可用性

    A

    可用性 其实就是高可用,关注程序的性能,响应时间

    要保证高可用必然要丢弃数据的一致性

    eureka为什么选择ap,这跟他的功能有关,他只专注于服务注册和发现,并不会出现数据的竞态条件:

    竞态条件 有同时多个线程竞争同一数据,可能会发生数据不正确的问题
    image.png

    如图:每个client只会向一个eureka server注册,所以并不会出现数据竞态条件,eureka server只需要将其它节点的数据来取过来就好,并不会出现在别的节点拉取到和自己不一致的数据的问题。
    就算出现了,数据不一致问题,比如一个client宕机后重启链接了其它节点。因为是用于服务注册,只要覆盖就旧数据就好了。

    eureka保证的是最终一致性,最终所有eureka server中的数据会保持一致。

    所以因为eureka专注于服务注册发现,可用放弃C来保证A,同时也不需要复杂的选举算法。性能也要高于etcd和zokeerper。

    相关文章

      网友评论

        本文标题:eureka 为什么选用AP,为什么不需要选举算法

        本文链接:https://www.haomeiwen.com/subject/ddzuqctx.html