分布式架构 | 青训营笔记

78 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 8 天

概述

分布式系统是计算机程序的集合,这些程序利用跨多个计算节点的计算资源来实现共同的目标。

可以分为:分布式计算分布式存储分布式数据库等。

常见的分布式系统

分布式存储

  • Google File System:Google分布式文件系统
  • Ceph:统一的分布式存储系统
  • Hadoop HDFS:基于GFS架构的开源分布式文件系统
  • Zookeeper:高可用的分布式数据管理与系统协调框架

分布式数据库

  • Google Spanner:google可扩展的全球分布式数据库
  • TiDB:开源分布式关系数据库
  • HBase:开源Nosql数据库
  • MongoDB:文档数据库

分布式计算

  • Hadoop:基于MapReduce分布式计算框架
  • Spark:在Hadoop基础之上,用内存来存储数据
  • YARN:分布式资源调度

故障模型

image.png

从Two Generals' Problem谈握手

两支军队的将军派信使穿越地方领土通信。该问题求解:如何在两名将军派出的任何信使都可能被俘虏的情况下,就进攻时间达成共识。

结论:被证实是无解的电脑通信问题,两支军队理论上永远无法达成共识。

方案一:同时发送N个信使,任何一个达到对方军队都算成功。(多发请求)

方案二:设置超时时间,发送后未在一定时间返回,则加派信使。

共识与消息传递的不同:即使保证了消息传递成功,也不能保证达成共识。

TCP三次握手都是在两个方向确定包的序列号,增加了超时重试,是两将军问题的一个工程解。

时间和事件顺序

image.png

image.png

CAP理论

  • Consistence:一致性,指数据在多个副本之间能保持一致的特性
  • Availability:可用性,指系统提供的服务必须一致处于可用状态,每次请求都能获取到非错的响应——但是不保证获取的数据为最新的数据。
  • 分区容错性:分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障。

CAP往往用于数据库领域,同样可以适用于分布式存储方向。

image.png