1、分库分表 + 读写分离
随着数据量的增长,数据查询平台压力越来越大,原先的单mysql已经不足以支撑业务需求,为此我们对查询平台mysql数据库进行分级分表、读写分离系统改造,从而提高系统并发量。
2、数据的冷热分离架构
在对数据请求进行分析后发现,大部分数据请求来自于当天数据的查询,历史数据查询很少,因此我们决定进行冷热数据分离架构,从而进一步提高数据查询性能。
3、ES + HBase + 内存查询引擎
由于冷数据是逐步增加的,系统运转一段时间后,mysql集群负载越来越大,虽然可以通过不断增加mysql服务器来扩容,但是从成本及性价比等角度考虑,我们决定抛弃mysql,采用elasticsearch + hbase + 内存查询引擎的组合来改造系统。elasticsearch 存储数据查询各种条件,hbase存储全部冷数据。这里有一个先决条件,就是如果要做到对冷数据全部是单表类数据集查询,必须要在冷数据进入NOSQL存储的时候,全部基于ES和HBASE的特性做到多表入库关联,进数据存储就全部做成大宽表的状态。查询的时候先通过自研SQL引擎从ES中获取数据索引,在从HBASE中提取关联全部数据,然后在把数据推到内存中进行内存计算。
4、实时数据加入缓存
考虑到实时数据并不总是变化的,有可能一段时间内数据都没有变化,因此我们对实时数据加入缓存集群来分担查询请求。缓存加入后,90%的查询请求走缓存集群,大大提高了系统的并发能力。