目录
学习分布式,肯定的知道什么是分布式。分布式言简意赅,就是多台电脑部署实现你要实现的功能,突破了单机的性能机器的瓶颈(高性能),解决了单机的容易宕机的(高可用),另外支出了水平、垂直扩展(可扩展)的 性能。单机服务集群架构或者微服务,根据业务功能拆分都属于分布式。
将所有的模块写到一个Web项目中,再统一部署到一个Web服务器中,这就是单体应用架构
垂直应用架构就是将原来的项目应用拆分为互不相干的几个应用,以此提升系统的整体性能。
将重复的代码抽象出来,形成统一的服务,供其他系统或者业务模块调用,这就是分布式架构。
分布式确实能提高服务性能也利于方便扩展增加新功能,但是毕竟机器之间也是需要沟通的,所以也延伸出网络通信延迟、节点故障、数据分布和同步等分布式环境下的特殊挑战。
分布式计算是一种将计算任务分解和分配到多个计算资源(如计算机、服务器或节点)上进行并行处理的计算模型。传统的计算模型通常是集中式的,即单个计算机或服务器负责处理所有的计算任务。分布式计算肯定也计算分布式的优势。高性能、容错性、资源共享提高利用率、可扩展的能力。
CAP 原理是对分布式系统的三个关键属性进行权衡。C(一致性)表示所有节点在同一时间具有相同的数据视图;A(可用性)表示系统在面临部分节点故障时仍然可用;P(分区容错性)表示系统在面临网络分区时仍然能够继续运行。根据 CAP 原理,分布式系统只能同时满足其中两个属性。
为什么只能满足其中两个?你们有考虑过这个问题吗。
这里有个小知识,其实这里有个关于CAP理论理解的误区。不要以为在所有时候都只能选择两个特性。在不存在网络失败的情况下(分布式系统正常运行时),C和A能够同时保证。只有当网络发生分区或失败时,才会在C和A之间做出选择。
是 CP(强一致性)还是AP(可用性)根据业务场景决定。
三大特征:基本可用(Basically Available)、软状态(Soft State)、最终一致性(Eventually Consistent)三个特征
为什么使用base?
相对于传统ACID(原子性、一致性、隔离性、持久性)事务模型,提供了一种更为宽松和灵活的设计思路。在分布式系统中,由于网络延迟、节点故障等原因,强调ACID特性可能导致系统的可用性和性能受到很大的限制。而采用BASE理论,可以更好地适应分布式环境下的不确定性和容错性要求,提供更高的可用性和扩展性。
通俗易懂点就是折中,数据的实时性不要求的那么高了,保证服务的一致性,对不一致的数据有补偿的措施。
提案阶段(Prepare Phase):
接受阶段(Accept Phase):
学习阶段(Learn Phase):
三个角色:领导者(leader)、跟随者(follower)和候选者(candidate)。
领导者选举阶段(Leader Election Phase):
日志复制阶段(Log Replication Phase):
提交与应用阶段(Commit and Application Phase):
Raft算法通过领导者选举机制、日志复制和提交与应用等机制,确保了分布式系统中的一致性和可靠性。与Paxos算法相比,Raft算法的设计更加直观和易于理解,使得开发人员更容易实现和调试分布式系统。
相关材料: