DDIA:PART2分布式数据系统读书笔记一

PART2 分布式数据系统

前言

why ?

单机系统的问题

  • 扩展性
  • 容错性高可用
  • 延迟考虑

系统扩展能力的方法

  • 垂直扩展
    • 共享内存架构
    • 共享硬盘架构
  • 水平扩展(无共享结构:分布式)

分布式系统要解决的一些问题:数据复制,数据分区….

第五章 数据复制

why 数据复制?

  • 降低延迟(地理位置访问优化)
  • 可用性提高
  • 提高吞吐量

动态数据实现数据复制的方法

  • 主从复制
  • 多主结点复制
  • 无主节点复制

主从复制

主节点复制、主动/被动复制

原理:

1.客户写数据时,写请求发送给主副本,主副本将数据写入。

2.主节点将数据更改的日志发送给从节点,从节点将其应用到本地,严格执行相同的写入顺序(与主节点相同)。

3.只有主节点可接收写入请求,从节点可以认为只是只读的副本。

支持主从复制的:

  • MySQL
  • PostgreSQL since9.0
  • SQL Server
  • Mongdb
  • Kafka
  • RabbitMQ
  • DRBD(网络文件系统复制块设备)
  • ….

同步/异步 复制

关系数据库可配置,其他只能硬性指定。

  • 同步:主节点等待从节点更新完成再返回结果
    • 优点:可以确保所有数据发生更新,如果主节点发生故障,可从从节点访问到最新的数据
    • 缺点:如果某个从节点发生故障,那么会发生阻塞,写入不成功。

所有的从节点都配置为同步操作不切合实际  阻塞 => 失败

实践中通常是一个结点同步,其他为异步,若同步的结点失败,其他异步的提升为同步。

  • 异步:主节点发送完数据变更消息后立刻返回结果而不等待从节点完成更新
    • 优点:
    • 缺点: