转帖:网站服务架构

原文地址:http://www.cnblogs.com/jiekzou/p/4677994.html

服务器划分

      
对于访问量大的网站而言,将网站的各个组成部分拆分分别配备至不同服务器上是非常有必要的。例如将图纸与web站点分开。一般而言,在网站的全套服务器部署及分为如下几栽类型:

文件服务器:貌似存储系统的有关图片及文书,给各国个子系统提供联合的文件调用

代理服务器:貌似采用linux+Nginx作为反向代理

web服务器:.net中尽常用之Web服务器IIS,Mono中一般以Nginx

应用服务器:顶住系统中逐一业务逻辑的提供,比如用户核心,结算中心,支付基本等

缓存服务器:提供MemCached缓存服务

数据库服务器:肩负网站数据的供,一般为Sqlserver,mysql,oracle等

带宽的精打细算

      
假设网站每天要经受100万pv的访问量,计算带富要提到到片个指标(峰值流量和页面平均大小),带富单位为bps(bit/s)。

       1、假而峰值流量也平均流量的5加倍;

       2、假设每次访的平分页面大小为100KB左右。

       1B=8b———————1B/s=8b/s(1Bps=8bps)

       1KB=1024B ————- 1KB/s=1024B/s

       1MB=1024KB————1Mps=1024KB/s

      
100万pv访问量一上平均分布,折合每秒大约访问12软,页面大小为字节(Byte),总共访问页面大小就是12*100KB=1200KB,1Byte=8bit,则1200KB=9600Kb,9600Kb/1024大约9Mb/s(9Mbps),我们网站在峰值流量时必要是保持健康访问,则实在带富应该于9M*5=45Mbps左右。

网站架构的演变过程有

企业正启航,业务量不殊,往往可能于某虚拟主机空间商租用一个虚拟主机和一个数据库就搭建了一个极基本的网站

NoSQL 1

网站架构的演变过程的二加缓存

随着业务量增多,用户之访问进一步多,网站经常性的于不开,慢,甚至出现数据库链接达到极致老范围数,这个时节要对网站做片优化策略:

  • 调减Http请求,压缩css,js,图片的大小
  • 拿Microsoft Ajax Minifier集成到VS2010针对性JS,CSS进行编译时压缩
  • 长页面缓存和长数量缓存处理
  • cnblogs上之复苏存全分析
  • 自购服务器进行IDC托管
  • 自购服务器能够提升硬件的水平及带来富得无限制支配,一般还是独享带宽,相比共享带富来说会支持更多的访问量

NoSQL 2

网站架构的演变过程的三充实web服务器

      
当系统访问量的再次增加,webserver机器的压力在高峰会上升及较大,这个时起考虑多一宝WebServer,但是多一光WebServer的时表示一旦于简单贵底服务器上各自立平等的站点,那么即使会见起如下问题:

       如何被走访分配至就片台机械及?Nginx

       如何保障状态信息之同步,例如用户session等?

       正常考虑的方案有描绘副数据库、开启状态服务器、cookie、写副缓存等。

       如何保持数据缓存信息之协同?

       缓存服务器

       如何被上污染文书这些类似之效能继续健康?

       采用文件服务器统一管理

网站架构的演化过程的四瓜分库,分表,分布式缓存

透过多web服务器享受了同一段子快速访问的甜蜜后,发现系同时开始变慢了,经过查找,发现数据库写入、更新的这些操作的有数据库连接的
资源竞争异常强烈,导致了系变慢,这下怎么收拾呢?

分库

分表

Memcache,Redis分布式缓存

NoSQL 3NoSQL 4NoSQL 5

水平分区 VS 垂直分区

水平

垂直

积存依赖

可跨越DB
但过物理机械

唯独超过表空间,不同的物理属性
不能跨DB存储

存储方

分布式

集中式

扩展性

Scale Out(横向扩张,增加有利于设备)

Scale Up(升级设备)

可用性

无单点

存单点(DB数据本身)

价格

低廉

宜,甚至贵

运场景

web 2.0

搭演变过程的五Web园或增又多WebServer

以开得了分库分表这些干活儿晚,数据库及的下压力已经下降到比没有了,这个时节或至了产一个瓶颈,查看windows的特性计数器发现来恢宏的阻隔请求,于是可以开Web园或者加上一些webserver服务器。在这个上加webserver服务器的进程,有或会见冒出如下几个问题:

同一高Nginx服务器的软负载已经力不从心负担巨大的web访问量了,可以就此硬件负载解决F5或采取由逻辑上举行肯定的归类,然后分散到不同之软负载集众多被

固有的局部状态信息并、文件共享等方案可能会见产出瓶颈,需要进行改进,也许这个时候会冲事态编写符合网站工作需要的分布式文件系统等;

当开了这些工作晚,开始上一个类似完美的无限伸缩的时,当网站流量增加时,应对之化解方案就是连连的上加webserver。

搭演变的六朗诵写分离与降价存储方案

经过加web服务器享受了平截快速访问的甜后,发现系统以起来变慢了,经过查找,发现数据库写入、更新的这些操作的有些数据库连接的
资源竞争非常猛烈,导致了系变慢,这生怎么收拾为,读写分离,订阅和发表

