• 学习分布式第一天(分布式系统原理和概念)


    目录

    分布式系统原理和概念

    1.分布式系统:

            单体架构:

             垂直架构:

            分布式架构:

    2.分布式计算:

    3.CAP 原理:

    4.BASE 理论:

    5.Paxos 算法:

    6.Raft 算法:


    分布式系统原理和概念

    1.分布式系统:

            学习分布式,肯定的知道什么是分布式。分布式言简意赅,就是多台电脑部署实现你要实现的功能,突破了单机的性能机器的瓶颈(高性能),解决了单机的容易宕机的(高可用),另外支出了水平、垂直扩展(可扩展)的 性能。单机服务集群架构或者微服务,根据业务功能拆分都属于分布式。

            单体架构:

                    将所有的模块写到一个Web项目中,再统一部署到一个Web服务器中,这就是单体应用架构

             垂直架构:

                    垂直应用架构就是将原来的项目应用拆分为互不相干的几个应用,以此提升系统的整体性能

           

            分布式架构

                    将重复的代码抽象出来,形成统一的服务,供其他系统或者业务模块调用,这就是分布式架构

            分布式确实能提高服务性能也利于方便扩展增加新功能,但是毕竟机器之间也是需要沟通的,所以也延伸出网络通信延迟、节点故障、数据分布和同步等分布式环境下的特殊挑战。

    2.分布式计算

            分布式计算是一种将计算任务分解和分配到多个计算资源(如计算机、服务器或节点)上进行并行处理的计算模型。传统的计算模型通常是集中式的,即单个计算机或服务器负责处理所有的计算任务。分布式计算肯定也计算分布式的优势。高性能、容错性、资源共享提高利用率、可扩展的能力。

    3.CAP 原理:

            CAP 原理是对分布式系统的三个关键属性进行权衡。C(一致性)表示所有节点在同一时间具有相同的数据视图;A(可用性)表示系统在面临部分节点故障时仍然可用;P(分区容错性)表示系统在面临网络分区时仍然能够继续运行。根据 CAP 原理,分布式系统只能同时满足其中两个属性。

            为什么只能满足其中两个?你们有考虑过这个问题吗。

            这里有个小知识,其实这里有个关于CAP理论理解的误区。不要以为在所有时候都只能选择两个特性。在不存在网络失败的情况下(分布式系统正常运行时),C和A能够同时保证。只有当网络发生分区或失败时,才会在C和A之间做出选择。

           是 CP(强一致性)还是AP(可用性)根据业务场景决定。

    4.BASE 理论:

            三大特征:基本可用(Basically Available)、软状态(Soft State)、最终一致性(Eventually Consistent)三个特征

            为什么使用base?

            相对于传统ACID(原子性、一致性、隔离性、持久性)事务模型,提供了一种更为宽松和灵活的设计思路。在分布式系统中,由于网络延迟、节点故障等原因,强调ACID特性可能导致系统的可用性和性能受到很大的限制。而采用BASE理论,可以更好地适应分布式环境下的不确定性和容错性要求,提供更高的可用性和扩展性。

          通俗易懂点就是折中,数据的实时性不要求的那么高了,保证服务的一致性,对不一致的数据有补偿的措施。

    5.Paxos 算法:

    1. 提案阶段(Prepare Phase):

      • 提议者向接受者发送一个准备请求,称为prepare请求。这个请求包含一个提案编号(proposal number)。每个提案编号都是唯一且递增的。
      • 每个接受者收到prepare请求后,会比较该请求的提案编号与之前收到的最大提案编号。
      • 如果新请求的提案编号大于接受者之前收到的最大提案编号,则接受者将返回一个承诺(promise),表示不再接受小于该提案编号的请求。
    2. 接受阶段(Accept Phase):

      • 如果提议者收到了大多数接受者的承诺,即收到了足够的接受者回复,那么提议者可以发送一个接受请求,称为accept请求。
      • 这个accept请求包含了一个提案值和提案编号。
      • 接受者收到accept请求后,会验证请求中的提案编号是否大于等于之前收到的最大提案编号,并且没有对应的承诺被撤销。
      • 如果通过验证,接受者将接受该提案,并向所有学习者广播接受请求。
    3. 学习阶段(Learn Phase):

      • 学习者收到接受请求后,将学习该提案,并广播给其他节点,以达到整个系统的一致性。
      • 如果一个学习者在接收到足够多的相同提案的接受请求后,可以认为提案已经达成一致。
    4. 总结:Paxos算法通过两个阶段的协商过程,即提案阶段和接受阶段,来保证多个节点最终达成一致的提案。它通过使用提案编号和承诺机制,避免了冲突和竞争条件的发生。最终,通过学习阶段的广播与学习,确保所有节点都达到了相同的最终状态

    6.Raft 算法:

           三个角色:领导者(leader)、跟随者(follower)和候选者(candidate)。

    1. 领导者选举阶段(Leader Election Phase):

      • 当一个节点启动或者现任领导者失效时,所有节点都可以成为候选者。
      • 候选者将发送选举请求(election request)给其他节点,要求它们投票支持自己成为新的领导者。
      • 如果候选者得到了大多数节点的投票支持,即获得了绝对多数(majority)的选票,那么它就成为新的领导者。
      • 如果没有候选者获得绝对多数的选票,则重新进行选举。
    2. 日志复制阶段(Log Replication Phase):

      • 在这个阶段中,领导者负责接收客户端的命令请求,并将其转换为日志条目。
      • 领导者向跟随者发送追加条目请求(append entries request),将日志条目复制给跟随者。
      • 跟随者接收到请求后,将日志条目追加到自己的日志中。
    3. 提交与应用阶段(Commit and Application Phase):

      • 当领导者将一条日志条目复制给大多数节点后,它会将该日志条目视为已提交(committed)。
      • 领导者将通知所有节点该已提交的日志条目,并要求其应用到状态机上。
      • 当节点将该已提交的日志条目应用到状态机后,该命令就被执行。

    Raft算法通过领导者选举机制、日志复制和提交与应用等机制,确保了分布式系统中的一致性和可靠性。与Paxos算法相比,Raft算法的设计更加直观和易于理解,使得开发人员更容易实现和调试分布式系统。

    相关材料:

    爆肝七天!终于把分布式系统架构整理出来了_分布式系统架构图_Java架构-大仙的博客-CSDN博客

  • 相关阅读:
    Go语学习笔记 - gorm使用 - 数据库配置、表新增 Web框架Gin(七)
    Python3人工智能学习笔记(一)——线性回归
    30天入门Python(基础篇)——第5天:列表\字典的补充说明&字符串切片\列表切片(保姆级+万字)
    P1868 饥饿的奶牛
    LoadRunner调用Analysis组件的相关技术点及知识总结
    JavaSE 第五章 面向对象基础(上)
    【毕业设计】单片机(stm32)远程智能宠物喂养系统 - 物联网 esp8266
    Mac M1安装MongoDB6、后台运行
    同步网盘推荐及挑选指南:便捷、安全、适用的选择
    【Python】第三课 分支和循环的使用
  • 原文地址:https://blog.csdn.net/2201_75630288/article/details/132948872