大型网站架构技术一览

news/2024/6/16 6:50:45/文章来源:https://fansunion.blog.csdn.net/article/details/52077078

    强烈推荐购买《大型网站技术架构-核心原理与案例分析》-李智慧

   对于大型网站技术的理解,可以从架构技术原理的组织方式以架构要素作为维度,从系统性能、可用性、伸缩性、扩展性、安全性几个角度阐述网站架构的技术要点。还有另一种较为直观的组织方式,是从不同架构层次所使用的网站架构技术这个维度进行描述的。

        网站系统架构层次如下图所示:


        这个网站架构层次,共分为8个层次,其中数据库中心机房架构是上面所有架构的物理基础;安全架构和数据库采集监控架构是贯穿在各个层次的重要保障,这两个架构主要解决五个业务相关层次的安全问题和数据采集监控问题,是一直都需要关注的地方;
        对于目前的大型网络来看,可以分为前端、应用层、服务层、存储层、后台等5个方面,简单来说,前端存放的是静态网页,不涉及业务,就是为了客户端能够及时响应,并展现一些静态内容;应用层是处理业务逻辑的地方,前端开发的代码,主要就是发布在这个地方,实际用户的各种业务处理,也主要在这个地方进行;服务层介于应用层和存储层之间,主要为两者提供各种分布式服务,比如分布式缓存,能减少存储层的压力,并尽快响应应用层的请求,提高性能;存储层是存放各种业务数据的地方,包括关系型、非关系型数据库、文件已经它们之间的数据同步;上面4个层次可以说是实时的业务功能,有一个层次出现问题,就会直接影响用户体验,在这4个层次后面,还有一个后台,它是不直接与用户沟通,但从上面的业务中通过搜索引擎、数据仓库、推荐系统等,创造更加有价值的信息,在后台为业务提供支撑。


1.前端架构
        (包括:浏览器优化技术、CDN、动静分离,静态资源独立部署、图片服务、反向代理、DNS等7种技术)
        前端指用户请求到达网站应用服务器之前经历的环节,通常不包含网站业务逻辑,不处理动态内容。一般打开网页或界面时,一输入URL就可以看到的信息,就属于这部分,然后再慢慢加载的,就是后面业务层的内容了,因为内容都是静态的,不会发生改变,所有可以在各个地方准备好,放在CDN中,达到瞬时响应的效果。为了实现这样的效果,有下面几种架构技术:


浏览器优化技术
        并不是优化浏览器,而是通过优化响应页面,加快浏览器页面的加载和显示,常用的有页面缓存、合并HTTP减少请求次数、使用页面压缩等。


CDN
        内容分发网络,部署在网络运营商机房,通过将静态页面内容分发到离用户最近最近的CDN服务器,使用户可以通过最短路径获取内容。


动静分离,静态资源独立部署
        静态资源,如JS、CSS等文件部署在专门的服务器集群上,和Web应用动态内容服务分离,并使用专门的(二级)域名。


图片服务
        图片不是指网站Logo、按钮图标等,这些文件属于上面提到的静态资源,应该和JS、CSS部署在一起。这里的图片指用户上传的图片,如产品图片、用户头像等,图片服务同样适用独立部署的图片服务器集群,并使用独立(二级)域名。


反向代理
        部署在网站机房,在应用服务器、静态资源服务器、图片服务器之前,提供页面缓存服务。


DNS
        域名服务,将域名解析成IP地址,利用DNS可以实现DNS负载均衡,配置CDN也需要修改DNS,使域名解析后指向CDN服务器。


2.应用层架构
        (包括:开发框架、页面渲染、负载均衡、Session管理、动态页面静态化、业务拆分、虚拟化服务器等7种技术)
        应用层是处理网站主要业务逻辑的地方。一般说的使用PHP或则Java等技术实现的网络逻辑和前端框架,就是指这部分的内容,该部分是交互式业务实现的主要层次,相应的架构技术有:

