我们有一个网络服务,允许固定数量的用户查看每天早上收集和插入的每日位置数据。我们还允许访问历史。
我们的测试环境包括两台负载均衡的web服务器,一台主mysql,两台负载均衡的mysql从服务器。出于开发目的,这可以正常工作,但只有大约 50 个用户同时处理数据。
我们很难规划在用户负载范围内维持正常运行时间所需的服务器架构。我们的限制是众所周知的,包括每天插入的数据量。
考虑到我们需要在不到 10% 的时间内访问历史数据,我们设计系统的最佳架构是什么?
已知情况:
- 我们的用户设置为 125,000,估计每天有 5,000 到 20,000 活跃,并且不会改变。
- 我们的服务每天收集大约 5,760,000 条信息记录。(如果我们将所有数据压缩成一个每日表,可以压缩到大约 120,000 条每日记录,我们被告知这是一个很大的不,不“所以规范化它”)
- 用户可以随心所欲地浏览他们的历史信息,但他们通常只对他们的每日和每周、每月信息感兴趣。
- 我们不需要非常快的数据检索
- 用户可以根据需要查看历史数据(想想地下天气,查看 1960 年以来的温度)
- 我们的数据聚合是非常可预测的。到目前为止,我们拥有长达 5 年的信息,数据库大小约为每年 80GB,包括索引
- 尽管用户极少访问超过 1 年的任何数据,但我们仍然希望提供该功能。
- 用户可以选择接收包含每日、每周和每月信息的电子邮件,因此我们还将每天处理一次获得的数据以发送电子邮件。
测试环境:
我们目前有一个大型 ec2 实例,标准 500gb ebs 在所有表上使用 mysql 和 innodb,并有两个小型从属服务器用于读取。
我们包含用户信息的表格将位于单独的服务器中。
让不同的数据库服务器将当前月份的数据保存在一个中,将历史数据保存在另一个中是否可行?还是将其保存在与主动访问的数据相同的服务器的单独表中更好?我们考虑为数月的活动数据(7GB)配备一个单独的小磁盘高内存数据库服务器,当它变成历史数据时,我们将其移至另一台服务器
我们听说过集群,但同时也听说要远离它,除非用尽所有其他选择。