高并发.大数据--解决方案--几件利器

来源:互联网 发布:天敏网络机顶盒无信号 编辑:程序博客网 时间:2024/05/01 17:43

利器1.多线程处理

利用线程池设计,同时处理多个请求。
线程池中线程个数=CPU个数+1;//对计算密集型的情况适用
如果程序的逻辑处理需要对 DB,IO,redis 有操作。会增加CPU的占用率。

利器2.缓存处理

使用nosql,例如:redis;
设计思路:
存:首先,把巨多请求数据保存在redis中;
然后,使用定时job没3秒钟将redis中的数据保存到db中;
最后,清除本次处理的redis中的数据,3秒后进行下一次处理。
优点:对数据库的操作,有多线程变成了单线程。减轻了数据库压力;
    对调用者,减少了,response的等待时间,因为存redis非常快,可以达到:110000/s次。


查询:

1.巨多查询线程直接从redis中读取数据,并返回给客户端;

2.使用定时job每个30秒钟更新redis中的数据。

优点:对数据库的操作,有多线程变成了单线程。减轻了数据库压力;
  对调用者,减少了,response的等待时间,因为读取redis非常快,可以达到:81000/s次。

利器3.数据库分表设计

对数据量很大的情况,可以使用分表设计。

例如:有一个送花服务,一个月的数据量将达到:20亿条记录。
那么就采取了:每个月一张表,表名:songhua_201401,songhua_201402 等。
同理,也可以使用一年一张表,一天一张表等情况。
    优点:

1.防止产生数据量过大单表;

2.查询时,表中数据少,比较快。

利器4.数据库分库设计

此设计和分表设计是一种意图;分为以下2中情况:

1.多库保存/查询
对于海量数据,采用分库保存,查询。
数据库命名一般带有时间后缀,或序号。如:event_lvzhuhen_01,event_lvzhuhen_02
优点:同分表设计;
2.存/查库分离

即:一个库专门用来存储数据;一个库专门用来查询数据。

优点:可以提升数据库性能,保证数据安全。

问题:需要同步数据:使用定时的存储过程,定时从储存库往查询库中同步数据。


利器5.多台web服务器负载

并发数过大,一台web服务器处理不过来的时候,可以增加web服务器。通过负责均衡,来处理web服务器压力
过大的问题。
一般比较廉价的负载均衡方案是:redis+nginx组合;利用nginx反向代理功能,实现负责均衡。如图:
0 0
原创粉丝点击