对于大型网站来说,所采用的技术涉及面极其广泛,从硬件到软件、编程语言、数据库、Web服务器、防火墙等各个领域都有了很高的要求,
提高系统高并发性能方案措施:
减少数据库访问次数,文件和数据库分离,大数据分布式存储,服务器的集群负载均衡,页面缓存的使用,nosql内存数据库代替关系型数据库
1.文件服务器集群,
图片、视频、其他下载文件,它们的下载通常是占用网络带宽的罪恶魁首,这些资源一定要独立放在带宽好的文件服务器上,能提供http协议访问地址使用,不至于在下载文件时影响web服务器的cpu运算。
2.Web服务器集群,
不管是windows系统,还是linux系统,单台服务器的性能和资源都是有限的,支持的连接并发数都有上限,
因此必须采用多服务器集群的方法才能提高连接并发数。连接并发数的容量计算也很容易:
连接并发数= 服务器1并发数+服务器2并发数+……+ 服务器n并发数
1:运用LVS+Keepalived进行负载均衡部署(同时防止单点故障,参考:Linux 下 LVS+Keepalived 负载均衡安装)
2:负载均衡后用Memcached 进行集群缓存,并实现Session共享,防止因为负载均衡后Session丢失。
3.数据库服务器集群
通常大型的关系型数据库 oracle ,mysql , sqlserver 都已经提供了集群的功能,但是,由于磁盘读写速度的限制,难以胜任高并发实时性的要求,我们建议使用带有集群功能的内存数据库。
1:优化索引
2:读写主从分离:运用MySQL的MHA来保证数据库系统的高可用.在宕机的时间内(通常10—30秒内),完成故障切换,实现主从分离,再利 用Altas进行读写分离提高数据库性能(参考:Mysql MHA 主从配置+Keepalived测试使用说明 、MySQL+Altas 读写分离测试(Altas 不能用存储过程,Update和Delete必须要有参数))
3:分库:将数据库按照不同的业务进行分库
4:分表:将同一个表,按照不同的业务逻辑进行区分,如订单表可分为1星期内,一个月内,三个月内,一年内,四个不同 的表,正常业务 逻辑最多的都是查询今天或这几天的数据,面其他数据一般都不会查到
4.Gemfire内存数据库
5.负载均衡器
负载均衡服务器分为硬件均衡服务器 和 软件均衡服务器,
目的就是统一提供一个访问入口来访问服务器集群,并且能够动态监控每个服务器的负载,把新的用户请求转给负载小的服务器。
硬件服务器就是直接购买独立的服务器作为负载均衡服务器,例如阿里云已经提供。
软件服务器使用具有代理功能的软件作为转发服务器,比如Nginx,HAProxy,LVS 等等。
6.缓存技术
web服务器与数据库服务器是分布在不同的服务器上的,也就是web程序从数据库获取数据时,通过网络tcp/ip协议进行网络数据传输,当查询的数据量过大时,网络带宽速率很可能变为瓶颈,高并发在线时,将会很大影响整体系统的效率。我们使用缓存技术解决这个问题, 我们根据具体的业务,把数据分为两类:
1、 一类是不经常变的数据,比如表结构,公共设置数据,省市县名录等等,这些数据我们将会作为永久缓存数据,我们将会一次性读取数据库全部记录缓存到web服务器本地长久保存,并且定时检测数据库是否有更新的数据,如果有更新,则再更新本地缓存数据;
2、 另一类是经常变的数据,对于这种数据,需要每次读取时都从数据库读取,往往这类数据也包含海量的数据,读取数据库时将不能一次性读取,只能分页读取,缓存数据保存的时间也不宜太长。
redis:
支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询.