1、大型网站特点


高并发、大流量
PV
日均IP
UV
日活跃
高可用
可收缩
海量数据
快速迭代,发布频繁
高安全


2、演化过程
2.1、应用服务和数据服务分离。
   典型的,应用服务 + 数据库服务 + 文件服务

2.2、增加缓存,改善网站性能。
   根据二八定律,百分之80的业务访问集中在20%的数据上,所以需要对那20%的数据缓存在内存里,以提高访问速度,减少数据库的访问。缓存又分为本地缓存和远程分布式缓存服务器。

2.3、应用服务器集群改善并发处理能力。通过负载均衡调度服务器,来分担多用户的访问压力。

   通过增加服务器来不断改善系统的性能,从而达到可伸缩的目的。
2.4、数据库读写分离。
   master-slave 架构 master写数据,slave读数据,然后master数据同步到slave集群中。

2.5、CDN加速/反向代理服务器
   不同地区网站访问速度不一样,CDN是指部署在网络提供商的机房,用户在请求网站时候,可以从距离最近的网络机房把数据返回给用户。
   反向代理服务器是指,部署在网站的中心机房,当用户请求网站到达网站机房的时候,首先访问反向代理服务器,如果代理服务器缓存了用户的请求直接返回。

2.6、分布式文件系统和分布式数据库系统。
   分布式数据库是读写分离不能满足需求了,需要按照业务拆分数据库,将不同业务的数据库部署到不同的物理机器上。


3、 大型网站架构要素

3.1、性能
一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。
单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。
系统吞吐量几个重要参数:TPS、并发数、响应时间
        TPS:每秒钟request/事务 数量
        并发数: 系统同时处理的request/事务数
        响应时间:  一般取平均响应时间
TPS = 并发数/平均响应时间
性能计数器,描述服务器或者操作系统的一些数据指标,包括System load,对象,线程数目,内存使用,CPU使用,硬盘网络IO

3.2、可用性
    网站高可用性的手段是冗余,应用服务部署在不同的机器上,通过负载均衡来组织成一个集群,提供对外服务,数据存储通过多台服务器相互备份,任何一台服务器宕机,都不能影响整体访问。
     衡量一个系统架构是否满足高可用的目标,就是假设系统中任何一台或者多台服务器宕机时,以及出现各种不可预期的问题时,系统依然可用。

3.3、伸缩性
     对于一个服务器集群系统,当当前系统不能满足日益增长的用户时候,是否容易新增新的服务器(横向扩展)。加入的新服务器是否可以提供和原来服务器毫无差别的服务。

3.4、可扩展
     随着网站快速发展,功能的不断增加。网站架构是否满足新增的需求,不影响当前产品。不需要修改任何改动或者很少改动现有业务就可以上线新产品或者新需求,不同产品之间是否很少耦合,一个产品改动对其它产品无影响。
     网站可扩展架构的主要手段是事件驱动架构和分布式服务。

3.5、安全


4、网站高性能架构
4.1、高性能网站的几个重要指标
   响应时间,并发数,吞吐量,性能计数器。
吞吐量 (TPS) 和性能计数器的关系,随着 吞吐量 的增加,系统资源增加,当到达系统资源临界点的时候,TPS急剧烈下降,如果TPS是纵坐标,系统资源是横坐标,整个曲线就是个抛物线状。
并发数和响应时间的关系。随着并发数的增加,响应时间也同时增加,当到达系统崩溃点的时候,系统崩溃,用户失去响应。如果并发数当做横坐标,响应时间当做纵坐标,整个曲线就是个向上的陡坡。

4.2、性能测试报告
  随着并发数目的增加,主要考察响应时间,TPS,错误率,load,以及内存,cpu系统资源的消耗情况。


5、网站高可用架构
 5.1、高可用的应用
      通过负载均衡进行无状态服务的实效转移。
      负载均衡,在业务量和数据量较高的情况下,当单个无服务器不足以承担所有负载压力的情况下,通过负载均衡手段,将流量和数据分摊到一个集群组成的多台服务器上。
      通过专门的session来进行有状态服务的管理

 5.2、高可用的服务
      分级管理
      超时设置
      异步调用

 5.3、高可用的数据
      CAP理论:CAP理论是分布式数据库中很重要的理论基础。CAP即Consistnecy 一致性,Avaliability 可用性,Partition-tolerance分区容忍性 的缩写。在分布式系统中,三者不可兼得,只能得到其中之二。


6、网站的伸缩性设计
 6.1、不同功能进行物理分离实现伸缩

 6.2、相同功能通过集群实现伸缩

 6.3、负载均衡类型
      HTTP重定向负载均衡
      DNS域名解析负载均衡
      利用DNS处理域名解析请求的同时进行负载均衡。在DNS服务器中配置多个相同的A记录
      比如:
      www.mysite.com IN A 114.100.80.1
      www.mysite.com IN A 114.100.80.2
      www.mysite.com IN A 114.100.80.3
      www.mysite.com IN A 114.100.80.4
      A记录中配置多个服务器构成一个集群。
      IP负载均衡
      数据链路负载均衡

 6.4、负载均衡算法
      轮询,所有的请求依次分发到每台服务器上,每台服务器请求的数目都相同
      加权轮询  根据硬件性能加权
      最少连接,记录每个应用服务器正在处理的连接数(请求数),将新到的请求分发到最少连接的服务器上。
      源地址散列。

6. 5、分布式缓存技术
 redis