因为想进入互联网公司,然后发现互联网类型的公司问的主要问题都离不开这大数据高并发,这里总结一些面试里大数据与高并发相关的知识,记录前人们的总结方便查阅,如有不妥请联系本人修改或删除,谢谢。
推荐学习网站:
https://developer.aliyun.com/article/61960
https://blog.csdn.net/hyy147/article/details/89676697
https://zhuanlan.zhihu.com/p/152519743
https://www.zhihu.com/question/307100151/answer/894486042

随着网络的普遍,我们的生活慢慢被信息所包围。我们做web开发的,遇到高并发和大数据的情况很正常,那么我们需要怎么做才能解决这些问题?

高并发的解决方案

说到高并发,我们遇到的高并发是如何产生的呢?大家有想过么?并发并发,无外乎是同时访问我们的服务器,服务器处理能力达到上限,整个程序处于高负荷甚至宕机状态,高并发的同时数据库的查询或者数据的存储也相应变多。所以高并发的处理需要处理两个核心点,一个是web服务器问题,另一个就是我们的大数据问题。

第一种:使用集群和分布式

增加web服务器数量,做web服务器集群,通过负载均衡算法,将请求分发给压力小的服务器,使得请求在最短时间内得到响应,避免影响用户体验,集群分布式是大多数公司都使用的常用方式。

集群:在多台服务器集群的前提下,每台服务器的功能是一样的,无论访问哪台服务器都是一样的,主要起到分流的作用。

分布式:将不同的业务分给不同的服务器做,处理一个请求可能用到好几个服务器,使请求得到快速响应,分布式和集群可以用时使用。

第二种:页面静态化

在我们的web里面并不是所有的数据都是时刻变化,有些页面变动很小,我们就可以让这部分的页面存入缓存中,频率变化高的,我们可以使用Ajax来实现数据的更新,这样我们就避免了大量用户对数据库的请求。

第三种:应用和静态资源的分离

这个时候,我们将我们的静态资源(js,html,css等等)放在单独资源服务器上,这样就可以减轻我们应用服务器的压力。

第四种:通过反向代理将别的服务器资源展示给用户

反向代理服务器是我们正常访问A网站的时候,将B网站的信息发给我们。这样极大的减轻了我们服务器的压力。客户端直接访问的服务器并不真正提供服务,它从别的服务器获取资源然后将结果返回给用户

大数据的处理方案:

1, 使用缓存

我们可以将数据放在内存里面,避免每次访问数据库,对数据造成压力。同时使用缓存还能提高查询效率和缩短查询时间。

2,sql语句优化

sql语句的优化很重要,我们需要什么数据就查询什么数据,避免造成不必要的性能浪费。sql语句优化详情,在我的Mysql数据库(三)------mysql优化方案,有想法的可以看看。

3,数据库集群和库表散列

这里仅仅给大家列一个学习的参考提纲,不再提供具体的内容,大家可以自行Google查阅

  • 秒杀系统设计

    (整体架构设计、客户端优化)

  • 数据库

    缓存、分库分表、读写分离、NoSQL、分布式事务、BitMap、布隆过滤器、漏桶令牌桶限流算法、负载均衡、一致性hash)