全部产品

OpenSearch同步数据原理

更新时间:2021-01-19 11:55

注意:这里介绍的是高级版应用的流程。

索引重建(全量数据)

1

由上图所示,触发索引重建后,新版本从开始构建到正常使用需要经过3个阶段:

1.OpenSearch离线将数据从DB拉取到本地(也称DB全量),此时为减轻用户数据库的负载压力,限制数据拉取速度不超过20M/s

2. 当数据库里的数据全部同步到OpenSearch离线后,会继续追加增量数据,增量数据可以包含两部分:

    • API推送的增量,用户在除了DB新增或者更新的数据外,还通过调用OpenSearch流量接口,将部分其他数据推送到OpenSearch中

    • 构建中的增量,新版本在构建中此时用户的DB或者API也可能会有部分数据进入OpenSearch中

3. 离线服务会对数据进行加工(打宽表、做标记),然后将附带元数据信息的数据同步到引擎中,此时为了保护引擎,限制数据推送量不得超过20M/s(注意:这里数据经加工已经附带了元数据,实际的量可能会超过数据库数据的2-3倍)

指标如下

阶段

相关限制

备注

索引重建-从数据源读入数据

20MB/s

数据源原始数据

索引重建-追实时的数据

10MB/s

索引重建-从离线->引擎

20MB/s

加入元数据

实时同步(增量数据)

2

由上图所示,增量数据一共有两部分(DB更新的和API推送的),新数据从源到opensearch一共有3个步骤:

1.用户更新DB(通过DTS服务订阅数据库的binlog实现)或者调用API接口将数据推送到OpenSearch离线,此时主+辅表有1500tps的限制

2. 当数据抵达离线后,会将增量数据更新到已有的大宽表中,此时由于主辅表为N:1的关系,辅表更新一条数据可能会触发主表的多条数据更新,当触发量>=1500tps时,为保证主表的时效性,会将辅表的更新量限速【注:多表join引发的数据同步延迟可点击此处进行查看

3. 离线将带有元数据信息的数据写入到引擎(注:加入元数据后,数据可能会膨胀2-3倍),此时为保护引擎,写入量最大为10M/s

指标如下

阶段

相关限制

备注

源->离线 主辅表一起的tps。不加trigger

1500

实时增量数据从离线写入引擎

10MB

加入元数据

辅表更新触发主表更新tps

1500