请教下微服务间大批量数据获取一般是如何处理的

查看 57|回复 7
作者:gibber   
比如 a 服务需要从 b 服务获取几十万的数据处理后生成自己的业务数据,如果 b 服务直接从数据库中一次性查出来返回,对内存的压力就很大。
现在的方案是使用分页,每次最多 1 万条记录,获取一批处理一批,把整个业务处理的时间拉长了。
想知道还有没有更好的办法
ZGame   
1.内存压力大?一个作业才几十万数据。。 如果怕影响 a 库业务性能,直接给 a 库做一个从库,从从库里拉数据。
2.走 cdc 那种从日志里读取,这种时效性会好点。我是感觉没必要
csys   
1.
b 服务把数据保存成文件
a 服务下载文件后进行处理
2. kafka/cdc
securityCoding   
单独落离线表,明令禁止直接从线上业务表捞数据
ymz   
kafka
m2276699   
数据源之间冗余
xiaohupro   
时间线拉长应该是由于同步导致的吧,查一万处理一万。可以把查处来的数据立马丢给 Kafka 或者 Rabbit MQ 这类消息队列,A 服务监听队列,只要有数据就一直处理,这样应该会分批同步处理快一些。
sagaxu   
这是两个步骤
1. b 服务从 db 获取几十万条数据
2. a 服务从 b 服务获取完整数据
第二个步骤在分页之后,从 1 次 rpc 变成几十次,内网 rpc 的开销是毫秒级的,几十次 rpc 增加几十毫秒,不会显著拉长处理时间。
那问题就出在第一步,db 端分页之后,几十次小量查询,开销远大于单次全量。这种情况就不建议分页,而是分批,b 服务一次查询分批读取,写入文件或者消息队列等暂存设施,返回给 a 的是数据的指向,a 自己再分批读取
您需要登录后才可以回帖 登录 | 立即注册

返回顶部