#独家
一个涉及java微服务接口调用及数据库查询的问题?

2023-06-10 0 3,712

大家好,请看我的问题:
现有微服务A、微服务B,两个服务链接的是不同的数据库而且不在同一个机器上。
微服务A中的数据库人员表(base_user)存放了一万条人员信息,微服务B中需要调用A的接口,将没有调入过的人员列表查询出来(然后在前端勾选后调入到B的sys_user表中)。

我的实现方式是:
首先从B的sys_user中查询出所有的人员id列表,然后通过该id列表调用A的接口,A的接口执行mysql(下面语句省略了分页,实际项目是分页的):

select * from base_user where id not in ('1','2',......)

这种方式在sys_user中人员数量较少的情况下还算可以,但是随着调入人员的增加,A接口的速度越来越慢,因为not in 的id列表太大了。

select * from base_user where id not in ('1','2',此处省略9000个id)

请问大神们,有没有其他的实现方式或者mysql上可以优化的地方呢?
谢谢!

1.分批处理
2.用 JOIN 而不是 IN
3.使用临时表
4.异步处理
5.用缓存

目的是把A服务中的表A(base_user)导入到B服务的表B(sys_user)中去,可以考虑使用消息队列来同步。

表A数据发生变化(增删改操作),发送消息
微服务B消费消息,判断数据,更新变化

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 一个涉及java微服务接口调用及数据库查询的问题? https://www.jkxiazai.com/1798.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务