05 系统面临的现实问题:大数据团队需要订单数据,该怎么办?

Posted 鮀城小帅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了05 系统面临的现实问题:大数据团队需要订单数据,该怎么办?相关的知识,希望对你有一定的参考价值。

1.所谓大数据

每天如果有100万用户来访问你的APP,积累下来的一些浏览行为、访问行为、交易行为都是各种数据,这个数据量很大,可以称之为“大数据”。

大数据团队每天要做的就是尽可能的搜集每天100W用户在你的APP上的各种行为数据。比如:用户搜索了什么、点击了什么、评论了什么等。以及最为核心的订单数据。

2.大数据团队的数据来源可能带来的问题

大数据团队的数据包含了我们的订单数据,那么这些数据怎么去提取?

最low的做法:直接从订单库里select数据出来。

这种情况下是将订单数据库对外暴露,让大数据团队可以直接访问我们的订单数据库。这种方式下,每次都有几百行的大SQL从数据库里去查数据,这样造成的危害太大了。

问题:几百行的大SQL直接查库,是非常消耗性能的。按照每个月新增千万级订单数据,在不考虑有分库的前提下,很快就能达到亿级数据。而这时候如果跑几百行的大SQL,会导致数据库CPU负载很高,磁盘IO负载很高。而这些负载很高,将导致我们正常的订单系统执行的CRUD操作性能下降。

而此时,如果处在并发访问的高峰期,那么订单系统能承受的了吗?这时一个查询的TPS可能会被拉长到几秒,那么用户的体验如何?系统能承受那么多堆积的请求吗?TPS慢了,单位时间内打在数据库的QPS是不是也会累加起来,一旦超过负载临界点怎么办?

解决方案:

  1. 订单系统定时用MQ将DB数据推到数仓
  2. DB主从复制,通过binlog将数据复制到从库,个别从库给大数据团队专用

以上是关于05 系统面临的现实问题:大数据团队需要订单数据,该怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

02 系统面临的现实问题:日益增加的并发与同步响应延迟

04 系统面临的现实问题:第三方客户系统的对接耦合性太高,经常出问题

每天4亿行SQLite订单大数据测试(源码)

每天4亿行SQLite订单大数据测试(源码)

SQLite单表4亿订单,大数据测试

37 生产案例:基于RocketMQ进行订单库数据同步的消息乱序问题及解决方案