smart_gateway表是核心业务“网关表”,它支撑着新增或者重新配网的设备的核心数据。以下是,这张表各个区的数据统计。
区域 |
时间 |
---|---|
上海 | 2015/5/26 20:43:19——2020/2/20 15:10:38 |
欧洲(法兰克福) | 2016/5/24 21:2:40——2020/2/20 17:21:29 |
印度(孟买) | 2019/3/19 20:3:40——2020/2/20 17:23:23 |
美西(俄勒冈) | 2015/7/7 16:9:17——2020/2/20 17:30:23 |
美东 | 2019/5/27 17:6:53——2020/2/20 17:34:46 |
西欧 | 2020/1/14 19:33:41——2020/2/20 17:35:46 |
合计 |
备注:统计数据,由于商业机密已删除。
目前,有2100W左右为无效数据,可以将无效数据做一下归档,可以节省出近一半的资源(上海区域很夸张,1900W左右为无效数据)。
新增按照平均2秒新增1条数据(经过观察和对历史数据计算,估算出的新增频率),来计算一个月0.5*60*60*24*30=2,592,000≈130W,按照这样速度计算一年后这张表中就有5000W的数据(业务不增长过快的情况下),所以必须尽快做分库分表。
既然,做分库分表。那么,要分多少个库,多少张表呐?先按理想状态分析,一个database对应一台是数据库服务器,那么,我们假设用16个数据库存放,也就是16个数据库服务器来支撑,每个数据库存放16个smart_gateway的分表,那共有16*16=256张表存放数据,平均每张表存20W条数据,按照这个新增效率10年也无压力。这样,分法有一个好处,后期扩容,将数据库直接copy平滑迁移,理论最大可扩容16台服务器。
另外,这张表冗余了很多字段,有47个字段,属于一张大宽表,这也是另一个读写瓶颈所在,后续可以做调研,如果,改造成本不大可以把大宽表做拆分(表结构如下图)。
————————————————————————————————————————————
————————————————————————————————————————————
2.compare功能,开发定时任务,定时从老smart_gateway表中查询数据和新smart_gateway进行比较,校准数据。
3.做好中间件同步数据的监控日志,记录下所有的同步和更新失败。
后续补充
smart_device_module表数据量比smart_gateway还有多一些,大概是smart_gateway的1.5倍,做smart_gateway策略时,应该把smart_device_module一起做掉。