构建高并发网站架构

大型网站特点
  1. 并发数高,访问量大   http://alexa.chinaz.com
  2. 数据量大
  3. 用户分布广泛,网络环境复杂
  4. 稳定性高
  5. 易于扩展
  6. 安全性高

基础设施
服务器介绍:塔式服务器、机架式服务器、刀片式服务器
虚拟主机、vps(虚拟机)、服务器、云主机
网络设备介绍:交换机、防火墙、路由器
存储设备介绍:SAN、NAS、DAS 
SAN:(Storage Area Network,存储区域网络)通过光纤通道连接到一群计算机上。在该网络中提供了多主机连接,但并非通过标准的网络拓扑。
NAS:(Network Attached Storage,网络连接存储)即将存储设备通过标准的网络拓扑结构(例如以太网),连接到一群计算机上。NAS是部件级的存储方法,它的重点在于帮助工作组和部门级机构解决迅速增加存储容量的需求。
DAS:(Direct Access Storage,直接连接存储)是指将存储设备通过SCSI接口或光纤通道直接连接到一台计算机上。

基础概念
http协议简述 Hyper Text Transfer Protocol
超文本传输协议,端口80、443(加密https)
主流版本为1.1,相比较1.0最大区别在于支持持久化(长连接)支持host请求头字段(一台服务器支持不用域名)
请求方法包括:GET、POST(提交表格、字段到服务器)、HEAD(curl -I www.baidu.com)、PUT(上传图片等文件到服务器)、DELETE、MOVE(301、302跳转)等。。。。
常见状态码:200(正常)301(永久重定向)、302(临时重定向)、304(网站缓存)、401(验证,验证对为200,错为401)、403(禁止访问)、404(服务器上没有这个文件 not found)、500(php脚本错误)、502(nginx找不到后端php)、503(squid代理后端的网站不正常)、504(LANP\LAMP站点Mysql访问过慢,访问出错)

Http Header:request header、response header
HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。
就整个网络资源传输而言,包括message-headermessage-body两部分。
先传递message- header,即http header消息 。
http header 消息通常被分为4个部分:general  header, request header, response header, entity header。
根据*对http header内容的组织形式,大体分为RequestResponse两部分。

referer:先前网页的地址,当前请求网页紧随其后,即来路。当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器藉此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。

useragent:用户代理 User Agent,是指浏览器,它的信息包括硬件平台、系统软件、应用软件和用户个人偏好。

用户访问网站过程:
用户浏览器输入网址--本机DNS服务器解析域名为IP--Web浏览器将请求发送给远程服务器--客户端服务端建立TCP连接--传输数据--关闭连接

网站元素:
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型
设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。
text->html、css、plain
application->javascript
image->gif

URL、URI、URN区别
URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。
URL,是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。
URN,是uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:[email protected]
也就是说,URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。
打开一个网站,查看源代码,搜索href,出现的都是URI。

静态网页、动态网页、伪静态网页

常见Web服务器
apache(httpd)、Tomcat、Resin、IIS、Nginx

量级术语
什么是IP、UV、PV、DAU、MAU
IP:访问网页独立IP(公司里访问一个网站,公司只有一个IP,但是访问人数有100人,那么IP=1,UV=100)
UV:unique visitor,独立访客,一天内相同访客访问同一网站,只算一个独立访客
PV:page view,页面浏览量
DAU:Daily Active User,日活跃用户数量
MAUMonthly active users,月活跃用户数量

并发连接数同时访问服务器站点的链接数
吞吐量 :指对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。

如何评估网站的最大并发连接数?
  1. 专业工具loadrunner
  2. Apache自带压力测试工具ab(临时紧急任务和简单测试
ab -c 100 -n 1000 www.baidu.com/index.php
重要指标
Request per second      每秒请求次数(吞吐量)
Time per request          每个请求花费时间

Web网站的几个并发量级

如何统计网站访问量?
  1. 接入第三方统计平台(CNZZ、51LA、百度统计)
  2. 通过分析访问日志(access.log)做统计awstat

服务器配置预估
  • 8核至强E5 8G内存 (LNMP纯php+mysql架构可以跑300个进程,150并发连接数,响应时间明显变慢,吞吐量不会高于150)
  • 通常所说的并发并不单单是动态并发,还包括静态
  • Discuz论坛一个页面静态内容占据90%以上,不同网站类型动静态所占比例不同。
  • 二八原则:指80%的业务量(PV)在20%的时间里完成。
  • 若动态并发150,静态并发为600,整体并发为750(2:8原则)。
  • 24H*20%*3600S*150/80%=340W PV 包含动态和静态,如果只算动态不要除以80%
  • 真实的PV还需要加上搜索引擎以及其他非人为访问也要占到30%~50%

网站架构角色
构建高并发网站架构