V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DaeDaluS
V2EX  ›  数据库

微服务大量数据的跨库(跨微服务)表关联查询有没有实用的解决方案

  •  
  •   DaeDaluS · 2018-11-25 20:42:53 +08:00 · 9786 次点击
    这是一个创建于 2220 天前的主题,其中的信息可能已经有所发展或是发生改变。

    多个微服务都有独立的 DB 作为数据存储, 现在个别微服务需要查询展示的数据为多个微服务的汇总数据; 也就是需要跨微服务跨库的联表查询; 我知道这样设计是有问题的, 但是现实的业务已经有这种问题需要去解决了。 尽量不干扰数据写入, 只考虑数据读取过程就可以,如果实在没办法,需要干扰数据写入过程的也可以

    不知道各位大佬有没有什么好的解决方案, 或者想法的?

    13 条回复    2018-11-26 13:25:13 +08:00
    iamaprin
        1
    iamaprin  
       2018-11-25 20:53:34 +08:00
    定时任务吧,将汇总数据处理好存表。
    DaeDaluS
        2
    DaeDaluS  
    OP
       2018-11-25 21:09:04 +08:00 via iPhone
    @iamaprin 现在做的类似于云平台,比如查一个用户最近三个月的订单,分别在用户系统和订单系统两个服务模块里;这样的数据没办法做预先的统计。
    最好的是能实时高效的查询那种
    anyele
        3
    anyele  
       2018-11-25 21:57:02 +08:00 via Android
    还是只有不同微服务提供接口查
    HuHui
        4
    HuHui  
       2018-11-25 21:59:40 +08:00 via Android
    redis
    jimages
        5
    jimages  
       2018-11-25 22:29:09 +08:00
    再写一个微服务,去调用这两个微服务,做联表查询,并且做成定时任务。
    megachweng
        6
    megachweng  
       2018-11-25 22:30:21 +08:00 via iPhone
    我的想法是再起个 Quartz 服务,定时调一下基础服务的接口,缓存一段时间
    ghos
        7
    ghos  
       2018-11-26 09:37:50 +08:00
    存的时候多存一份统计数据
    DaeDaluS
        8
    DaeDaluS  
    OP
       2018-11-26 09:43:01 +08:00 via iPhone
    @HuHui 具体怎么个思路呢?要把所有其他库的表都缓存起来?
    DaeDaluS
        9
    DaeDaluS  
    OP
       2018-11-26 09:44:15 +08:00 via iPhone
    @jimages 这个当前微服务想要做的就是这个;但是代码处理麻烦,还可能处理不了,所以才想找一个有效的方案
    DaeDaluS
        10
    DaeDaluS  
    OP
       2018-11-26 09:45:04 +08:00 via iPhone
    @megachweng 数据量大,尤其是业务数据,会经常变,这种做法只能满足基础数据,
    DaeDaluS
        11
    DaeDaluS  
    OP
       2018-11-26 09:45:50 +08:00 via iPhone
    @ghos 存储数据都是其他部门的事情啊……,而且不止一个
    specture
        12
    specture  
       2018-11-26 11:06:19 +08:00
    ETL+OLAP。ETL 过程可以用开源的组件或者商业组件或者自己实现。个人觉得设计上按照你说的没有特别大的问题。
    DaeDaluS
        13
    DaeDaluS  
    OP
       2018-11-26 13:25:13 +08:00 via iPhone
    @specture 能不能具体指导一下;需要哪些组件完成设计;
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4960 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:12 · PVG 09:12 · LAX 17:12 · JFK 20:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.