分布式系统笔记(存储和计算) | 青训营笔记

129 阅读5分钟

前言

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

以下是最近看分布式架构摘录的一些要点,书籍《从零开始学架构》

存储高性能要点:

  • 高性能数据库集群的第一种方式是“读写分离”,其本质是将访问压力分散到集群中的多个节点,但是没有分散存储压力。
  • 数据库读写分离需要考虑“复制延迟”带来的复杂性。
  • 数据库读写分离的分配机制有两种实现方式:程序代码封装和中间件封装。
  • 高性能数据库集群的第二种方式是“分库分表”,既可以分散访问压力,又可以分散存储压力。
  • 业务分库指的是按照业务模块将数据分散到不同的数据库服务器。
  • 业务分库会引入joi操作问题、事务问题、成本问题三个复杂度相关的问题。数据库分表分为垂直分表和水平分表。
  • 垂直分表引入的复杂性主要体现在表操作的数量要增加。
  • 水平分表引入了路由、join操作、count(操作、order by操作等复杂度问题。
  • K-V存储在数据结构方面相比关系型数据库具备较大的优势。
  • 文档数据库最大的特点就是no-schema,可以存储和读取任意的数据。
  • 列式存储在某些场景下能够大大节省I/O.
  • 列式存储具备很高的压缩比,能够节省存储空间。全文搜索引擎的基本原理是倒排索引。
  • 为了让全文搜索引擎支持关系型数据的全文搜索,需要做一些转换操作,即将关系型数据转换为文档数据。
  • 缓存穿透是指当业务系统查询的数据在存储系统中没有的时候,每次查询都会访问存储系统。
  • 缓存雪崩是指当缓存失效(过期)后引起系统性能急剧下降的情况。缓存热点指大部分甚至所有业务请求都命中同一份缓存数据。

计算高性能要点:

  • PPC 模型 每次有新的连接就新建一个进程去专门处理这个连接的请求。
  • TPC模型:每次有新的连接就新建一个线程去专门处理这个连接的请求。
  • Reactor模型的基础是I/O多路复用。
  • Proactor模型是非阻塞异步网络模式。
  • 常见的负载均衡系统有3种:DNS负载均衡、硬件负载均衡和软件负载均衡。
  • DNS是最简单的也是最常见的负载均衡方式,一般用来实现地理级别的均衡。
  • 硬件负载均衡用于实现集群级别的负载均衡。
  • 软件负载均衡用于实现机器级别的负载均衡。
  • 负载均衡算法分为:任务平分类、负载均衡类、性能最优类和Hash类。

CAP理论:

  • CAP理论三个核心要素:一致性、可用性和分区容忍性。
  • CAP理论指分布式系统中涉及读写操作时,一致性、可用性、分区容忍性三个要素只能保证两个,另外一个必须被牺牲。
  • 分布式系统理论上不可能选择CA架构,只能选择CP或AP架构。
  • CAP关注的粒度是数据,而不是整个系统。
  • CAP是忽略网络延迟的。
  • 正常运行情况下,不存在CP和AP的选择,可以同时满足CA.
  • CAP中放弃某个要素并不等于什么都不做,需要为分区恢复后做准备。
  • ACID的应用场景是数据库事务,CAP关注的是分布式系统数据读写。
  • BASE是CAP理论中AP方案的延伸。

存储高可用:

  • 主备架构中的“备机”主要还是起一个备份作用,并不承担实际的业务读写操作。主从架构中的主机负责读写操作,从机只负责读操作,不负责写操作。
  • 主备倒换和主从倒换架构的复杂点主要体现在:状态判断、倒换决策和数据冲突修复三方面。
  • 主主复制架构必须保证数据能够双向复制,而很多数据是不能双向复制的。
  • 根据集群中机器承担的不同角色来划分,集群可以分为两类:数据集中集群、数据分散集群。
  • 数据集中集群可以看作一主多备或一主多从,但复杂度比主备或主从要高出很多。
  • 数据分散集群中每台服务器都会负责存储一部分数据和同时也会备份一部分数据。数据分区主要应对地理级别的故障。
  • 数据分区的复制规则分为集中式、互备式和独立式。

计算高可用:

  • 主备架构是计算高可用最简单的架构,可以细分为冷备架构和温备架构,常用温备架构。
  • 计算高可用的主备架构也比较适合与内部管理系统、后台管理系统这类使用人数不多、使用频率不高的业务,不太适合在线的业务。
  • 主从架构与主备架构相比,发挥了硬件的性能,但设计要复杂一些。
  • 高可用计算的集群根据集群中服务器节点角色的不同,可以分为对称集群和非对称集群。
  • 对称集群中每个服务器的角色都是一样的,都可以执行所有任务。
  • 非对称集群中的服务器分为多个不同的角色,不同角色执行不同的任务。
  • 非对称集群相比负载均衡集群,设计复杂度主要体现在任务分配策略和角色分配策略会更加复杂。