网站服务架构(转)

news/2024/5/20 20:39:31/文章来源:https://blog.csdn.net/weixin_33770878/article/details/90280436

服务器划分

       对于访问量大的网站而言,将网站的各个部分拆分分别部署到不同服务器上是很有必要的。例如将图片和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左右。

网站架构的演变过程之一

公司刚刚起步,业务量不大,往往可能在某个虚拟主机空间商租用一个虚拟主机和一个数据库就搭建了一个最基本的网站

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

随着业务量增加,用户的访问越来越多,网站经常性的打不开,慢,甚至出现数据库链接达到最大限制数,这个时候需要针对网站做一些优化策略:

  • 减少Http请求,压缩css,js,图片的大小
  • 将Microsoft Ajax Minifier集成到VS2010对JS,CSS进行编译时压缩
  • 增加页面缓存和增加数据缓存处理
  • cnblogs上的缓存全解析
  • 自购服务器进行IDC托管
  • 自购服务器能够提升硬件的档次以及带宽可以自由控制,一般都是独享带宽,相比共享带宽来说能够支撑更多的访问量

网站架构的演变过程之三增加web服务器

       当系统访问量的再度增加,webserver机器的压力在高峰会上升到比较高,这个时候开始考虑增加一台WebServer,但是增加一台WebServer的时候意味着要在两台的服务器上分别建立相同的站点,那么就会出现如下问题:

       如何让访问分配到这两台机器上?Nginx

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

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

       如何保持数据缓存信息的同步?

       缓存服务器

       如何让上传文件这些类似的功能继续正常?

       采用文件服务器统一管理

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

通过增加web服务器享受了一段快速访问的幸福后,发现系统又开始变慢了,经过查找,发现数据库写入、更新的这些操作的部分数据库连接的 资源竞争非常激烈,导致了系统变慢,这下怎么办呢?

分库

分表

Memcache,Redis分布式缓存





水平分区 VS 垂直分区

 

水平

垂直

存储依赖

可跨越DB 可跨越物理机器

可跨越表空间,不同的物理属性   不能跨DB存储

存储方式

分布式

集中式

扩展性

Scale Out(横向扩展,增加便宜设备)

Scale Up(升级设备)

可用性

无单点

存在单点(DB数据本身)

价格

低廉

适中,甚至昂贵

应用场景

web 2.0

 

架构演变过程之五Web园或增加更多WebServer

在做完分库分表这些工作后,数据库上的压力已经降到比较低了,这个时候可能到了下一个瓶颈,查看windows的性能计数器发现有大量的阻塞请求,于是可以做Web园或者添加一些webserver服务器。在这个添加webserver服务器的过程,有可能会出现如下几个问题:

一台Nginx服务器的软负载已经无法承担巨大的web访问量了,可以用硬件负载解决F5或应用从逻辑上做一定的分类,然后分散到不同的软负载集群中

原有的一些状态信息同步、文件共享等方案可能会出现瓶颈,需要进行改进,也许这个时候会根据情况编写符合网站业务需求的分布式文件系统等;

在做完这些工作后,开始进入一个看似完美的无限伸缩的时代,当网站流量增加时,应对的解决方案就是不断的添加webserver。

架构演变之六读写分离和廉价存储方案

通过增加web服务器享受了一段快速访问的幸福后,发现系统又开始变慢了,经过查找,发现数据库写入、更新的这些操作的部分数据库连接的 资源竞争非常激烈,导致了系统变慢,这下怎么办呢,读写分离,订阅和发布

廉价存储方案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缓存访问方式与未加缓存访问方式的差别:

CDN(内容分发网络)技术原理

由上图可见,用户访问未使用CDN缓存网站的过程为:

1)、用户向浏览器提供要访问的域名;

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

3)、浏览器使用所得到的IP地址,域名的服务主机发出数据访问请求;

4)、浏览器根据域名主机返回的数据显示网页的内容。

CDN的通俗理解就是网站加速,可以解决跨运营商,跨地区,服务器负载能力过低,带宽过少等带来的网站打开速度慢等问题。网宿,睿江,蓝讯

一致性Hash算法

分布式架构中,节点的故障是不可避免的,当添加和删除某一节点时,会导致大量散列数据失效,需要重新散列。这意味着这些丢失的数据要去数据库中请求一次以后才能按照hash(key) /服务器数 =服务器编号 重新散列缓存到对应的服务器上。这对于高访问量的系统来讲影响是非常大的。 人们采用一致性Hash来解决此类问题

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

参考:

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

CDN

