后台管理系统导出数据拖死业务, 是否应该彻底分开两块系统?

2020-06-01 20:15:00 +08:00
 leaderhyh
场景如下:
SpringCloud 全套, 数据库未分库,主从读写分离;

网关进来根据 api 进 微信微服务 手机 app 微服务, 后台微服务 等, 由这些微服务调用底层的 订单微服务 会员微服务等来完成业务逻辑或者组装数据;

现在后台微服务中的导出会员接口没有控制条数, 一下导出 30w+的会员数据(每个会员还要统计订单情况等), 导致会员微服务挂掉, 进而导致微信微服务无法获取会员信息,无法完成业务(业务要求可用性较高)

我的疑问是: 底层的订单微服务 会员微服务等 是否应该拆成两个, 一个给业务使用, 一个给后台管理系统使用, 且部署分开. 现在比如会员微服务下 MemberController 里面就既有后台增删改查的 又有业务上比如支付时扣减用户余额的, 是否拆开好一点(再次强调:业务要求可用性较高!)?求解答, 谢谢!
4710 次点击
所在节点    Java
35 条回复
neptuno
2020-06-01 23:59:53 +08:00
搞个从库
coderabbit
2020-06-02 01:06:53 +08:00
我 mysql 实时同步 mongo.50 万数据 20 秒左右导出。一点不拖累服务!
aru
2020-06-02 07:27:28 +08:00
@leaderhyh 预算问题可以去每次动态申请一台抢占式实例去做这个事情,做完了就释放
snappyone
2020-06-02 07:50:38 +08:00
@leaderhyh 不是异步,重点是不要一次拉 30 万条
xuanbg
2020-06-02 08:39:18 +08:00
可以按导出需求做个小小的数仓,然后从数仓导出数据就不会影响到业务,而且导出速度也能提升到毫秒级。
ytmsdy
2020-06-02 10:19:15 +08:00
一次性导出 30w+的会员数量这个操作,应该是规避的高风险操作吧。
毕竟一次性导出这么多数据,除了拿出去卖,我想不到还有什么场景会用到这么多数据。
arthas2234
2020-06-02 10:42:59 +08:00
你如果是需要频繁导出的话,最好单独做一张表用来保存这些数据,到时候直接查出来就行了
zoharSoul
2020-06-02 11:25:03 +08:00
会员微服务挂掉 是什么意思?
内存溢出了?
EastLord
2020-06-02 13:58:18 +08:00
流式下载不行吗
leaderhyh
2020-06-02 19:24:26 +08:00
@snappyone 是异步生成文件 生成时每次处理 2000 条
leaderhyh
2020-06-02 19:25:12 +08:00
@leaderhyh 额, 我是指买 ecs 的钱, 这块预算不够
leaderhyh
2020-06-02 19:25:32 +08:00
@aru 额, 我是指买 ecs 的钱, 这块预算不够
leaderhyh
2020-06-02 19:26:47 +08:00
@EastLord 后面考虑 目前接触这块的人少且不熟练
aru
2020-06-02 21:01:58 +08:00
@leaderhyh 我也是指这个。 去试算一下抢占式实例的价格,如果你的计算一天只作一次,每次 1 个小时以内,还是挺便宜的。
leaderhyh
2020-06-03 09:28:18 +08:00
@aru ok 我去看看 thanks

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

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

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

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

© 2021 V2EX