开发框架
        网站业务是多变的,网站的大部分软件工程师都是在加班加点开发网站业务,一个好的开发框架至关重要。一个号的开发框架应该能够分离关注面,使美工、开发工程师可以各司其事,易于协作。同时还应该内置一些安全策略,防护Web用攻击。


页面渲染
        将分别开发维护的动态内容和静态页面模板集成起来,组合成最终显示给用户的完整页面。


负载均衡
        将多台应用服务器组成一个集群,通过负载均衡技术将用户请求分发到不同的服务器上,以应对大量用户同时访问时产生的高并发负载压力。


Session管理
        为了实现高可用的应用服务器集群,应用服务器通常设计为无状态,不保存用户请求上下文信息,但是网站业务通常需要保持用户会话信息,需要专门的机制管理Session,使集群内甚至跨集群的应用服务器可以共享Session。


动态页面静态化
        对于访问量特别大而更新又不很频繁的动态页面,可以将其静态化,即生成一个静态页面,利用静态页面的优化手段加速用户访问,如反向代理、CDN、浏览器缓存等。


业务拆分
        将复杂而庞大的业务拆分开来,形成多个规模较小的产品,独立开发、部署、维护,除了降低系统耦合度,也便于数据库业务分库。按业务对关系数据库进行拆分,技术难度相对较小,而效果又相对较好。


虚拟化服务器
        将一台物理服务器虚拟化成多态虚拟服务器,对于并发访问较低的业务,更容易用较少的资源构架高可用的应用服务器集群。


3.服务层架构
        (包括:分布式消息、分布式服务、分布式缓存、分布式配置等4种技术)
        提供基础服务,供应用层调用,完成网站业务。服务层介于应用层和存储层之间,顾名思义就是为应用层提供各种服务的,而服务层本身内容的来源,又可能与存储层有关,比如缓存就是将存储层中的一部分数据做以加工和展现,供应用层快速调用的。服务层的架构技术主要是几种分布式的服务功能:

分布式消息
        利用消息队列机制,实现业务和业务、业务和服务之间的异步消息发送及低耦合的业务关系。


分布式服务
        提供高性能、低耦合、易复用、易管理的分布式服务,在网站实现面向服务架构(SOA)。


分布式缓存
        通过可伸缩的服务器集群提供大规模热点数据的缓存服务,是网站性能优化的重要手段。


分布式配置
        系统运行需要配置许多参数,如果这些参数需要修改,比如分布式缓存集群加入新的缓存服务器,需要修改应用程序客户端的缓存服务器列表配置,并重启应用程序服务器。分布式配置在系统运行期提供配置动态推送服务,将配置修改实时推送到应用系统,无需重启服务器。


4.存储层架构
        (包括:分布式文件、关系数据库、NoSQL数据库、数据同步等4种技术)
        提供数据、文件的持久化存储访问与管理服务。该层次也是一般意义上的数据库层,主要用来存放各种数据的,当然在大型网站中数据层的概念,不仅包括传统关系型数据库,还包括分布式文件数据,nosql数据库以及数据同步技术。存储层的架构技术主要有:

分布式文件
        网站在线业务需要存储的文件大部分都是图片、网页、视频等比较小的文件,但是这些文件的数量非常庞大,而且通常都在持续增加,需要伸缩性设计比较好的分布式文件系统。



关系数据库
        大部分万丈的主要业务是基于关系数据库开发的,但是关系数据库对集群伸缩性的支持表较差。通过在应用程序的数据访问层增加数据库访问的路由功能,根据业务配置将数据库访问路由到不同的物理数据库上,可实现关系数据库的分布式访问。


NoSQL数据库
        目前各种NoSQL数据库层出不穷,在内存管理、数据模型、集群分布式管理等方面各有优势,不过从社区活动性角度看,HBase无疑是目前最好的。


