分布式系统面临的首要问题就是数据分布,即将数据均匀地分布到多个存储点。其中,为了保证可靠性和可用性,需要将数据复制多个副本,这就产生了多个副本之间数据一致性的问题。大规模分布式存储系统还有一个重要的目标,那就是在完成既定任务的同时尽可能的减少成本,因此有必要使用性价比较高的PC服务器,这些服务器性能良好,但是故障率较高,这就要求系统能在软件层面实现自动容错,即存储节点出现故障时,系统能够自动检测出来,并将原有的数据和服务迁移到集群中其他正常工作的节点。

在分布式系统中有以下基本概念:

a)   异常

我们往往将服务器上运行的一个进程称为一个节点,节点和节点之间通过网络连接。然而服务器节点和网络都是不可靠的,这就导致了各种异常的发生。

              i.         服务器宕机

宕机后,服务器“不可用”,当其重启之后,节点将失去所有的内存信息。再恢复的时候通过读取持久化介质中的数据恢复内存信息。

             ii.         网络异常

原因可能是消息丢失、消息乱序或者数据错误。还有一种特殊的被称为“网络分区”的网络异常,即将节点划分为若干区域,区域内部正常通信,而区域之间通信失败。

通常来说,有一个基本原则即网络永远是不可靠的,任何消息只有对方回复后才可认为发送成功。

由于该异常的存在,系统中的请求返回结果通常有三态,即成功、失败和超时,其中超时是不可知状态。【比如RPC执行成功但返回结果时网络异常或者成功后服务器宕机等等】

超时出现时,只能通过不断读取之前的操作的状态来验证RPC是否成功。这里我们可以引入“幂等”的概念,即一次执行和多次执行结果相同,当发生失败或者超时的时候,都可以通过该种方式重试直到成功。

           iii.         磁盘故障

发生概率很高,一般是磁盘损坏和磁盘数据错误两种情况。前者发生,磁盘上的数据将丢失,因此一个分布式系统多是冗余的,保证磁盘损坏不会造成该数据在系统中丢失。后者往往通过校验和机制解决。

b)  一致性

由于异常的存在,分布式系统往往将数据冗余存储多份,当某一个节点出现错误,可以从其他副本上读到数据。副本可以说是分布式存储系统唯一的容错手段,多个副本之间保持一致性也就成了分布式系统的理论核心。

首先定义这样一个场景,包含四个部分,存储系统(一个黑盒,提供可用性和持久性)、相互独立的客户端A,B,C,对存储系统进行读写操作。这样从客户端的角度来看,一致性共包含以下三种情况:

-    强一致性:A先写一个值到存储系统,存储系统保证后续客户端的读写操作都能读到最新值

-    弱一致性:A先写一个值到存储系统,存储系统不保证后续客户端的读写操作能读到最新值

-    最终一致性:A先写一个值到存储系统,存储系统保证如果后续没有写操作更新同样的值,后续客户端的读写操作“最终”都能读到最新值。“最终”一致性存在“不一致窗口”,长度取决于交互延迟、系统负载、复制协议要求同步的副本数。

最终一致性又可以细分为读写一致性【A写入最新值,A立即看到,而B、C过一会看到】、会话一致性【原有会话维持期间保证读写一致性】、单调读一致性【若A已经读到对象的某个值,之后操作不会读取到更早的值】和单调写一致性【对于同一个客户端,存储系统的多个副本需要按照与客户端相同顺序完成】。

而所有这些一致性,在存储系统看来分为两类:副本一致性和更新顺序一致性。存储系统可以支持强一致性或者最终一致性,而从客户端的角度来看,不满足读写,会话,单调读,单调写等特性的话会导致使用麻烦,使用场景有限的问题。

c)   衡量指标

              i.         性能

系统吞吐能力和系统响应时间两个指标。前者指系统在某一段时间内可以处理的请求总数,用QPS和TPS衡量。后者指从某个请求发出到接收到返回结果消耗的时间,通常用平均延时来衡量。两个目标互相矛盾,设计系统时需权衡这两个目标。

             ii.         可用性

指系统面对各种异常时可以提供正常服务的能力,用系统停服务时间与正常服务时间的比例来衡量。【可用性4个9,则一年停服务的时间不超过52.26min】

           iii.         一致性

           iv.         可扩展性

通过扩展集群服务器规模来提高系统存储容量、计算量和性能的能力,理想的系统应该实现“线性可扩展”。


