早期我们使用单体架构,即所有服务部署在一台服务器的一个进程中,随着互联网的发展,逐步演进为分布式架构,多个服务分别部署在不同机器的不同进程中。
二 、zookeeper概述
zookeeper是一个开源的分布式协调服务,提供分布式数据一致性解决方案,zookeeper分布式应用程序可以实现数据发布订阅、负载均衡、命名服务、集群管理分布式锁、分布式队列等功能。 zookeeper提供了分布式数据一致性解决方案,那什么是分布式数据一致性?首先我们谈谈什么叫一致性?
如图在上图中有用户 user在DB1中修改balance=900,如果user下一次read请求到DB2数据,此时DB1的 数据还没及时更新到DB2中,就会造成整个数据库集群数据不一致。 数据一致性分为强一致性和最终一致性,强一致性指的如果数据不一致,就不对外提供数据服务,保证 用户读取的数据始终是一致的。数据强一致性只需要通过锁机制即可解决,在案例中通过在DB2没有从 DB1同步数据之前上锁,不对外提供读操作。只有当同步完成以后才对外提供服务。而最终一致性要求 数据最终同步即可,没有实时性要求。
三、CAP原则
CAP在分布式系统中主要指的是一致性((Consistency)、可用性(Availability)和分区容错性 (Partition tolerance)
-
一致性
一致性指的是强一致性
-
可用性 系统提供的服务一直处于可用状态,用户的操作请求在指定的响应时间内响应请求,超出时间范围,认 为系统不可用
-
分区容错性 分布式系统在遇到任何网络分区故障的时候,仍需要能够保证对外提供一致性和可用性服务,除非是整个网络都发生故障。 在一个分布式系统中不可能同时满足一致性、可用性、分区容错性,最多满足两个,对于分布式互联网 应用而言,必须保证P,所以要么满足AP模型、要么满足CP模型
正常情况只用到AP或者CP组合,CA组合基本不会用的,因为都需考虑应用的分区容错性;