分布式理论知识1、分布式系统架构1.1基础概念分布式 : 将一个单体项目分成很多个模块,各个模块协同工作,各个模块构成了分布式系统
集群:针对单个模块或者单个系统在多台服务器上部署,称为集群 。为了提高系统的可用性,增加系统的负载 。
1.2分布式系统演变
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
1.3分布式系统面临的问题问题描述通信异常网络本身的不可靠性,因此每次网络通信都会伴随着网络不可用的风险(光纤、路由、DNS等硬件设备或系统的不可用),都会导致最终分布式系统无法顺利进行一次网络通信,另外,即使分布式系统各节点之间的网络通信能够正常执行,其延时也会大于单机操作,存在巨大的延时差别,也会影响消息的收发过程,因此消息丢失和消息延迟变的非常普遍 。网络分区网络之间出现了网络不连通,但各个子网络的内部网络是正常的,从而导致整个系统的网络环境被切分成了若干个孤立的区域,分布式系统就会出现局部小集群,在极端情况下,这些小集群会独立完成原本需要整个分布式系统才能完成的功能,包括数据的事务处理,这就对分布式一致性提出非常大的挑战 。节点故障节点故障是分布式系统下另一个比较常见的问题,指的是组成分布式系统的服务器节点出现的宕机或"僵死"现象,根据经验来说,每个节点都有可能出现故障,并且经常发生 。三态分布式系统每一次请求与响应存在特有的“三态”概念,即成功、失败和超时 。分布式系统中,由于网络是不可靠的,虽然绝大部分情况下,网络通信能够接收到成功或失败的响应,但当网络出现异常的情况下,就会出现超时现象,通常有以下两种情况:1. 由于网络原因,该请求并没有被成功的发送到接收方,而是在发送过程就发生了丢失现象 。2. 该请求成功的被接收方接收后,并进行了处理,但在响应反馈给发送方过程中,发生了消息丢失现象 。
1.4分布式系统一致性问题1.4.1概念分布式数据一致性指的是数据在多份副本中存储时,各副本中的数据是一致的 。
1.4.2副本数据一致性分布式系统当中,数据往往会有多个副本 。如果是一台数据库处理所有的数据请求,那么通过ACID四原则,基本可以保证数据的一致性 。而多个副本就需要保证数据会有多份拷贝,这就带来了同步的问题,因为我们几乎没有办法保证可以同时更新所有机器当中的包括备份所有数据 。
网络延迟,即使我在同一时间给所有机器发送了更新数据的请求,也不能保证这些请求被响应的时间保持一致存在时间差,就会存在某些机器之间的数据不一致的情况 。
文章插图
总得来说,我们无法找到一种能够满足分布式系统所有系统属性的分布式一致性解决方案 。因此,如何既保证数据的一致性,同时又不影响系统运行的性能,是每一个分布式系统都需要重点考虑和权衡的 。于是,一致性级别由此诞生 。
1.4.3一致性分类强一致性:
这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大 。但是强一致性很难实现 。
弱一致性:
这种一致性级别约束了系统在写入成功后,不承诺立即可以读到写入的值,也不承诺多久之后数据能够达到一致,但会尽可能地保证到某个时间级别(比如秒级别)后,数据能够达到一致状态 。弱一致性可以分为
1、读写一致性用户读取自己写入结果的一致性,保证用户永远能够第一时间看到自己更新的内容 。比如我们发一条朋友圈,朋友圈的内容是不是第一时间被朋友看见不重要,但是一定要显示在自己的列表上 。
推荐阅读
- win7桌面文件路径修改-win7系统桌面文件路径修改-
- win7系统如何关闭UAC功能控制的问题
- 新手教程,Linux系统下MySQL的安装
- 十分钟搞定分布式一致性算法
- 分布式数据之缓存技术,今天就一起来揭开其神秘面纱
- 让重装系统更简单:无需使用U盘,3分钟带你体验“云重装”
- 开源NAS系统OpenMediaVault安装与体验
- 七氟丙烷气体灭火系统要求?七氟丙烷灭火系统设置要求
- Go语言实现海量日志收集系统
- 每个软件架构师和软件工程师都必须知道的10种设计模式