http://www.cnblogs.com/jiekzou/p/4677994.html

精彩点评:
博主还是站在“服务器”层面思考问题。

而你要的支撑scale out的、分布式的架构通常这样考虑问题:

1.storage & cache & replication
rdb sharding(OLTP) + redis cache + hbase(archive)(OLAP)

2.sync & consistency
zookeeper + curator (paxos)

3.stream computing
source : rdb(MySQL、SQL Server、Oracle)、hdfs、hive、hbase
replayble source : kafka
stream computing engine : samza、storm

4.communication
thrift

5.off-line computing
hadoop

6.memory computing & iterative computing
spark

have fun : ]


现在的云服务能比较方便的解决这些问题,我们现在用阿里云,除了核心的业务跑在自己的服务器上,其它的如:数据库、缓存、静态资源、负载均衡都跑在阿里云上面。省时省事还省钱,虽然也有些小问题但也慢慢解决了。而且像数据库读写分离、负载分配及会话保持等等能想到的常见问题其实阿里云都已经给出了方案,看一下使用说明配一下就行了。这样,我们就可以花更多的时间去关心核心业务层面的东西,而且不是基础设施建设了。当然了,了解一下其中的基本原理还是非常有必要的,这样能加快对这些功能的理解和问题的排查,但现在一般中小规模的应用不建议自己买服务器到机房托管,真的太累了...

Mono中一般使用Jexus吧,Jexus比Nginx跑asp.net更好,我刚整理这部分文档 http://www.cnblogs.com/shanyou/p/4677569.html

上Jexus吧。工业级的应用服务器,比用Nginx+Mono效率高。





 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_749430.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

赣州SEO优化市场最新分析-魏子龙博客

【魏子龙博客导读】赣州市是江西的第二大城市,赣州市所辖2区1市15县。赣州市主要的企业集中在沙河工业园、黄金开发区。企业类型主要包括机械制造、旅游、地产、稀土、脐橙、餐饮等。现在我对以上各行业做个赣州SEO优化市场分析。1.制造:赣州制造主要有电…

mysql springmvc 源码_spring MVC+easyUI+mybatis开发网站后台管理系统源代码下载

urls.properties中需要修改为你本地的静态文件的访问路径。转载js是封装好的大家可以讨论一下使用Java平台,采用SpringMVCMybatis等主流框架数据库:使用免费MYSQL前端:使用Jquery和Easyui技术.界面清晰简洁,易操作权限:对菜单,按钮控制.仅展示有权限的菜单和按钮.拦截:对所有无…

金昌搜索引擎优化网络推广_在网络推广外包中企业网站排名优化在网络推广外包中如何实现?...

随着互联网市场中企业网站数量的增加,网站优化人才的需要与日俱增,据资料显示,与国内当下亿万网民相比,我国目前仅有不足100万家企业从事网络营销,对于网络营销人才的需求也是巨大,未来几年将产生数以百万计…

nginx 隐藏目录_提升网站安全性-隐藏nginx信息

一般使用nginx的web网站,访问网站时,可以从请求头中看到使用了nginx以及nginx的版本号。暴露这些信息将给网站带来一定的风险,因此安装nginx时最好把这些信息隐藏。隐藏nginx 版本号与WEB服务器信息如果未安装nginx,先去官网下载压…

【转载】国内网站博客数据统计选免费Google Analytics还是百度统计

【转载】国内网站博客数据统计选免费Google Analytics还是百度统计 Google Analytics谷歌统计是我用的第一个网站统计工具,当然现在也一直在用。Google Analytics凭借其强大的功能和超强的稳定性、快速的反应能力、广泛的数据应用功能,受到了广大站长的追…

amp部署php网站,LAMP搭建以及企业网站搭建

