封面图
嗨!大家好啊,我是阿壮,一个充满正能量的程序员。今天和大家聊一聊大数据
什么是大数据
大数据顾名思义,就是庞大的数据,这里的庞大是指数据量至少是千万级别。在这种场景下,每一行代码都有它的作用,比如我们平时的 CRUD 在大数据场景下一不留神就会导致接口响应超时。
阿壮在工作中也会接触大数据的场景,有一次看了一下所在公司的数据量,Elasticsearch 中的数据大概有几十亿,数据库中的数据最多的一张表有七千万条。系统的并发并不大,但是数据量比较大。经常应为某块代码效率太低,导致接口请求超时,普通的一次查询都要使用线程池,普通优化也是杯水车薪。
常见的解决方案
- 数据库分库分表
- 使用消息队列,例如 Kafka,削峰
- 使用搜索引擎,例如 Elasticsearch
- 减少 IO 操作,能一次查完在在内存中处理数据结构的就不要多次到数据库查
- SQL 优化,例如减少子查询
- 使用缓存,例如 Redis
- 分布式微服务,例如 Spring Cloud Alibaba
- 使用高效的算法
- 善于使用线程池,例如 JUC
- 在适合的场景下使用懒加载
- 控制接口数量,没必要的情况下就不要接口
- 特别注意有循环的代码,及时排坑,避免请求超时
- 使用云托管,减少服务器压力,例如阿里 OSS
- 大数据框架,例如 Hadoop
总结
一个系统是从简单到复杂的过程,数据量必定会在软件的发展过程中越来越大,不可避免的会接触到大数据的场景。学习好大数据是很有必要的,不仅可以提升我们的技术能力,也可以在工作面试中贴金。
我是阿壮,微信搜一搜: 科技猫,关注这个充满正能量的程序员,我们下期间
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。