动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

大数据高并发的解决方案汇总

08-06 11:17 1968浏览
举报 T字号
  • 大字
  • 中字
  • 小字

海量数据解决方案

1.使用缓存:

使用方式:

(1)使用程序直接保存到内存中。主要使用Map,尤其ConcurrentHashMap。

(2)使用缓存框架。常用的框架:Ehcache,Memcache,Redis等。

最关键的问题是:什么时候创建缓存,以及其失效机制。

对于空数据的缓冲:最好用一个特定的类型值来保存,以区别空数据和未缓存的两种状态。

2.数据库优化:

(1)表结构优化。

(2)SQL语句优化,语法优化和处理逻辑优化。可记录各语句执行时间,有针对性的分析。

(3)分区

(4)分表

(5)索引优化

(6)使用存储过程代替直接操作

3.分离活跃数据

例如用户,可以分为活跃用户和不活跃用户。

4.批量读取和延迟修改

高并发情况可以将多个查询请求合并到一个。

高并发且频繁修改的可以暂存缓存中。

5.读写分离

上图,数据库服务器配置多个,配置主从数据库。写用主数据库,读用从数据库。

6.分布式数据库

将不同的表存放到不同的数据库中,然后再放到不同的服务器中。有些复杂问题,如:事务处理,多表查询。

7.NoSql和Hadoop

NoSql,not only SQL。没有关系型数据库那么多限制,比较灵活高效。

Hadoop,将一个表中的数据分层多块,保存到多个节点(分布式)。每一块数据都有多个节点保存(集群)。集群可以并行处理相同的数据,还可以保证数据的完整性。

高并发的解决方案

1.应用和静态资源分离。

将静态资源(js,css,图片等)放到专门的服务器中。

2.页面缓存

将应用生成的页面缓存起来可以节省大量cpu资源。

对于部分页面经常变换数据的,可以使用ajax来处理。

3.集群和分布式

集群,多台服务器具有相同的功能,主要起分流的作用。

分布式,将不同的业务放到不同的服务器中,处理一个请求可能需要多台服务器,进而提高一个请求的处理速度。

又分为静态资源集群和应用程序集群。后者较复杂,经常要考虑session同步等问题。

4.反向代理

客户端直接访问的服务器并不是直接提供服务的服务器,它从别的服务器获取资源,然后将结果返回给用户。

代理服务器和反向代理服务器:

代理服务器是代我们访获取资源,然后将结果返回。例如,访问外网的代理服务器。反向代理服务器是我们正常访问一台服务器的时候,服务器自己调用了别的服务器。

代理服务器我们主动使用,是为我们服务的,不需要有自己的域名;反向代理是服务器自己使用的,我们并不知道,有自己的域名。

5.CDN

CDN是一种特殊的集群页面缓冲服务器,和普通的集群的多台页面缓冲服务器相比主要区别是:其存放位置和分配请求方式不同。

CDN的服务器分布在全国各地,接收到请求后会将请求分配到最合适的CDN服务器节点来获取数据。其每一个CDN节点就是一个页面缓存服务器。

分配方式:并不是普通的负载均衡,而是专门的CDN域名解析服务器在解析域名的时候就分配好的,一般的做饭是:ISP那里使用CNAME将域名解析到一个特定的域名,然后再将解析到的那个域名用专门的CDN服务器解析(返回给浏览器,再访问)到相应的CDN节点。每个节点可能也集群了多台服务器。

动力节点在线课程涵盖零基础入门,高级进阶,在职提升三大主力内容,覆盖Java从入门到就业提升的全体系学习内容。全部Java视频教程免费观看,相关学习资料免费下载!对于火爆技术,每周一定时更新!如果想了解更多相关技术,可以到动力节点在线免费观看Java高并发视频教程哦!

0人推荐
共同学习,写下你的评论
0条评论
代码小兵286
程序员代码小兵286

45篇文章贡献179882字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java初学者学习方法

代码小兵64503-29 11:46

两道经典算法问题

代码小兵51603-29 13:18

Java中模拟高并发的方法

代码小兵87208-06 11:36

高并发编程基础知识

代码小兵27908-06 11:30

JsonPath使用方法

代码小兵34507-29 13:19

发评论

举报

0/150

取消