1. 5.分布式系统分区historical

    1. 什么是分区 - 将一份数据分割成多份,保存在不同节点上 - 有两层映射 - 从数据中取出一个字段作为key,然后将key- partition - 接着将partition- machine/node 2. 为什么需要分区 - 数据量太大无法在一个节点存储,需要分散存储 - 数据分散在多个节点

  2. 5.1 分布式系统分区之数据拆分historical

    把 key 尽量平均分配到各个 partition/node 上 1. 拆分key的选择 1.1. 主键ID 比如自增主键。优点是数据分布均匀,缺点是根据业务字段查询慢时需要读取所有分区 1.2. 业务ID 比如用户ID、商品ID等。优点是根据业务字段查询快,缺点是数据分布可能不均匀 1.3. 举例

  3. 5.2 分布式系统分区之请求处理historical

    路由组件把客户端的读写请求,路由到相应partition所在的node 1. 路由组件 路由组件 2. 请求处理 2.1. 新增数据 1. 客户端生成包含sharding key的数据 2. 客户端把新增请求发送给路由组件 3. 路由组件根据sharding key转发到相应的节点 4. 节点新增数

  4. 5.3 分布式系统分区之路由组件historical

    1. client - 客户端本地保存了分区和服务器节点的关系,直接请求到正确的节点 2. proxy - 客户端请求路由层,由路由层负责转发请求到正确的节点 3. server - 客户端请求任意服务器节点,由该服务器节点负责转发请求到正确的节点 4. 举例 - MySQL使用proxy或者cli

  5. 5.4 分布式系统分区之分区分配historical

    把 partition/node 尽量平均分配到各个 machine 上 1. 分配方式 1.1. 静态分配 创建远超machine数目的node, 优点:迁移node到其他machine时,集群可以对外响应 缺点:machine最大数目是固定的 1.2. 动态分配 各个node相互协调,各自负责一