亿级流量系统架构之如何在上万并发场景下设计可扩展架构(上)?
亿级流量系统架构之如何在上万并发场景下设计可扩展架构(中)?
亿级流量系统架构之如何在上万并发场景下设计可扩展架构(下)?
互联网面试必杀:如何保证消息中间件全链路数据100%不丢失(1)
互联网面试必杀:如何保证消息中间件全链路数据100%不丢失(2)
统计数据:99%请求为当日数据(热数据),1%请求为历史数据(冷数据)
将今日实时计算出来的热数据放在一个MySQL集群里,将离线计算出来的冷数据放在另外一个MySQL集群里
然后开发一个数据查询平台,封装底层的多个MySQL集群,根据查询条件动态路由到热数据存储或者是冷数据存储
问题:
1).冷数据的数据量不断增长,mysql需要不断扩容
2).分库、分表后,库和表维护麻烦
解决: ES+HBase+内存的SQL计算引擎
先决条件:入库时,冗余字段,避免表关联
步骤: 1). where条件,先走ES的分布式高性能索引查询,ES可以针对海量数据高性能的检索出来需要的那部分数据
2). 将检索出来的数据对应的完整的各个数据字段,从HBase里提取出来,拼接成完成的数据
3). 将这份数据集放在内存里,进行复杂的函数计算、分组聚合以及排序等操作
缓存集群:实时数据每次更新后写入的时候,都是写数据库集群同时还写缓存集群的,是双写的方式
热数据基于缓存集群+数据库集群来承载高并发的每秒十万级别的查询
冷数据基于ES+HBase+内存计算的自研查询引擎来支撑海量数据存储以及高性能查询
热数据查询响应时间:几十毫秒
冷数据查询响应时间:200毫秒以内