加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜新站长网 (https://www.0418zz.com.cn/)- 管理运维、AI硬件、数据集成、云备份、负载均衡!
当前位置: 首页 > 站长资讯 > 动态 > 正文

美国宣布开发量子互联网

发布时间:2021-02-18 14:47:31 所属栏目:动态 来源:互联网
导读:增量更新的性能保障 由于在线建索引是非常消耗 cpu 资源的过程,因此为了不影响现网的读服务,worker 仅提供少量的 cpu 资源用于增量数据的更新; 对于小批量的增量数据,worker 可以直接加载存放在 fs 上的数据并直接进行索引的在线插入; 对于大批量的增量
增量更新的性能保障
  •   由于在线建索引是非常消耗 cpu 资源的过程,因此为了不影响现网的读服务,worker 仅提供少量的 cpu 资源用于增量数据的更新;
  •   对于小批量的增量数据,worker 可以直接加载存放在 fs 上的数据并直接进行索引的在线插入;
  •   对于大批量的增量数据,为了避免影响读服务及大增量更新慢的问题,SimSvr 将大批量数据在 trainer 进行合并且并发重建索引,最后再由 worker 直接加载建好的索引。


4. 近实时增量更新的挑战 - 十秒内完成索引的更新

  •  数据一致性与持久化
    •   对于大多数的分布式存储组件来说,都是使用 raft 或者 paxos 等一致性协议保证数据一致性并持久化至本机上;
    •   对于 SimSvr 来说,每张表会被分为多个 sharding,且 sharding 数不保证为奇数;
    •   在 worker 中加入一致性组件及额外的存储引擎,会使得整体的结构变得复杂;
    •   最终在考量后,结合业务的批量增量更新的特点,选择了先将数据落地 fs,再由 worker 拉取数据加载的方案;在这种方案下,1000 以内数量的 key 插入,能够在 10s 内完成,达到了业务的要求。

  • SimSvr 与 FeatureKV 一样,涉及的外部依赖也是三个:
    •   Chubby:用来保存元数据、路由信息、worker 资源信息等;SimSvr 中的数据协同、分布式任务执行均是依赖于 Chubby;
    •   USER_FS:业务侧存放原始数据的分布式文件系统,可以是 WFS/HDFS,该文件系统的路径及信息保存在表/任务的元信息中;
    •   SimSvr_FS:Simsvr 使用的分布式文件系统,用于存放生成的索引文件或者原始的增量数据文件。
  •  worker
    •   负责对外提供检索服务,通过对 Chubby 的轮询检查索引的更新,进而将索引加载至本机以提供服务;
    •   每台 worker 负责的数据,由 master 进行调度,worker 根据 master 保存在 Chubby 上的分配信息进行数据的加载/卸载;
    •   worker 的数据是根据 master 分配得来的,除此之外没有其他状态的差别,因此 worker 是易于扩缩容的。
  •  master
    •   数据调度:通过表的元信息及 worker 状态,将未分配的数据或者失效 worker 上的数据调度给其他有效的 worker;
    •   生成路由表:根据 worker 的数据加载情况及状态,生成集群的路由表;
    •   感知数据更新:检查表的自动更新目录,若最大数字目录发生了增长,则建一个任务以供 trainer 进行索引的构建;
    •   master 是一个无状态的服务,通过 Chubby 提供的分布式锁保证数据调度以及路由生成的唯一执行。
  •  trainer
    •   负责构建表的索引及资源回收;
    •   trainer 单次可构建一张表中一个 sharding 的索引,因此如果表有多个 sharding 时,可通过增加 trainer 的个数实现构建索引的并发加速;
    •   trainer 是无状态的服务,通常部署在微信 Yard 系统上,充分了利用微信闲置机器上的资源。
  •  数据自动更新
    •   在建表时,对其指定了一个 fs 的目录,该目录下,是一系列数字递增的目录;
    •   当业务侧需要更新索引时,将最新的数据 dump 到更大的数字目录中;
    •   master 感知最大数字目录的更新,从而更新了元信息;
    •   trainer 感知元信息的更新并触发建索引;
    •   worker 加载索引完成索引的更新。
  •  数据任务式更新
    •   由业务侧主动通过接口的调用,创建一个索引任务;
    •   在索引任务中,指定了数据的配置信息(如 fs 信息及路径等);
    •   trainer 按照表的任务序列,执行任务并构建索引;
    •   worker 加载索引完成索引的更新。

3.3 数据调度 - 鸡蛋怎么放在多个篮子中

  •     SimSvr 在每张表创建时就指定了 sharding 数 n 及 sect 数 m,因此这张表拥有了 n * m 个 Conatiner 以供 master 调度;
  •     master 会根据 worker 的健康情况及资源使用情况进行数据的调度及路由表的生成;
  •     路由表带有递增的版本号,可根据版本号感知路由的变化。   


 

(编辑:阜新站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读