作业 - 第 6 周

用户头像
arcyao
关注
发布于: 2020 年 11 月 28 日

CAP原理介绍

CAP原理是什么:

C:Consistency

一致性是说,每次读取的数据都应该是最近写入的数据或者返回一个错误(Every read receives the most recent write or an error),而不是过期数据,也就是说,数据是一致 的。

A:Availability

可用性是说,每次请求都应该得到一个响应,而不是返回一个错误或者失去响应,不过 这个响应不需要保证数据是最近写入的(Every request receives a (non-error) response, without the guarantee that it contains the most recent write),也就是说系 统需要一直都是可以正常使用的,不会引起调用者的异常,但是并不保证响应的数据是 最新的。

P:Partition tolerance

分区耐受性说,即使因为网络原因,部分服务器节点之间消息丢失或者延迟了,系统依 然应该是可以操作的(The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes)。

高可用、数据一致是很多系统设计的目标,但是分区又是不可避免的事情:

  • CA without P:如果不要求P(不允许分区),则C(强一致性)和A(可用性)是可以保证的。但其实分区不是你想不想的问题,而是始终会存在,因此CA的系统更多的是允许分区后各子系统依然保持CA。

  • CP without A:如果不要求A(可用),相当于每个请求都需要在Server之间强一致,而P(分区)会导致同步时间无限延长,如此CP也是可以保证的。很多传统的数据库分布式事务都属于这种模式。

  • AP wihtout C:要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。现在众多的NoSQL都属于此类。

所以在做数据库分布式系统时,不要求完全满足C、A、P三个特性,可根据系统要求在三个特性中做取舍。

课程内容总结

技术选型,讲述了互联网架构中常用的技术,以及各个技术的解决的问题和注意事项。图示如下:





用户头像

arcyao

关注

还未添加个人签名 2017.11.03 加入

还未添加个人简介

评论

发布
暂无评论
作业-第6周