高性能架构初见--分布式架构1| 青训营笔记

53 阅读3分钟

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

分布式概述

基本知识

分布式系统:通俗的讲就是将子任务分布在不同的服务器上执行(这里的服务器代指,因为可能是虚拟的服务器),通过微服务间的相互协作完成特定的任务。常见的应用有分布式计算, 分布式存储等等。

分布式系统的优势在于去中心化(避免单点故障), 低成本(低配置服务器集群或定制型服务器),弹性(配合虚拟化技术,方便快速扩缩容), 可靠性高(弹性与去中心的部分优势的集合加上其他优势),资源共享(利用效率高),带来的挑战: 节点故障的普遍性, 不可靠的网络,异构的机器与硬件环境, 安全问题。

常见分布式系统

  • 分布式存储
    • Google File System:Google开发的分布式文件存储系统。(Google 现已开始使用Colossus作为GFS的升级, Colossus暂未开源。)
    • Ceph:统一的分布式系统,针对对象存储。
    • Hadoop HDFS: 基于GFS架构的开源分布式文件系统,常用于大数据处理。
    • Zookeeper: Zookeeper 主要用来做注册中心,是一个在分布式系统中做配置管理,分布式系统的配置更新之类的中心化的服务框架。
  • 分布式数据库
    • Google Spanner:Google 的可扩展,全球分布式的数据库。
    • TiDB: 国产分布式关系型数据库。
    • HBase: 开源NoSQL分布式数据库。
    • MongoDB:面向文档存储的分布式数据库。
  • 分布式计算
    • Hadoop: 基于MapReduce分布式计算框架。
    • Spark: 基于Hadoop在内存中做存储。
    • YARN: 分布式资源调度

故障模型

这里的故障模型针对的是分布式系统:

  • 拜占庭故障(Byzantine failure):节点可以任意篡改发送给其他节点的数据,在没有其他安全措施的保护下,拜占庭故障会导致所有节点接收到的信息都是不可信的,整个分布式系统完全无法进行正常的通信, 一般发生在出现重大安全事故,或网络服务出现严重问题时。
  • Authentication detectable byzantine failure (ADB): 拜占庭故障的特例,只能篡改本节点的数据,例如内存发生错误。
  • Performance Failure: 收到数据的时间是无法确定的值,可早可晚,可能导致服务的处理变慢(分布式系统:die rather than slow),故障和非故障的叠加态,即不知道是否出现了故障。
  • Omission Failure: 节点收不到数据, 比Performance failure 好处理,因为特征明显,即无响应,但是更严重。
  • Crash Failure: 在Omssion failure 的基础上,假设认为节点停止响应,即持续性的Omission failure, 这经常发生在宕机情景下, 这个在获取机器的状态信息后也好处理。
  • Fail-Stop Failure: 相比Crash即知道错误的状态也知道原因, 而Crash只知道状态。

    常见的分布式系统都不是拜占庭容错的系统,比特币和部分虚拟货币的系统是BFT(拜占庭容错)的。