数据同步
        在支持全球范围内数据共享的分布式数据库技术成熟之前,拥有多个数据中心的网站必须在多个数据中心之间进行数据同步,以保证每个数据中心都拥有完整的数据。在实践中,为了减轻数据库压力,将数据库的事物日志(或者NoSQL的写操作Log)同步到其他数据中心,根据Log进行数据重演,实现数据同步。


5.后台架构
        (包括:搜索引擎、数据仓库、推荐系统等3种技术)
        网站应用中,除了要处理用户的实时访问请求外,还有一些后台非实时数据分析要处理。后台架构主要是进行一些非实时操作,对前端业务处理提供支撑,主要的架构技术有:

搜索引擎
        即使是网站内部的搜索引擎,也需要进行数据增量更新及全量更新、构建索引等。这些操作通过后台系统定时执行。


数据仓库
        根据离线数据,提供数据分析与数据挖掘服务。


推荐系统
        社交网站及购物网站通过挖掘人与人之间的关系,人和商品之间的关系,发展潜在的人际关系和购物兴趣,为用户提供个性化推荐服务。


6.数据采集与监控
        (包括:浏览器数据采集、服务器业务数据采集、服务器性能数据采集、系统监控、系统报警等5种技术)
        监控网站访问情况与系统运行情况,为网站运营决策和运维管理提供支持保障。数据采集与监控存在于整个业务架构的生命周期,在业务上线后,业务运行状态是否正常,运维人员日常做的主要工作,就是数据采集与监控,在业务系统发生故障或者性能问题时,也需要改系统进行支持和问题定位,进而解决问题。该层次的主要架构技术有:

浏览器数据采集
        通过在网站页面中嵌入JS脚本采集用户浏览器环境与操作记录,分析用户行为。


服务器业务数据采集
        服务器业务数据包括两种,一种是采集在服务器端记录的用户请求操作日志;一种是采集应用程序运行期业务数据,比如待处理消息数目等。


服务器性能数据采集
        采集服务器性能数据,如系统负载、内存使用率、网卡流量等。


系统监控
        将前述采集的数据以图表的方式展示,以便运营和运维人员监控网站运行状况,做到这一步仅仅是系统监视。更先进的做法是根据采集的数据进行自动化运维,自动处理系统异常状况,是吸纳自动化控制。


系统报警
        如果采集来的数据超过预设的正常情况的阀值,比如系统负载过高,就通过邮件、短信、语音电话等方式发出警报信号,等待工程师干预。


7.安全架构
        (包括:Web攻击、数据保护等2种技术)
        保护网站免遭攻击及敏感信息泄露。安全也业务能够正常运行的一个非常重要的问题,安全主要有两方面,一是来自外边的攻击与防护,会影响到网站业务的可用性和性能;二是网站内部的数据安装和保护,会影响到数据层总的敏感信息。安全架构技术主要有:

Web攻击
        以HTTP请求的方式发起的攻击,危害最大的就是XSS和SQL注入攻击。但是只要措施得当,这两种攻击都是比较容易防范的。


数据保护
        敏感信息加密传输与存储,保护网站和用户资产。


8.数据中心机房架构
        (包括:机房架构、机柜架构、服务器架构等3种技术)
        大型网站需要的服务器规模数以十万计,机房物理架构也需要关注。对于大型网络系统来说,物理服务器数量必然是非常巨大的,这样在机房、机柜、服务器等层次都要有相应的规划,这样才能比较好的支撑上面的各个层次。

机房架构
        对于一个拥有十万台服务器的大型网站,每台服务器耗电(包括服务器本身耗电及空调耗电)每年大约需要人民币2000元,那么网站每年机房电费就需要两亿人民币。数据中心能耗问题日趋严重,Google、Facebook选择数据中心地理位置的时候趋向选择散热良好,供电充裕的地方。


机柜架构
        包括机柜大小,网线布局、指示灯规格、不间断电源、电压规格(是48V直流电还是220V民用交流电)等一系列问题。


