分布式场景下数据聚合同步方法及存储介质技术

技术编号:39004923 阅读:17 留言:0更新日期:2023-10-07 10:36
本公开实施例公开了一种分布式场景下数据聚合同步方法及存储介质,其中,方法包括:基于配置文件中配置的待监听消息队列,按照设定周期周期性拉取待监听消息队列内的消息;响应于监听到至少一条消息,获取至少一条消息对应的聚合根标识信息和变更字段;根据聚合根标识信息和变更字段,对至少一条消息进行去重和过滤处理,得到至少一个聚合根标识信息;根据至少一个聚合根标识信息和变更字段,调用对应的业务接口;将待同步数据同步至数据表。本公开实施例实现了对数据表的周期性全量更新,有效避免在单个字段发生更新时就执行单个字段更新操作所导致的资源浪费、ES平台压力大等问题。题。题。

【技术实现步骤摘要】
分布式场景下数据聚合同步方法及存储介质


[0001]本公开涉及数据处理
,尤其涉及一种分布式场景下数据聚合同步方法及存储介质。

技术介绍

[0002]目前,由于ES(Elastic search)具有检索效率高、支持分词场景以及支持多业务源数据的聚合搜索等优点,ES检索应用越来越广泛。
[0003]现有技术中,在业务方有单个字段发生更新时,ES平台需要先查询,再更新,在业务模块多,微服务众多的应用场景中,存在数据更新量大、数据变化快等情况,如果每次发生字段变化都执行查询、更新操作,则对ES平台造成很大压力,对ES平台的性能要求高。

技术实现思路

[0004]本公开实施例所要解决的一个技术问题是:提供一种分布式场景下数据聚合同步方法、装置及存储介质。
[0005]根据本公开实施例的一个方面,提供一种分布式场景下数据聚合同步方法,所述方法包括:
[0006]基于配置文件中配置的待监听消息队列,按照设定周期周期性拉取所述待监听消息队列内的消息;
[0007]响应于拉取到至少一条所述消息,获取至少一条所述消息对应的聚合根标识信息和变更字段;
[0008]根据所述聚合根标识信息和所述变更字段,对至少一条所述消息进行去重和过滤处理,得到至少一个聚合根标识信息;
[0009]根据至少一个所述聚合根标识信息和所述变更字段,调用对应的业务接口;
[0010]响应于通过所述对应的业务接口成功获取到待同步数据,将所述待同步数据同步至数据表。
[0011]在本公开的一些实施例中,根据至少一个所述聚合根标识信息和所述变更字段,调用对应的业务接口,包括:
[0012]响应于所述变更字段存在于两个以上数据表中,触发两个以上所述数据表对应的线程池;
[0013]通过两个以上所述数据表对应的线程池调用对应的业务接口,获取两个以上所述数据表对应的两组以上待同步数据;
[0014]将所述两组以上待同步数据分别同步至对应的数据表中。
[0015]在本公开一些实施例中所述根据至少一个所述聚合根标识信息,调用对应的业务接口之前,所述方法还包括:
[0016]预先在所述配置文件中配置至少一个封装模型,至少一个所述封装模型中存储有聚合根标识信息对应的业务接口。
[0017]在本公开的一些实施例中,所述拉取所述待监听消息队列内的消息,包括:
[0018]获取所述配置文件中配置的单线程拉取消息量和拉取线程数量;
[0019]通过所述单线程拉取消息量和拉取线程数量,拉取所述待监听消息队列内的消息。
[0020]在本公开一些实施例中,所述方法还包括:
[0021]响应于监听到指示消息积压的报警消息,调整所述单线程拉取消息量和/或拉取线程数量;
[0022]根据调整后的单线程拉取消息量和拉取线程数量,拉取所述消息队列内的消息。
[0023]在本公开一些实施例中,所述根据所述聚合根标识信息和所述变更字段,对至少一条所述消息进行去重和过滤处理,得到至少一个聚合根标识信息,包括:
[0024]响应于所述变更字段不是所述配置文件中配置的检索字段,过滤对应的消息,得到过滤后的消息;
[0025]获取所述过滤后的消息中的聚合根标识信息。
[0026]在本公开一些实施例中,所述通过所述对应的业务接口和所述接口参数获取待同步数据之后,还包括:
[0027]响应于通过所述对应的业务接口获取所述待同步数据失败,在第一时间间隔后执行所述调用对应的业务接口的操作;
[0028]若仍无法成功获取到所述待同步数据,将所述至少一个聚合根标识信息添加至异常处理表;
[0029]按照第二时间间隔,重复调用异常处理表中的对应的业务接口,获取至少一个聚合根标识信息对应的待同步数据;
[0030]在成功获取到对应的待同步数据后,将对应的聚合根标识信息从所述异常处理表中删除。
[0031]在本公开的一些实施例中,所述方法包括:
[0032]响应于通过解析至少一条所述消息不能获取到所述聚合根标识信息,通过第三方接口获取所述变更数据对应的所述聚合根标识信息。
[0033]在本公开的一些实施例中,所述按照设定周期周期性拉取所述待监听消息队列内的消息之前,所述方法还包括:
[0034]获取数据库的二进制日志文件,并从所述二进制日志文件中解析得到所述消息;
[0035]将所述消息插入所述待监听消息队列。
[0036]根据本公开实施例的又一方面,提供一种分布式场景下数据聚合同步装置,所述装置包括:
[0037]消息拉取模块,用于基于配置文件中配置的待监听消息队列,按照设定周期周期性拉取所述待监听消息队列内的消息;
[0038]消息解析模块,用于响应于拉取到至少一条所述消息,获取至少一条所述消息对应的聚合根标识信息和变更字段;
[0039]去重和过滤模块,用于根据所述聚合根标识信息和所述变更字段,对至少一条所述消息进行去重和过滤处理,得到至少一个聚合根标识信息;
[0040]接口调用模块,用于根据至少一个所述聚合根标识信息和变更字段,调用对应的
业务接口;
[0041]同步模块,用于响应于通过所述对应的业务接口成功获取到待同步数据,将所述待同步数据同步至数据表。
[0042]在本公开一些实施例中,所述接口调用模块包括:
[0043]线程触发子模块,用于响应于所述变更字段存在于两个以上数据表中,触发两个以上所述数据表对应的线程池;
[0044]第三获取子模块,用于通过两个以上所述数据表对应的线程池调用对应的业务接口,获取两个以上所述数据表对应的两组以上待同步数据;
[0045]同步子模块,用于将所述两组以上待同步数据分别同步至对应的数据表中。
[0046]在本公开的一些实施例中,所述装置还包括:
[0047]配置模块,用于预先在所述配置文件中配置至少一个封装模型,至少一个所述封装模型中存储有聚合根标识信息对应的业务接口。
[0048]在本公开的一个实施例中,所述消息拉取模块包括:
[0049]第一获取子模块,用于获取所述配置文件中配置的单线程拉取消息量和拉取线程数量;
[0050]拉取子模块,用于通过所述单线程拉取消息量和拉取线程数量,拉取所述待监听消息队列内的消息。
[0051]在本公开一些实施例中,所述装置还包括:
[0052]调整模块,用于响应于监听到指示消息积压的报警消息,调整所述单线程拉取消息量和/或拉取线程数量;
[0053]所述消息拉取模块,用于根据调整后的单线程拉取消息量拉取线程数量,拉取所述待监听消息队列内的所有kafka消息。
[0054]在本公开一些实施例中,所述去重和过滤模块包括:
[0055]过滤子模块,用于响应于所述变更字段不是所述配置文件中配置的检索字段,过滤对应的消息,得到过滤后的消息;...

