通常老板花钱请我们架构网站的时候,会给我们提出一些目标,诸如网站每天要能承受100万PV的访问量等等。这时我们要预算一下大概需要多大的带宽,计算带宽大小主要涉及两个指标(峰值流量和页面大小),我们不妨在计算前先做出必要的假设:
第一:假设峰值流量是平均流量的5倍。
第二:假设每次访问平均的页面大小是100K字节左右。
如果100万PV的访问量在一天内平均分布的话,折合到每秒大约12次访问,如果按平均每次访问页面的大小是100K字节左右计算的话,这12次访问总计大约就是1200K字节,字节的单位是Byte,而带宽的单位是bit,它们之间的关系是1Byte=8bit,所以1200KByte大致就相当于9600Kbit,也就是9Mbps的样子,实际情况中,我们的网站必须能在峰值流量时保持正常访问,所以按照假设的峰值流量算,真实带宽的需求应该在45Mbps左右。
当然,这个结论是建立在前面提到的两点假设的基础上,如果你的实际情况和这两点假设有出入,那么结果也会有差别。先看我们都需要哪些服务器:服务器,页面服务器,数据库服务器,应用服务器,日志服务器等等。
对于访问量大点的网站而言,分离单独的服务器和页面服务器相当必要,我们可以用ligabcgif/>,然后设置DNS轮循,达到最初级的负载均衡。当然,服务器多了就不可避免的涉及一个同步的问题,这个可以使用rsync软件来搞定。
数据库服务器是重中之重,因为网站的瓶颈问题十有八九是出在数据库身上。现在一般的中小网站多使用MySQL数据库,不过它的集群功能似乎还没有达到stable的阶段,所以这里不做评价。一般而言,使用MySQL数据库的时候,我们应该搞一个主从(一主多从)结构,主数据库服务器使用innodb表结构,从数据服务器使用myisam表结构,充分发挥它们各自的优势,而且这样的主从结构分离了读写 *** 作,降低了读 *** 作的压力,甚至我们还可以设定一个专门的从服务器做备份服务器,方便备份。不然如果你只有一台主服务器,在大数据量的情况下,mysqlmp基本就没戏了,直接拷贝数据文件的话,还得先停止数据库服务再拷贝,否则备份文件会出错。但对于很多网站而言,即使数据库服务仅停止了一秒也是不可接受的。如果你有了一台从数据库服务器,在备份数据的时候,可以先停止服务(slavestop)再备份,再启动服务(slavestart)后从服务器会自动从主服务器同步数据,一切都没有影响。但是主从结构也是有致命缺点的,那就是主从结构只是降低了读 *** 作的压力,却不能降低写 *** 作的压力。
为了适应更大的规模,可能只剩下最后这招了:横向/纵向分割数据库。所谓横向分割数据库,就是把不同的表保存到不同的数据库服务器上,比如说用户表保存在A数据库服务器上,文章表保存在B数据库服务器上,当然这样的分割是有代价的,最基本的就是你没法进行LEFTJOIN之类的 *** 作了。所谓纵向分割数据库,一般是指按照用户标识(user_id)等来划分数据存储的服务器,比如说:我们有5台数据库服务器,那么“user_id%5+1”等于1的就保存到1号服务器,等于2的就保存到2号服务器,以此类推,纵向分隔的原则有很多种,可以视情况选择。不过和横向分割数据库一样,纵向分割数据库也是有代价的,最基本的就是我们在进行如COUNT,SUM等汇总 *** 作的时候会麻烦很多。综上所述,数据库服务器的解决方案一般视情况往往是一个混合的方案,以其发挥各种方案的优势,有时候还需要借助memcached之类的第三方软件,以便适应更大访问量的要求。
如果有专门的应用服务器来跑PHP脚本是最合适不过的了,那样我们的页面服务器只保存静态页面就可以了,可以给应用服务器设置一些诸如appdomain之类的域名来和页面服务器加以区别。对于应用服务器,我还是更倾向于使用prefork模式的apache,配上必要的xcache之类的PHP缓存软件,加载模块要越少越好,除了mod_rewrite等必要的模块,不必要的东西统统舍弃,尽量减少>
如果条件允许,独立的日志服务器也是必要的,一般小网站的做法都是把页面服务器和日志服务器合二为一了,在凌晨访问量不大的时候cron运行前一天的日志计算,不过如果你使用awstats之类的日志分析软件,对于百万级访问量而言,即使按天归档,也会消耗很多时间和服务器资源去计算,所以分离单独的日志服务器还是有好处的,这样不会影响正式服务器的工作状态。
1A类IP地址一个A类IP地址是指,在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为7位,主机标识的长度为24位,A类网络地址数量较少,可以用于主机数达1600多万台的大型网络。2B类IP地址一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码,剩下的两段号码为本地计算机的号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为14位,主机标识的长度为16位,B类网络地址适用于中等规模规模的网络,每个网络所能容纳的计算机数为6万多台。3C类IP地址一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为21位,主机标识的长度为8位,C类网络地址数量较多,适用于小规模的局域网络,每个网络最多只能包含254台计算机。希望这些能帮到你:
按照不同的分类标准,服务器分为许多种,主要有按网络规模、按架构(芯片)、按用途、按外观
1、按网络规模划分
按网络规模划分,服务器分为工作组级服务器、部门级服务器、企业级服务器。
工作组级服务器
用于联网计算机在几十台左右或者对处理速度和系统可靠性要求不高的小型网络,其硬件配置相对比较低,可靠性不是很高。
部门级服务器
用于联网计算机在百台左右、对处理速度和系统可靠性中等的中型网络,其硬件配置相对较高,其可靠性居于中等水平。
企业级服务器
用于联网计算机在数百台以上、对处理速度和数据安全要求最高的大型网络,硬件配置最高,系统可靠性要求最高。
需要注意的是,这三种服务器之间的界限并不是绝对的,而是比较模糊的,比如工作组级服务器和部门级服务器的区别就不是太明显,有的干脆统称为“工作组/部门级”服务器。
2、按架构划分(芯片)
按照服务器的结构,可以分为CISC(复杂指令集)架构的服务器和RISC(精简指令集)架构的服务器:
IA架构服务器(IntelArchitectureServer)-即通常所讲的PC服务器,采用x86(CISC)芯片并且主要采用WindowsNT/Windows2000、Linux、FreeBSD等 *** 作系统的服务器,如IntelPentiumIII(P4)和Intel(P4)Xeon(至强)等。
RISC架构的服务器指采用非英特尔架构技术的服务器,使用RISC芯片并且主要采用UNIX *** 作系统的服务器,如SUN公司的SPARC、HP公司的PA-RISC、DEC的Alpha芯片、SGI公司的MIPS等;
由于RISC架构服务器的性能和价格比CISC架构的服务器高得多。近几年来,随着PC技术的迅速发展,IA架构服务器与RISC架构的服务器之间的技术差距已经大大缩小,用户基本上倾向于选择IA架构服务器,但是RISC架构服务器在大型、关键的应用领域中仍然居于非常重要的地位。
3、按用途划分
按照使用的用途,服务器又可以分为通用型服务器和专用型(或称“功能型”)服务器,如实达的沧海系列功能服务器。
通用型服务器是没有为某种特殊服务专门设计的可以提供各种服务功能的服务器,当前大多数服务器是通用型服务器。
专用型(或称“功能型”)服务器是专门为某一种或某几种功能专门设计的服务器,在某些方面具有与通用型服务器有所不同。如光盘镜像服务器是用来存放光盘镜像的,那么需要配备大容量、高速的硬盘以及光盘镜像软件。
4、按外观划分
按照服务器的外观,可以分为台式服务器和机架式服务器以及刀片服务器
①台式服务器有的采用大小与立式PC台式机大致相当的机箱,有的采用大容量的机箱,像一个硕大的柜子一样,主要分为单塔式和双塔式
②机架式服务器的外形看起来不像计算机,而是像交换机,有1U(1U=175英寸)、2U、4U等规格机架式服务器安装在标准的19英寸机柜里面。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)