[微服务问题] 请问各位微服务通们!像下面的场景该咋做:产品服务 DB 存产品信息,里面有个创建者字段是用户的 ID;用户微服务 DB 存用户信息,,现在的需求是按照用户昵称或者其他用户相关条件搜索产品,该怎么做?

2021-09-29 13:28:53 +08:00
 qwerthhusn
我现在想到的有三个方案,但是感觉都不好实施!

1. 跨库 join,这种方式最方便,但是有可能后面用户库和产品库不在同一个实例上了,这种方法就不好用了。

2. 先根据用户输入的用户名去用户微服务查询所有满足条件的用户 ID,然后在查询产品的时候作为`in`条件进行查询。。但是如果用户输入的字符串命中了大量的用户的时候,这时候可能会遇到严重的效率问题,甚至直接崩掉。

3. 产品微服务维护一个用户表的副本,这时候就可以快乐的 join 了,有两种方式
* DB 层面,产品库里面也建立一个用户表,通过第三方插件或者软件啥的,只要用户数据库的用户表发生了变化,直接同步到产品库里面去。这种方式我看中,所以有什么软件比较好用呢(数据库都是 MySQL )?
* 应用层面,用户微服务在触发用户信息修改时直接通过某些方式(例如 MQ )发送事件,产品数据库接收此事件,并同步信息到自己的用户表中。



敢问一下 V2 的微服务大手子们,遇到这种情况应该怎么处理?!
683 次点击
所在节点    程序员
2 条回复
xieqiqiang00
2021-09-29 13:56:13 +08:00
直接 limit?
SmiteChow
2021-10-08 17:36:35 +08:00
查两次

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/805127

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX