【Java面试】分布式架构必问面试题,服务注册中心应该是AP还是CP?看看高手是如何搞定面试官的

在互联网去面试的时候,一定会考察求职者分布式架构领域相关的知识。

而注册中心是微服务架构里面最重要的核心组件,所以面试频率会比较高。

其中“服务注册中心应该是AP还是CP这个问题,就是最近一个工作了5年的粉丝遇到的一个问题。

大家好,我是Mic,咕泡科技联合创始人。

下面我们来分析一下面试官对于这个问题的考察意图。

考察目的

这个问题考察的难度中等偏上,主要考察工作5年以上的同学。

考察目的有两个:

  1. 应聘的公司肯定是需要用到微服务架构,所以要了解求职者是否用过注册中心

  2. 了解求职者是否深入理解注册中心,能够回答这个问题,至少说明对于注册中心的工作原理和价值是有清晰认知的

所以,对于这个问题,有两个回答的建议

  1. 要有自己的总结和理解

  2. 表达逻辑要足够清晰,不能想到哪说到哪。

问题分析

首先,要先了解CAP模型。

CAP模型是说,在一个分布式系统里面,不可能同时满足三个点

  • 一致性(Consistency),访问分布式系统中的每一个节点都能获得最新的数据。

  • 可用性(Availability),每次请求都能获得一个有效的访问,但不保证数据是最新的。

  • 分区容错性(Partition tolerance),分区相当于对通信耗时的要求,系统如果不能在时限范围内达成数据一致,

    就意味着发生了分区的情况。

在CAP模型中只能满足CP或者AP,之所以不能满足CA,因为网络通信的不确定性可能会导致分区容错,也就是分区容错性必然是存在的,因此我们只能在一致性和可用性之间做选择。

再回到注册中心,服务注册中心的本质是为了提供服务地址的统一管理,以及提供一个服务动态感知的能力。

所以,注册中心应该要保证高可用性,也就是无论什么情况下,应用都能正常从注册中心获取到目标服务的通信地址。

当注册中心不可用的时候,不能影响服务之间的正常通信。

因此,从这个角度来说,注册中心应该是AP模型。

【Java面试】分布式架构必问面试题,服务注册中心应该是AP还是CP?看看高手是如何搞定面试官的_第1张图片

另外,对于服务动态感知这个场景来说,从服务地址失效到最终客户端感知到变化,必然会存在延迟。

也就是意味着客户端无法实时感知到出现故障的服务端节点。

既然一定会出现数据不一致的问题,就更加没必要去搭建一个CP模型的注册中心集群了。

否则反而会降低请求的性能。

高手:

我认为注册中心应该是AP模型,原因有两个

  1. 注册中心只是一个地址维护的平台,它如果出现故障,也不能影响服务之间的正常通信。

  2. 注册中心的地址感知,本身就存在延迟,所以设计一个CP模型的架构意义并不大。

总结

大家知道怎么回答了吗?

如果你喜欢我的作品,记得点赞收藏加关注哦!!!

 另外,我将所有Java面试系列制作成了完整的面试文档。它的便捷之处在于,可以通过检索的方式,找到你想要的面试题,目前已经更新200期,总计超过20W字!

【想领取面试文档的小伙伴可以点击文章底部名片无套路免费赠送给大家!】

需要高手面试文档面试文档的小伙伴可以扫描下方二维码
↓↓↓↓↓↓↓↓↓↓↓↓↓

你可能感兴趣的:(Java面试题合集,面试,java,架构)