学 无 止 境 ,与 君 共 勉 。
分布式系统的特点
可扩展性
- 可以通过增加内存来提高单个机器的性能;
- 可以通过增加机器节点来分担压力,提升系统整体性能;
避免单点故障
在单体系统中如果某个功能出现异常,有可能会导致整个系统服务不可用。在分布式系统中,部分机器宕机不影响整个系统的运行。
无状态
服务是无状态的,因为只有服务无状态,才能满足部分机器宕机不影响全部,可以随时进行扩展的需求。
CAP原则
Partition Tolerance:分区容忍
在分布式系统中,不同的服务节点往往部署在不同的服务器上,相互之间通过网络请求进行通讯。当存在网络波动时,服务A向服务B发送的请求可能无法到达。这种情况是难以避免的,因此我们说在分布式系统中,P总是成立的。.0
Consistency:一致性
一个节点更新数据之后,所有的节点都能获取到该数据的最新值。比如客户端向A节点发起请求,将某条记录V改成v1,这时候,客户端不管是向节点A还是节点B读取该记录获取到的都应该是修改后的值V1
Availability:可用性
任何节点,只要收到请求,服务器必须给出请求
AP或者CP
如果要满足一致©,那么当向节点A写数据的的时候,在A节点未将数据完全同步到其他节点前,其他节点不能对该数据进行读写,否则会出现数据不一致,这样就不满足可用性了;同理如果我们要满足可用性(A),那么所有节点都必须可以访问,访问到的数据可能是还没有同步的旧数据,这样就不满足一致性了。
ZooKeeper
就是典型的CP模式,它是一个分布式的,开源的分布式应用程序协调服务,主要为分布式应用提供一致性服务;
Spring Cloud
中的服务注册发现组件Eureka
就是一个AP架构,只要还存在一个节点,系统就可用,但是它不保证该节点的数据是最新的;
除了像金额变更这种敏感且需要实时性的业务,为了保证用户体验性,我们设计系统的时候通常优先考虑AP架构;
Base理论
Base理论是基于CAP原则演化过来的,是对CAP原则中一致性和可用性权衡的结果,它的核心思想是最终一致性:我们无法做到强一致性,但是每个服务根据自身的业务特点,采用适当的方式来使系统达到最终一致性
Basically Available:基本可用
为了确保系统能够基本运行,而采取相应措施,允许损失部分性能,如:系统的访问人数太多了,可以对服务进行限流,提示用户稍后再访问,防止大量用户访问击垮服务。
Soft State:软状态
软状态指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
Eventually Consistent:最终一致性
当经过一定时间之后,处于软状态下的数据,最终会被同步为最新的数据,这时所有的数据副本保持一直。
日常求赞
创作不易,如果各位觉得有帮助,求点赞 支持
求关注
微信公众号: 俞大仙