服务器架构

          大型网站由于服务器采购规模庞大,大都采用定制服务器的方式代替购买服务器整机。根据网站应用需求,定制硬盘、内存、甚至CPU,同时去除不必要的外设接口(显示器输出接口,鼠标、键盘输入接口),并使空间结构利于散热。


转载自:http://blog.csdn.net/wwd0501/article/details/47838871

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

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

相关文章

你为什么应该经常访问招聘网站?招聘网站至少有4个方面的价值!

一、缘起读大学的时候,有时候会感到很迷茫,不知道毕业之后可以做什么,自己能拿到多少的月薪。于是,就想到去参加一些公司的招聘。大二大三的时候,就去武大参加了武汉中地数码等3个公司的笔试。但是,没有交答…

使用Java开发高性能网站需要关注的那些事儿

近期各家IT媒体举办的业内技术大会让很多网站都在披露自己的技术内幕与同行们分享,大到facebook,百度,小到刚起步的网站。facebook,百度之类的大型网站采用的技术和超凡的处理能力的确给人耳目一新的感觉,但并不是每个…

SQlite源码分析--源网站

http://huili.github.io/B-treeImplementation/hierarchicalorganization.html SQLite中的B-tree SQLite中每个数据库完全存储在单个磁盘文件中,因为B树进行数据的查找、删除、添加速度快,所以这些数据以B树数据结构的形式存储在磁盘上(实现代…

第五周作业:网站的初步设计

上周“烦人的老宋”在课堂上讲了有关divcss布局的相关知识,正好我们组要做的项目是有关网页设计的,主题是“traving and enjoyment”,与旅游相关,于是我趁着清明节放假的时间,也正好“老宋”刚讲过一些知识&#xff0c…

网站安装打包 浏览网站[五] 附加IIS其它功能

在创建完网站与虚拟目录,接下来就是要浏览网站了,于是,在界面上多加一个按钮,点击浏览是顺势而加了: 代码就一句: Process.Start("iexplore.exe", string.Format("http://{0}",txtWebsiteIP.Text)); //IP地址…

投资理财类的Web网站和APP,提供的核心功能都一样

风险提示:市场有风险,投资须谨慎。郑重声明:本文纯属个人见解,仅供参考。万一赔钱或被骗,请不要把小雷同志送到派出所。上周初步看了一个“黄金理财”的互联网平台,用的是Web端。总体瞅了下,发现…

某旅游网站sql注入导致泄露2万多个人信息

个人博客文章链接:点我查看 说明 测试目标是一个旅游网站,发现了sql注入漏洞,泄露2万多用户信息,可任意下载服务器上文件。 所有可利用信息均打码处理。 渗透过程 正常搜索没啥问题 但是当我们输入1’就会报错 尝试注释闭合&…

某旅游网站子站存在上传漏洞已拿下服务器

文章目录前言漏洞描述漏洞详情写在最后前言 突然发现这篇文章只在我个人博客发布了,忘了在CSDN发布了,特此补上。 上篇文章:某旅游网站sql注入导致泄露2万多个人信息已经找到了sql注入点拿到了数据库,但始终拿不到shell,经过探索&…

懂商业的技术合伙人(11):1小时到10天,搞定官方网站

雷观:官方网站,体现的是一个公司的基本信誉,核心价值在于展示自己公司提供的产品、服务和解决方案。 快速开发,怎么个快速法呢?授人以鱼授人以渔。 企业官网,是一个公司的脸面。 很多网友,为…

zabbix 自定义key 监控 网站关键字

http://www.tuicool.com/articles/3Q7R3yhttp://www.tuicool.com/articles/fYjQ7j 监控磁盘配置客户端vim /usr/local/zabbix-2.2.2/etc/zabbix_agentd.confInclude/usr/local/etc/zabbix_agentd.conf.d/ #此行去掉注释编写脚本vim /usr/local/zabbix-2.2.2/scripts/jfedu.sh#!…