分布式存储系统学习笔记(一)—什么是分布式系统(1)—基本概念相关推荐

  1. 知识图谱·概念与技术--第1章学习笔记--知识图谱概述--知识图谱的概念,与传统语义网络的区别

    知识图谱·概念与技术--第1章学习笔记--知识图谱概述--知识图谱的概念,与传统语义网络的区别 知识图谱的概念,与传统语义网络的区别 狭义概念 作为语义网络的内涵 与传统语义网络的区别 优点 缺点 与 ...

  2. 大规模分布式存储系统 - 读书笔记

    文章目录 大规模分布式存储系统(原理解析与架构实战OceanBase) 第1章 概述 1.1 分布式存储概述 1.2 分布式存储分类 第一篇 基础篇 第2章 单机存储系统 2.1 硬件基础 2.1.1 ...

  3. HBase分布式存储系统学习

    简介: hadoop的数据库,根据谷歌的bigtable论文实现的 分布式的可扩展的大数据存储技术 随机访问 实时读写海量数据 存储数'十亿行 百万例'的数据 高性能.高可靠.面向列.可伸缩的分布式存 ...

  4. 分布式文件与分布式存储系统学习总结(持续更新)

    存储系统知识 Write Ahead Log 问题引入 存储系统在运行过程中,每时每刻都在发生数据更新.如对文件数据的CRUD. 对于中心控制节点来说,这些都会涉及到metadata的更新操作. 为了 ...

  5. Unity DOTS 学习笔记2 - 面向数据设计的基本概念(上)

    上一章,我们安装了ECS套件,也进行了一些介绍,但是比较笼统.没有一些基础知识储备,很难开始编写代码.本章首先翻译和整理了部分Unity官方的DOTS知识,需要对面向数据有更深刻的认识. DOD知识准 ...

  6. 数字IC设计学习笔记_静态时序分析STA_ STA基本概念

    数字IC设计学习笔记 STA基本概念 1. STA基本概念 2. 时序弧概念 Timing Arc 3. 建立时间和保持时间概念 4. 时序路径概念Timing Path 5. 时钟域概念clock ...

  7. Java微服务学习笔记(一):微服务架构的概念理解

    Java微服务学习笔记 Tips:入门学习时粗略整理,仅供参考 (一):架构的基础理解 文章目录 Java微服务学习笔记 前言 一.微服务是什么? 二.常用开源微服务框架演化 1. Dubbo 2. ...

  8. 大数据存储系统学习笔记(一)

    1. NFS 设计目标:服务器出现故障,可以简单快速地恢复 NFS Server不保持任何状态,每个操作都是无状态的 如果NFS崩了,只用重启,什么额外操作都不用,因为每个操作无状态 NFSv2 对于 ...

  9. torch分布式训练学习笔记

    分布式通讯包 - torch.distributed 基本 初始化 TCP初始化 共享文件系统初始化 环境变量初始化 组 点对点通信 集体功能 torch.distributed提供了一种类似MPI的 ...

  10. 分布式协议学习笔记(一) Raft 选举

    Raft官网 官方可视化动画1 官方可视化动画2 论文中文翻译 论文英文地址 感觉作为paxos的升级精简版 Raft在设计之初就以容易理解为目标 看完资料 脑海里都有了大概的轮廓. 有了这些详细的资 ...

最新文章

  1. 的union_C语言“隐秘的角落”——union没那么简单
  2. oracle物理DG管理-redo数据传输,应用与三种模式
  3. VC++ ipaddress控件的使用
  4. 数字编码电位器c语言,数字电位器——x9c104
  5. php的完整代码块,简单测试了一下php中的代码块、内部类等知识
  6. 计算机网络之网络概述:2、标准化工作及其相关组织
  7. 再聊Spring Bean的生命周期
  8. 消息称ARM CEO已辞职 与660亿美元卖身NVIDIA失败无关
  9. 最难面试的IT公司之ThoughtWorks代码挑战——FizzBuzzWhizz游戏(C#解法)
  10. 为什么黑客都用python-为什么大多数黑客都使用Python!
  11. .net 导出excel_.NET Core一行代码导入导出Excel生成Word
  12. 蘑菇街直播实战技巧带你解决直播开发难题
  13. 虹软人脸识别java调用依赖Cant‘t find dependent library错误,需安装vc2013运行环境
  14. 全球及中国网络教育行业商业模式与运行前景分析报告2022版
  15. prevent to do sth 与 prevent sb (from) doing 用法
  16. 百度网盘机器人好友群组消息虚拟商品自动发货回复软件机器人助手
  17. docker开启两个MySQL容器_Docker下运行两个Mysql5.7容器
  18. 【2019.06.21】基于Airtest的微信朋友圈自动点赞脚本设计与实现 2019.06.21脚本正常运行
  19. CentOS7快速配置服务器网卡聚合双bond方法
  20. rk键盘快捷键快捷键不一致_使用键盘快捷键立即搜索您的终端历史记录

热门文章

  1. ajaxFileUpload 异步上传文件简单使用
  2. 烧写树莓派系统,SSH配置,无屏登录流程
  3. Java输出字符串格式问题 .UnknownFormatConversionException
  4. windows2008下运行环境部署(iis,ftp,oracle)
  5. 使用Java实现简单串口通信
  6. CSS设置中文字体无效乱码问题
  7. 淘宝最新签名算法分析(1)
  8. 常用Android模拟器的默认监听端口(转载)
  9. 每天一道剑指offer-包含min函数的栈
  10. 2014清华计算机系直博名单,2014年清华大学外校推免名单.pdf