分布式

1、分布式锁的实现

a、redis setnx

b、数据库唯一索引

c、memcached可以使用add命令,该命令只有KEY不存在时,才进行添加,或者不会处理。Memcached所有命令都是原子性的,并发下add 同一个KEY ,只会一个会成功

2、CAP理论

分布式系统中不可能同时满足三个理论,
C:一致性,访问分布式系统中每个节点都能获得最新数据,
A:可用性,每一次请求都能够获得一个有效的访问,不保证数据是最新的
P:分区容错性,分布式系统有很多的节点,会出现节点能正常对外提供服务,但是节点和节点之间的网络通信出现了问题。就称当前的分布式存储系统出现了分区。分区并不一定是由网络故障引起的,也可能是因为机器故障。如果集群某个机器宕机,也认为系统中出现了分区。分区容忍性指的是如果出现了分区问题,整个系统仍继续运行。
分布式系统只能同时满足CP或者AP,不保证同时满足CA,因为系统中网络的不稳定性可能导致分区。网络不稳定性一直存在,所以只能在一致性和可用性中选一个

CP和AP怎么做选择?

当我们做一套支付系统的时候,用户账户余额,流水是必须强一致性的。这时候就要考虑选CP。用户的名字,用户的支付设置这类就不必考虑强一致性,可以选择AP。

3、分布式事务的解决方案

1)2PC即XA协议,两阶段提交,可达到强一致性
2) TCC方案,达到最终一致性
3) rocketMq事务消息,达到最终一致性

4、负载均衡的实现

一般都是通过Nginx实现负载均衡,负载均衡的算法包括: a、轮询, b、一致性hash

5、设计分布式场景下的单例模式

1)把单例对象序列化保存到文件里面,文件保存在共享存储中。
2)各进程使用单例对象时,从共享存储中读取该对象
3)一个进程在获取到分布式锁之后,才能访问共享单例对象,使用完之后在释放分布式锁。

6、分布式base理论,是基于CAP理论基础上提出的,该理论是对CAP中一致性和可用性权衡的结果

Basically Available(基本可用):假设系统出现了故障,但还是能用,只是相比较正常的系统而言,可能会有响应时间上的损失,或者功能上的降级
Soft State(软状态):什么是硬状态呢?要求所有节点的数据副本都是一致的,这是一种“硬状态”。软状态也称为弱状态,相比较硬状态而言,允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在延时。
Eventually Consistent(最终一致性):上面说了软状态,但是不应该一直都是软状态。在一定时间后,应该到达一个最终的状态,保证所有副本保持数据一致性,从而达到数据的最终一致性。这个时间取决于网络延时、系统负载、数据复制方案设计等等因素。

posted @ 2023-03-31 15:18  MarkLeeBYR  阅读(11)  评论(0编辑  收藏  举报