大数据,多线程及高并发的处理方案

一、数据量太大获取缓慢怎么办?
1、首先从需求的设计和代码层次出发
优化我们写的代码,减少没必要的资源浪费。
优化代码中的SQL语句,这也是重中之重,当查询的数据牵扯到的数据库表比较多时。

2、数据库优化
对于数据库的优化,在此不再做详细探讨。有时间我会再针对数据库的优化整理出一篇文章,大致的方案有如下几点:

1.数据库读写分离。
2.数据库集群和库表散列即分区分表。
3.数据库表结构优化。
4.批量读取和延迟修改
5.SQL语句优化。
6.索引优化。
7.使用存储过程代替直接操作。

3、使用缓存
1.框架自带的缓存:如果你了解hibernate和mybatis的缓存机制那就好办了,大家可参考mybatis一级缓存和二级缓存;
2.缓存的方式还可以通过程序代码将数据直接保存到内存中,例如通过使用Map或者ConcurrentHashMap;
3.另外还有,就是使用缓存框架:Redis、Ehcache、Memcache等。 使用缓存框架的时候,我们需要关心的就是什么时候创建缓存和缓存失效策略(注意:使用缓存的时候还要考虑到缓存服务器发生故障时候如何进行容错处理,是使用N多台服务器缓存相同的数据,通过分布式部署的方式对缓存数据进行控制,当一台发生故障的时候自动切换到其他的机器上去;还是通过Hash一致性的方式,等待缓存服务器恢复正常使用的时候重新指定到该缓存服务器。Hash一致性的另一个作用就是在分布式缓存服务器下对数据进行定位,将数据分布在不用缓存服务器上);

二、多线程高并发如何优化?
1、HTML静态化
我们可以将页面静态化提供访问来缓解服务器压力,能够缓解服务器压力加大以及降低数据库数据的频繁交换。适合于某些访问量过大,但是内容不经常改变的页面,如首页、公告页等;
前后端分离,即前端与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。前端界面的显示是通过后台服务器的接口返回的json数据进行渲染后返回给前端浏览器进行解析执行;
2、图片服务器分离
对于web服务器来说,图片是最消耗资源的,于是我们有必要把图片与页面进行分离,我们把图片放到独立的图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片的问题而崩溃。在图片服务器上,我们可以对不同的配置进行优化。
静态资源部署至CDN上,即直接将静态资源全部存放在CDN服务器上。因为之前项目中的JavaScript,CSS以及img文件都是存放在CDN服务器上,将HTML文件一起存放到CDN上之后,可以将静态资源统一放置在一种服务器上,便于前端进行维护;而且用户在访问静态资源时,可以很好利用CDN的优点——CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
3、负载均衡
1.软/硬件负载均衡
2.本地/全局负载均衡

4、使用nosql和Hadoop技术
5、集群与分布式架构
6、反向代理
客户端直接访问的服务器并不是直接提供服务的服务器,它从别的服务器获取资源,然后将结果返回给用户。
代理服务器和反向代理服务器:
代理服务器是代我们访获取资源,然后将结果返回。例如,访问外网的代理服务器。反向代理服务器是我们正常访问一台服务器的时候,服务器自己调用了别的服务器。
反向代理就是说,用户的请求请求到负载均衡的设备上,负载均衡设备再讲请求分发到空闲的应用服务器上处理,处理完成之后再通过负载均衡设备返回给用户,这样对于用户来说,后来的分发是不可见的。

你可能感兴趣的:(大数据,多线程及高并发的处理方案)