linux中的LAMP的部署以及企业网站的搭建1.先卸载以rpm方式安装的php以及依赖包2.插入linux的系统盘并安装zlib-devel和libmxl2-devel3.在挂载libmcrypt光盘,并安装和配置 (make && make install)4.执行优化5.安装mhash软件 并配置和安装(make && ma…

关键词分词工具_关键词在SEO推广中的重要作用

点击标题下「蓝色微信名」可快速关注什么是关键词?用户通过在搜索引擎搜索框中输入想要查询的字,发起搜索行为,找到自己需要的信息。输入在搜索框中的字被称为关键词。关键词是网站优化中的方向,是第一步需要做的工作。网站优化是通过提升网…

django 设置媒体url_Django网站搭建系列(三)——视图

我们在前两期分别讲了Django项目创建:《Django网站搭建系列(一)——项目创建》和数据库设置:《Django网站搭建系列(二)——数据库设置与模型设计》,并且我们创建了博客的第一个模型:博文模型。在前两个章节里,我们已经…

PHPWAMP内置IIS管理器一键搭建PHP网站,支持无限个不同PHP版本同时运行

PHPWAMP内置功能强大的IIS站点管理,可同时运行多个PHP版本,站点管理可自定义添加PHP版本支持Apache、Nginx、IIS多功能站点管理,后期我会在业余时间开发出更多实用功能,敬请关注。使用方式:点击相关设置,直…

anguler 画面布局适应屏幕大小_自适应与响应式网站建设

网站建设是对于一个新手来讲是一件繁琐累人的事情,首先你要考虑自己的网站用途是什么?如果自己做建设,你需要的知识是很多的,如C、java、php、dreamweaver、photoshop、firework等等,一个网站不单单做出来,…

一个牛X的网站——中國哲學書電子化計劃

2019独角兽企业重金招聘Python工程师标准>>> 找《大明会典》时无意间发现的: 中國哲學書電子化計劃 网址:http://ctext.org/zhs 光看目录就激动的不行。。。 转载于:https://my.oschina.net/u/2399303/blog/902643

企业新建网站,为什么在搜索引擎上找不到?

这个问题可以很明确的回答一下:新建的网站,你不一定就可以在各大搜索引擎上找到!主要的原因如下:1、你的网站未被搜索引擎收录,不是任何网站都被搜索引擎收录的。2、即便收录啦,由于你对网站标题的设置&…

jstl处理栏目与子栏目_seo技术:大部分人遗漏的栏目页优化,你是否也忽视了?...

我们在做网站优化排名的时候发现,网站关键词排名一直上不来,而且关键词库是很少的,除了我们设置好的首页TKD以外,其它栏目页就没有好好的运用,我们可以看看大部分的企业网站,他们的栏目页大部分就是一些留言…

首页面太大怎么样快速加载_SEO团队_网站如何优化至百度首页

网站怎样优化才能快速进入搜索引擎的首页呢?平时我们所说的seo优化就是指企业网站的seo优化,使得网站的关键字能够有一个比较前的排名,甚至出现在搜索引擎的首页,这样网站的点击率以及流量都上升,给网站带来更大的利益…

怎么适应多种数据库_石河子商城网站制作怎么选

石河子商城网站制作怎么选,专业的技术团队,丰富的互联网运营成功经验,卓越的创作思维,为您创作出一流的品牌互联网形象。石河子商城网站制作怎么选, 十、国家对适龄儿童注射疫苗及预防接种方面有何规定?根据…

阿根廷绝杀尼日尼亚给我们互联网建站者带来什么启示?

2019独角兽企业重金招聘Python工程师标准>>> 今天凌晨两点钟,作为世界杯球迷的我也观看了阿根廷对战尼日尼亚的足球赛事,而一开场不久,梅西就凭借着自己超凡的球技破门,这是梅西在2018年俄罗斯奥运会上第一次成功射门&…

如何做好企业网站专题页建设及营销推广优化方案成都SEO_成都辰星建站

为什么80%的码农都做不了架构师?>>> 成都SEO企业网站专题页建设及企业网站营销推广优化分析及对应处理方案,企业网站除去网站基础优化以外网站专题网页制作也是一种提升网站流量关键词排名提升的方案方法之一特别是对于产品商城网站和资讯类网站做好专题…

详细分析:当我们用浏览器访问一个网站到页面展示,背后经历了什么?

文章目录一、前提概要1、网络分层模型2、什么是IP地址?3、什么是域名?4、什么是DNS二、漫漫取经之路就在脚下1、域名解析2、建立TCP连接(三次握手)3、获取资源4、浏览器解释当我们用浏览器访问一个网站到页面显示出来,…

网站建设部署与发布--笔记2-部署Apache

网站部署(Linux) 部署Apache 操作系统:CentOS 7.21.首先连接云服务器,清楚系统垃圾。 $ yum clean all Loaded plugins: fastestmirrorCleaning repos: base epel extras updatesCleaning up everythingCleaning up list of faste…

使用github搭建自己的个人网站(装逼指南)

哈喽,你好。欢迎进来我的博客。 上一篇关于git的教程是教大家如何在github上面窗子哦及的本地项目。这次呢,和大家分享一下如何使用github创建自己的个人网站。 当然,前提还是得有github的账号,没有的话赶紧去注册一个。官网&am…