CAP原理-分布式架构设计定理


Consistency一致性
Availability可用性
PartitionTolerance分区容错性(分布式系统必须实现P)

一致性:数据有唯一的出处。
可用性:节点之间尽量要联通。
分区容错性:在一定的时间内允许错误。

分区容错性:在一定的时间内允许错误。如京东的产品用了缓存,如果店家修改了价格,在1min内读到的是缓存中的旧数据,它跟数据库中的数据不一致,1min过后数据必须一致。分区容错性在分布式环境必须实现。

CA,在MySQL体现得很好,数据库是强一致性的产品。设计数据库表时有三范式3NF:
1表必须有主键
2表不能有重复的列
3列不能是加工而成(做数学运算如求和或求平均生成的列)

AP,在Eurka上体现得很好。Eurka是peer to peer点对点的设计,每个点的信息都可以让用户接入。每个点如果信息变化,内部会自动同步所有的数据,所有缺一个点也没有关系。Eurka即使所有的节点都宕机仍能提供服务。Eurka分为服务端和客户端,客户端缓存了所有数据的路由信息,也能找到服务的提供者。

CP,在zookeeper上体现得很好。zookeeper为了保持一致性,采用主从设计,如果zookeeper的节点有一半的节点宕机或有节点正在选举,节点不可用。zookeeper要求从节点从主节点接入,缺主节点不可以。zookeeper要求可用性真正可用。并未真强调可用性。

Zookeeper是基于CP设计,侧重一致性。
Eurka是基于AP设计,侧重可用性。

注册中心靠心跳机制,动态地维护url-生产者和消费者。而注册中心的信息不回频繁地发生变化。
服务提供者 url。
服务消费者 url。

现在主流数据库表的设计方式是反三范式的(冗余设计),优点是性能高。缺点是数据存多处,同步数据有时间差,有脏数据问题-短暂时间内数据不一致。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容