【技术保护点】

【技术特征摘要】
1.一种分布式场景下数据聚合同步方法,其特征在于,所述方法包括:基于配置文件中配置的待监听消息队列,按照设定周期周期性拉取所述待监听消息队列内的消息;响应于拉取到至少一条所述消息,获取至少一条所述消息对应的聚合根标识信息和变更字段;根据所述聚合根标识信息和所述变更字段,对至少一条所述消息进行去重和过滤处理,得到至少一个聚合根标识信息;根据至少一个所述聚合根标识信息和所述变更字段,调用对应的业务接口;响应于通过所述对应的业务接口成功获取到待同步数据,将所述待同步数据同步至数据表。2.根据权利要求1所述的方法,其特征在于,所述根据至少一个所述聚合根标识信息和所述变更字段,调用对应的业务接口,包括:响应于所述变更字段存在于两个以上数据表中,触发两个以上所述数据表对应的线程池;通过两个以上所述数据表对应的线程池调用对应的业务接口,获取两个以上所述数据表对应的两组以上待同步数据;将所述两组以上待同步数据分别同步至对应的数据表中。3.根据权利要求1或2所述的方法,其特征在于,所述根据至少一个所述聚合根标识信息,调用对应的业务接口之前,所述方法还包括:预先在所述配置文件中配置至少一个封装模型,至少一个所述封装模型中存储有聚合根标识信息对应的所述业务接口。4.根据权利要求1所述的方法,其特征在于,所述拉取所述待监听消息队列内的消息,包括:获取所述配置文件中配置的单线程拉取消息量和拉取线程数量;通过所述单线程拉取消息量和拉取线程数量,拉取所述待监听消息队列内的消息。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:响应于监听到指示消息积压的报警消息,调整所述单线程拉取消息量和/或拉取线程数量;...

【专利技术属性】
技术研发人员:李皓雪
申请(专利权)人:贝壳找房北京科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1