NoSQL 6

廉价存储方案Nosql

NoSQL = Not Only SQL
指的好坏关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高起的SNS类型的web2.0彻头彻尾动态网站曾亮力不从心,暴露了无数难以克服的题材,而休关系型的数据库则由该本身的特点得到了要命迅速的进化。

NoSql数据库大量运为微博体系等事务性不强的体系

BigTable

MongoDB 

http://tech.it168.com/topic/2011/10-1/nosqlapp/index.html

搭演变的七进去大型分布式应用时代和降价服务器群梦想时代

经过地方这老而惨痛之经过,终于又迎来了圆满的时,不断的增加webserver就可以支持越来越高之访问量了,但是本部署于webserver上的慌web应用已死庞大
了,当多只组织还从头针对其开展更改时,相当之莫便于,复用性也一定糟糕,基本上每个集体还举行了或多或少又的作业,而且部署及保护也是一定之麻烦,因为大的使包在N台机器及复制、启动都需要耗费多之年华,出题目的时刻啊未是坏好查,另外一个再度糟糕的面貌是异常有或会见现出有应用及的bug就导
致了都站都未可用,还发另的像调优不好操作(因为机器及安排之运用什么还设开,根本就是无法展开对的调优)等要素,根据这样的分析,开始痛下决心,将
系统基于职责进行拆分,于是一个重型的分布式应用就生了,通常,这个手续需要耗费一定丰富的年华,因为会碰到很多底挑战:
1、拆成分布式后需要提供一个强性能、稳定之通信框架,并且需要支持多种不同的通信与长途调用方式;
2、将一个特大之运拆分需要消耗很丰富的时刻,需要展开业务的重整及网依赖关系的控制相当;
3、如何运维(依赖管理、运行状况管理、错误追踪、调优、监控以及报警等)好是庞大的分布式应用。
通过立马同一步,差不多系统的架构上相对安静之级差,同时为会起下大量之廉价机器来支撑着英雄的访问量和数据量,结合当下套架构和这么累演化过程吸取的阅历来使另外各种各样的点子来支撑着更是强的访问量。

CDN内容分发网络

什么是CDN?

CDN的全称是Content Delivery
Network,即情节分发网络。其目的是经过以现有的Internet中加进一层新的网架构,将网站的情节发布到极致相仿用户的纱”边缘”,使用户可
以左右得到所待的内容,解决Internet网络不通状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带来富小、用户访问量十分、网点分布不全等
原因,解决用户访问网站的响应速度慢的根本原因。

狭义地提,内容分发布网(CDN)是相同种流行性的大网构建方式,它是吧能够在风俗的IP网发布宽带丰富媒体要特别优化的网络覆盖层;而起广义的角
度,CDN代表了同一种植基于质量和秩序的网络服务模式。简单地说,内容发布网络(CDN)是一个经预谋部署的完整系统,包括分布式存储、负载均衡、网络要
求的重定向同内容管理4只假设起,而内容管理与全局的网络流量管理(Traffic
Management)是CDN的骨干所在。通过用户就近性和服务器负荷的判断,CDN确保内容为同种极为高效的法门吧用户的要提供劳动。总的来说,内
容服务因缓存服务器,也称作代理缓存(Surrogate),它座落网络的边缘,距用户只有发生”一超过”(Single
Hop)之遥。同时,代理缓存是内容提供商源服务器(通常在CDN服务提供商的多少主导)的一个透明镜像。这样的架使CDN服务提供商能够代表他们
客户,即情节供应商,向最终用户提供尽可能好之体验,而这些用户是不可知隐忍请求响应时间有外延迟的。据统计,采用CDN技术,能处理整个网站页面的
70%~95%底情节访问量,减轻服务器的下压力,提升了网站的习性与而扩展性。

CDN 的行事规律

在叙CDN的落实原理,让咱们事先押风的无加缓存服务的访过程,以便了解CDN缓存访问方式与未加缓存访问方式的异样:

NoSQL 7

鉴于臻图可见,用户访问未利用CDN缓存网站的经过吧:

1)、用户为浏览器提供要顾的域名;

2)、浏览器调用域名解析函数库对域名进行剖析,以赢得此域名对应之IP地址;

3)、浏览器采用所获取的IP地址,域名的服务主机来数看请求;

4)、浏览器根据域名主机返回的数据展示网页的始末。

CDN的易懂明了就是是网站加速,可以缓解跨运营商,跨域,服务器负荷能力了没有,带富了少等带来的网站打开速度放缓等题材。网宿,睿江,蓝讯

NoSQL 8

一致性Hash算法

分布式架构中,节点的故障是不可避免的,当添加和去某一样节点时,会导致大量散列数据失效,需要更散列。这象征这些丢失的数据如果失去数据库被呼吁一糟糕之后才会以hash(key)
/服务器数 =服务器编号
重新散列缓存到对应之服务器上。这对于高访问量的系统来讲影响是大可怜之。
众人以一致性Hash来解决此类问题

NoSQL 9

更多:一致性Hash算法(KetamaHash)的c#实现

参考:

http://www.cnblogs.com/genson/archive/2009/10/22/1587836.html

CDN

网站地图xml地图