服务发现是微服务架构体系的核心,所以必须要采用分布式架构来保持其高可用性。
在一个分布式的计算机系统中,只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个基本特性中的两个,这就是著名的CAP定理。
CAP.jpg一致性指的是所有节点都能够在同一时间返回同一份最新的数据副本。
可用性指的是每次请求都能够返回非错误的响应。
分区容错性指的是服务器间的通信即使在一定时间内无法保持畅通也不会影响系统继续运行。对于分布式系统来说,分区容错性是必须满足的。
因此,必须要在一致性和可用性之间进行取舍,这就是所谓的“选择AP还是选择CP”。传统的关系型数据库选择的是CA,即缺乏分布式的能力。
如果选择一致性而牺牲可用性(选择CP)的话,那么为了保证多台服务器上的数据一致,一旦某台服务器宕机,所有的服务器都需要暂停对外提供数据写入服务。在保证所有服务器的数据一致的同时,牺牲了写入服务的可用性。
如果选择可用性而牺牲一致性(选择AP)的话,那么为了保证服务不中断,当某台服务器宕机时,仍然存活的服务器可以选择先将数据写入本地然后直接返回客户端,但这样又将导致多服务器间的数据不一致。
网友评论