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

2023-09-17 20:19:36

目录

分布式系统原理和概念

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博客

更多推荐

数据结构和算法之归并排序

归并排序(MergeSort)是一种基于分治思想的排序算法,通过将待排序的数组分成两个子数组,分别对两个子数组进行排序,最后将排序好的子数组合并成一个有序数组。它的基本思想是将两个有序的子序列合并成一个有序的序列。代码如下://归并排序算法functionmergeSort(arr){//递归出口,当数组长度小于等于1

ELK 企业级日志分析系统

ELK概述1、ELK简介ELK平台是一套完整的日志集中处理解决方案,将ElasticSearch、Logstash和Kiabana三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求。ElasticSearch:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。Ela

Java虚拟机栈

Java虚拟机栈(JavaVirtualMachineStack)也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧(StackFrame)用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法被调用直至执行完毕的

游戏笔记本电脑可以进行 3D 建模和渲染吗?有哪些优势与缺点?

3D建模和渲染是创建令人惊叹的数字艺术、动画和游戏体验的最流行和最广泛使用的工具之一。随着技术的进步,对运行这些模型的强大计算机的需求呈指数级增长。对于那些寻求强大机器来处理3D建模任务的人来说,游戏笔记本电脑已成为一个可行的选择。游戏笔记本电脑适合3d建模吗?游戏笔记本电脑因其性能和便利性而变得越来越受欢迎,而且它们

大数据课程M1——ELK的概述

文章作者邮箱:yugongshiye@sina.cn地址:广东惠州▲本章节目的⚪了解ELK的定义;⚪掌握ELK的使用;一、什么是ELK1.简介ELK是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写,分别是ElasticSearch、Logstash和Kibana。2.ELASTIC

【ELK】日志分析系统概述及部署(ELFK部署实验)

目录一、ELK概述1、ELK是什么?2、ELK的组成部分2.1ElasticSearch(1)分片和副本(2)es和传统数据库的区别2.2Kiabana2.3Logstash(1)LogStash主要组件2.4可添加的其它组件3、为什么要使用ELK二、完整日志系统基本特征三、ELK工作原理四、部署ELK日志分析系统实验

0基础学习VR全景平台篇 第100篇:美团酒店丨平台上传全景全流程

目前美团平台已经具备VR全景图在美团App客户端的展示能力,但目前E-Booking暂未开通上传通道,若商家您有全景图且有意愿上传至平台,需要签署授权书,并依照规定的格式要求发送邮件申请,由平台代为人工上传。具体规则和要求有哪些呢?小编带大家了解一下!应用人群本功能适用于所有已经入驻了美团酒店平台的酒店商家上传流程邮件

【PostgreSQL内核学习(十一)—— (CreatePortal)】

CreatePortal概述CreatePortal函数GetPortalByName函数PortalHashTableLookup函数MemoryContextAllocZero函数AllocSetContextCreate函数ResourceOwnerCreatePortalHashTableInsert总结声明:

分享VR眼镜加密播放器OEM方案

随着科技的发展,电子成品更新换代很快,用户的娱乐工具也更加多样化,从电脑、手机、平板在到现在使用越来越多的VR眼镜,给用户的体验也越来越多样。而对于内容提供商来说,内容是其竞争优势所在。那么如何做好视频在VR眼镜中的安全播放呢?考虑VR眼镜的特殊性,用户在初期使用可能不是很熟悉,因此对VR视频加密要考虑用户的便捷性。如

MyBatis执行SQL的两种方式

MyBatis有两种执行SQL语句的方式,如下:通过SqlSession发送SQL通过SqlSession获取Mapper接口,通过Mapper接口发送SQLSqlSession发送SQL有映射器之后就可以通过SqlSession发送SQL了。我们以getWebsite这条SQL为例看看如何发送SQL。Websitew

注入之SQLMAP(工具注入)

isqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL和SQL注入漏洞,其广泛的功能和选项包括数据库指纹,枚举,数据库提权,访问目标文件系统,并在获取操作权限时执行任意命令。希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言和我交流sqlmap相关参数介绍-

热文推荐