1.目前常用的web服务器有apache,nginx,lighttpd,iis,tomcat等等。
nginx:节省资源、在处理高并发请求时通常可以是APACHE5-10倍。
lighttpd:静态页和图片服务器使用这种。
2.负载均衡:转发请求到后端服务器。是解决高并发量的方法。只要用了集群,那么肯定会用负载均衡。原理如下:
2.1 软件:优点:免费 。
有两种软件,一种工作在网络的第四层,一种是第七层。
lvs/haproxy(四层):所有基于TCP/IP连网服务器都可以负载(WEB、数据库、视频、网站游戏等等)。
nginx(七层):只能做WEB[http协议]服务器负载均衡、使用简单。
2.2 硬件:优点:稳定、性能非常好 缺点:价格昂贵(大型网游服务器需要使用)。
流程:开始客户端请求www.34.com,由于域名是绑定到负载均衡服务器的,因此负载均衡服务器会接收到请求并且通过一定的配置策略(最典型的配置策略,轮询)转发请求到后端服务器。然后Web后端服务器返回数据有两种方式,一种是直接返回给客户端,另一种是返回给负载均衡,再由负载均衡返回给客户端。
前者有两个问题:成本高,因为web服务器要把数据返回给客户端,首先得上外网,那么就得有ip地址,ip地址要买。同时也不安全,因为web服务器暴露在外网上了就很容易受到攻击。
后者问题是:所有返回的数据都需要经过负载均衡服务器,该服务器的处理能力会成为瓶颈。一般采用后者的方案,只要每个负载均衡服务器挂的集群不要太大就行。除此之外,负载均衡还需要对web服务器做健康检查,一旦向某一台web服务器转发请求超过3次失败,则判定该web服务器坏了。
3.反向代理(缓存服务器、网页加速器):网站中的静态的内容可以用反向代理。
原理:开始客户端请求www.34.com,负载均衡服务器接收请求并转发到反向代理服务器,该服务器会先在本地的内存里找有没有缓存数据如果有就直接返回,如果本地没有这次请求的缓存页面或者缓存的页面过期了那么就请求后端WEB服务器,后端服务器再返回数据給反向代理服务器。静态页比较多时要用这个。
反向代理服务器也叫缓存服务器、网页加速器。通常用varnish和Squid,前者用得比较多。
穿透:配置反向代理服务器,不缓存某些请求
varnish
Squid
4.主从复制、读写分离
并发执行300条SQL,一般一个网站70%是select语句,30%是修改的语句 (insert,update,delete),所以一般做读写分离(程序)的MYSQL集群,这个技术是基于mysql主从复(MYSQL)制这个功能。
mysql主从复制:当向主服务器插入记录时,记录会自动同步到从服务器上。从服务器是主服务器的一个镜像,从服务器上的数据和主服务器总是一致的。由Mysql实现。
读写分离:如果是写操作,则连接主服务器,如果是读操作,则连接从服务器。由程序实现。
如果mysql从服务器也很多的话,则在web服务器和mysql服务器之间也需要负载均衡服务器。
服务器。
5.图片服务器:
上传图片:用户提交图片到PHP服务器,由PHP处理图片(缩略图等等),再由PHP把处理好的图片写到图片服务器。
6.选择服务器
服务器档次:(低档)5000-8000元(中档)10000-20000元(高档)20000-40000元。
负载均衡服务器:使用低档的服务器就行,因为它不需要处理请求,只需要转发请求就可以,故只要有个好的网卡,1000M(bit)网卡/万M(bit)网卡。
数据库服务器:一般使用最好的服务器。cpu,内存,硬盘IO要求都很高。
图片服务器:瓶颈是硬盘IO【做磁盘阵列:硬盘的集群】。
做磁盘阵列的类型:
RAID0:至少两硬盘,总的容量是所有硬盘容量的和,数据是分片存储的,如存a,b两个图片,那么a存第一个上,b存到第二个上
RAID1:至少两硬盘,总的容量是一个硬盘的容量,数据是复制存在的,如a,b两个图片,把a,b分别存多块硬盘,所有的硬盘上的数据是一样
RAID5:至少三块硬盘:给合了前两种的特点、冗余很小,而且硬盘坏了还能找回
RAID1+0:性能更好的RAID5,更贵
7.高可用:网站是没有单点故障的危险(任何一台服务器坏了,不影响网站整体的运行)。
为单点服务器做一个备份服务器时行监听即可,一旦主服务器出现故障,从服务器可以直接顶上,并给管理员发短信通知。 软件: keepalived、heartbeat。
另外还需要设置防火墙,挡住一些DOS攻击。