V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qwerthhusn
V2EX  ›  程序员

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

  •  1
     
  •   qwerthhusn · 2021-09-29 13:28:53 +08:00 · 756 次点击
    这是一个创建于 1137 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我现在想到的有三个方案,但是感觉都不好实施!

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

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

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



    敢问一下 V2 的微服务大手子们,遇到这种情况应该怎么处理?!
    2 条回复    2021-10-08 17:36:35 +08:00
    xieqiqiang00
        1
    xieqiqiang00  
       2021-09-29 13:56:13 +08:00
    直接 limit?
    SmiteChow
        2
    SmiteChow  
       2021-10-08 17:36:35 +08:00
    查两次
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1786 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:36 · PVG 00:36 · LAX 08:36 · JFK 11:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.