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

2018-11-25 20:42:53 +08:00
 DaeDaluS

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

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

9785 次点击
所在节点    数据库
13 条回复
iamaprin
2018-11-25 20:53:34 +08:00
定时任务吧,将汇总数据处理好存表。
DaeDaluS
2018-11-25 21:09:04 +08:00
@iamaprin 现在做的类似于云平台,比如查一个用户最近三个月的订单,分别在用户系统和订单系统两个服务模块里;这样的数据没办法做预先的统计。
最好的是能实时高效的查询那种
anyele
2018-11-25 21:57:02 +08:00
还是只有不同微服务提供接口查
HuHui
2018-11-25 21:59:40 +08:00
redis
jimages
2018-11-25 22:29:09 +08:00
再写一个微服务,去调用这两个微服务,做联表查询,并且做成定时任务。
megachweng
2018-11-25 22:30:21 +08:00
我的想法是再起个 Quartz 服务,定时调一下基础服务的接口,缓存一段时间
ghos
2018-11-26 09:37:50 +08:00
存的时候多存一份统计数据
DaeDaluS
2018-11-26 09:43:01 +08:00
@HuHui 具体怎么个思路呢?要把所有其他库的表都缓存起来?
DaeDaluS
2018-11-26 09:44:15 +08:00
@jimages 这个当前微服务想要做的就是这个;但是代码处理麻烦,还可能处理不了,所以才想找一个有效的方案
DaeDaluS
2018-11-26 09:45:04 +08:00
@megachweng 数据量大,尤其是业务数据,会经常变,这种做法只能满足基础数据,
DaeDaluS
2018-11-26 09:45:50 +08:00
@ghos 存储数据都是其他部门的事情啊……,而且不止一个
specture
2018-11-26 11:06:19 +08:00
ETL+OLAP。ETL 过程可以用开源的组件或者商业组件或者自己实现。个人觉得设计上按照你说的没有特别大的问题。
DaeDaluS
2018-11-26 13:25:13 +08:00
@specture 能不能具体指导一下;需要哪些组件完成设计;

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

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

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

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

© 2021 V2EX