如何禁止访问一个网站??

让电脑禁止访问某一网站 因为win10与XP系统都是一样的地方修改,但win10更麻烦,所以这里以win10系统为例。在C:\Windows\System32\drivers\etc目录下,有一个名字是hosts的文件。然后用记事本打开这个hosts文件。在hosts文件最下面,…

git 学习网站

跳转 这是个很好的学习git网站,值得拥有。

JS简单测试网站并发量

2019独角兽企业重金招聘Python工程师标准>>> 1、IE的控制台运行&#xff1a; var testTotal1000;//并发量&#xff1b; var url"----- 使用测试的URL代替&#xff0c;需要有?--------------"; var j0;//计数器 for(var i0;i<testTotal;i){urlurl"…

linux服务器没有ping命令,Linux网站服务器怎么禁止ping命令?Linux服务器禁止ping允许ping Linux服务器禁止和开启ping包...

Linux默认是允许Ping响应的&#xff0c;系统是否允许Ping由2个因素决定的&#xff1a;1)内核参数2)防火墙方法1&#xff1a;更改内核参数临时生效&#xff0c;重启失效打开“/proc/sys/net/ipv4/icmp_echo_ignore_all”文件&#xff0c;将里面的数字改为“1”永久生效打开“/et…

[谈seo优化] 实战seo教程2:我是怎么将“seo论坛”在50天内优化到百度前三

前言&#xff1a;最近写文章比较少了&#xff0c;今天有几个刚接触seo的人加了我&#xff0c;有说我的网站的教程帖子比较整齐&#xff0c;写的也很好&#xff0c;有请教我说如何将“seo论坛”关键词在短期内就独自优化到百度前三&#xff0c;好的案例就应该分享给大家&#xf…

实战seo教程1:实战案例——小帅优化网站,70天目标关键词全部第一

前言 &#xff1a;好的优化案例就是需要给大家分享&#xff0c;金网seo论坛接下来将推出seo案例教程&#xff0c;第一课就分享小帅的优化的网站 www.bohaodz.com&#xff0c;网站与6月27日开始接手&#xff0c;另外&#xff0c;金网告诫没有什么短时间7天内、半个月什么的网站快…

进阶seo教程28:网站pr值和链接权重输出值详细算法原理

前言&#xff1a;这一刻将详细讲解pr相关知识点以及pr的一些基本算法。在基础seo教程第9课中小帅也详细介绍过了pr是Google中的页面排名&#xff0c;但是大家也知道pr越高并不代表排名越靠前&#xff0c;但是pr高的网站相对于低pr的站点来说搜索引擎会更加信任&#xff0c;页面…

网站分析的10个要点

2019独角兽企业重金招聘Python工程师标准>>> 本文提供了10点细分的建议&#xff0c;让你的数据直接变成有价值的信息。 1、一滤、二组、三细分 虽然网站&#xff08;流量&#xff09;分析的数据量是海量&#xff08;译者注&#xff1a;UV超过10万UV/天的网站网站日志…

网站图片服务器架构的演进

构建在Windows平台之上的网站&#xff0c;往往会被业内众多架构师认为很“保守”。很大部分原因&#xff0c;是由于微软技术体系的封闭和部分技术人员的短视造成的。由于长期缺乏开源支持&#xff0c;所以只能“闭门造车”&#xff0c;这样很容易形成思维局限性和短板。就拿图片…

网站指标差异显著性检验——卡方检验

三个网站分析中常见的场景&#xff1a;A,B两版广告创意&#xff0c;A版本转化率4.94%&#xff0c;B版本转化率5.75%&#xff0c;是否说明B版本比A版本转化效果好&#xff1f;网站首页对于新访客跳出率65.26%&#xff0c;老访客跳出率64.92%&#xff0c;是否说明新老访客在首页跳…