如何提高时效性实现解耦

2023-03-05 12:56:20 +08:00
 garibellee
=======================场景=======================
10w+用户每天 15 分钟的数据一天 96 点(未来 5 分钟级别就是 288 点),两个系统( A oracle->B mysql 库是隔离的)之间目前使用 HTTP 同步,两侧 DB 的 I/O 时效性能很差。

=======================疑惑=======================
1 、其实内核就是数据同步,或者请问使用什么样的架构设计会好点,但是由于限制问题可能没有办法直接连接两个库,能用的方案就是 grpc 或者消息中间件

2 、数据库针对这种点数据如何设计表结构,目前这表 100 个字段,数据量大了之后很多问题,但是为了统计还是先这样( p1 p2 )用了。

3 、我现在在类生产环境开发了一套 mock 服务提供给系统进行数据采集,用了 caffeine ,一天伊始模拟 10w 用户浮动数据再异步落库上 JVM 里面缓存占用 670MB ,然后接口调用也考虑缓存一致性问题,但是压力来到我们自己的系统了,入库耗时久,有什么优化方案吗?


======================不成熟的想法===================
1 、订阅 binlog 发送 mq 消息,数据一致性要求高的话做对账,还是异步 mq 失败的话也会重试,还有对账兜底
2 、或者直接 A 系统产生文件然后用 http 传递 binlog 、log 这种
3 、有就是 10w 用户不该再去查询返回,直接 A 系统存好 B 要的 10w 的 ID
943 次点击
所在节点    程序员
4 条回复
opengps
2023-03-05 13:05:53 +08:00
点,用时序数据库来处理更轻松些
另外,传输方式用 http 也有点笨重,http 的头信息甚至可能远大于数据本身了
garibellee
2023-03-05 13:15:23 +08:00
@opengps 我正在看 pg sql 时序数据有损压缩和刚想起来,准备来问有用过时序数据库落地的嘛。
garibellee
2023-03-05 13:17:43 +08:00
@opengps 目前是把 10w 用户 List 96 个点数据分页放在 json 用 http ,这网络带宽够呛,一次数据交互 600MB 起步。
garibellee
2023-03-06 10:32:49 +08:00
但是使用时序的问题就在于, 单次入库无法实现多个时间点的方案(因为可能存在在 p80 修正 p65 数据的情形),那么我用无主键配合不同索引结构,至少写能力不弱,而且没有引入其他中间价成本。但是这周有时间先试试 TSDB 吧,先动起来。
ps 架构设计、数据库选型真的好重要,望山跑死马。

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

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

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

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

© 2021 V2EX