高并发问题处理总结

高并发处理大致可以从十个方面考虑:

1、从最基础的地方做起,优化我们写的代码,简绍不必要的资源浪费。

a、避免频繁的使用new对象,对于整个应用只需要存在一个实例的类,我们可以使用单例模式,对于String连接操作,使用StringBuffer或StringBuilder,
   对于工具类可以通过静态方法来访问。
b、避免使用错误的方式,尽量不用instanceof做条件判断。使用java中效率高的类,比如ArrayList比Vector性能好。

2、html静态化

我们通过一个链接地址访问,通过这个链接地址,服务器对应的模块处理这个请求,转到对应的jsp页面,最后生成我们要的数据。但是如果并发量过大,无疑会
加重服务器的压力。严重了甚至会造成服务器宕机。而避免这种情况的方式就是html静态化。减轻服务器压力。

3、图片服务器分离

对于web服务器来说,图片是最消耗资源的,于是我们有必要把图片与页面进行分离。我们把图片放到独立的图片服务器中。这样的架构可以降低提供页面访问
请求的服务器压力,并且可以保证系统不会因为图片的问题崩溃。

4、缓存

具体了解的是mybatis的缓存机制,有两级,以及缓存已经为我们自动开启,是SqlSession级别的,而且我们关闭不了。但是我们可以手动清除。而二级缓存的话
需要我们手动开启,是全局级别的。是mapper级别的,多个sqlsession去操作同一个mapper的sql语句,多个sqlsession可以共用二级缓存,所得到的的数据
会存在二级缓存区域,二级缓存是跨sqlsession的。范围更大,按namespace来划分,多个sqlsession可以共享一个二级缓存。开启二级缓存则需要
cacheEnabled设置为true。
也了解过hibernate的缓存机制,不过不多,它为了避免每次都向数据库中取得数据,我们把用户常常访问到的数据放到内存中,甚至缓存十分大的时候我们可以
把内存中的缓存放到硬盘中。同时还有高级的分布式数据库可以使用,都可以增加系统的抗压力。

5、分批传送

假设在做某项目时,一次传递的参数太多,而且数据库规定一次最多传递的参数最多是三万条,当时有五万条记录。那么如何处理呢,这时候就需要进行分批传送了。
电梯里一次性乘坐不了那么多人,会报超重的bug,那就可以选择分批传送。

6、数据库集群

当面对复杂的应用,用户大量访问的时候,一台数据很快无法满足需求,于是我们就需要数据库集群或者库表散列。我们在应用程序中按照业务和应用或者功能模块
将数据进行分离,不同的模块对应不同的数据库或表。再按照一定的策略对某个页面或者功能进行更小的数据库散列。数据库中散列法是使用计算值来分配表格数据
的方法,它比在整个索引中搜索要好的多。

7、DB优化

四个方面谈数据库优化

8、负载均衡

负载均衡是大型网站解决高负荷和大量并发请求采用的高端解决办法。其中有两个架构可供参考。

(1)、硬件四层交换:

      第四层交换使用第三层和第四层信息包的报头信息。根据应用区间识别业务流,将整个区间段的业务流分配到合适的应用服务器进行处理。

      第四层交换的功能就像是虚IP,指向物理服务器。它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础号上,
      需要复杂的载量平衡算法,在IP世界,业务类型由终端TCP或UDP端口地址来决定,在第四层交换机中应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。

      在硬件四层交换领域有一些知名的品牌可供选择,比如Alteon、F5等,这些产品虽然很贵,但是物有所值,能够提供很优秀灵活的管理能力。yahoo中国当初接近
      2000台服务器,只用了三四台Alteon就搞定了。

  (2)、软件四层交换

      在有了硬件四层交换后,基于OSI模型来实现的软件四层交换也就应运而生。实现原理一致。通常可以使用Linux上的LVS来解决。LVS就是Linux Virtual Server,
      它提供了基于心跳线heartbeat的实时灾难应对解决方案,提供系统的强壮性,同时可供了灵活的虚拟VIP配置和管理能力,可以同时满足多种应用需求。一个典型的
      使用负载均衡策略就是,在软件或硬件四层交换的基础上搭建squid集群,这种思路在很多大型网站包括搜索引擎上被使用,这样的架构成本低而且高性能,还有很强
      的扩张性。随时往架构里增减节点都非常容易。

9、镜像

    镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异。比如ChinaNet和EduNet之间的差异就
    促使了很多网站在教育网内搭建镜像站点,数据进行定时更新或实时更新。这一块有很多专业的现成解决架构和产品可选。也有廉价的通过软件实现的思路,如linux
    上的rsync等工具。

10、CDN加速技术

    CDN的全称是内容分发网络。其目的是通过现有的internet中增加一层新的网络架构,将网站的内容分发到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,
    提高用户访问网站的响应速度。

    CDN的类型特点:

       CDN的实现分三类:镜像、高速缓存、专线。

       镜像站点,是最常见的,它让内容直接发布,适用于静态和准动态的数据同步。但是购买和维护新服务器的费用较高,还必须在各个地区设置镜像服务器,配备专业
       技术人员进行管理与维护,对于大型网站来说,更新所用的带宽成本也大大提高了。

       高速缓存,成本较低,适用于静态内容,internet的统计表明,超过80%的用户经常访问的是20%的网站内容,在这个规律下,缓存服务器可以处理大部分用户的
       静态请求,而原始的服务器只需要处理约20%左右的非缓存请求和动态请求,于是大大加快了客户请求的响应时间,降低了原始服务器的负载。

       CDN服务一般会在全国范围内的关键节点上放置缓存服务器。

       专线,让用户直接访问数据源,可以实现数据的动态同步。

你可能感兴趣的:(java高级部分)