大型网站架构技术一览

news/2024/5/10 19:16:33/文章来源:https://blog.csdn.net/s2603898260/article/details/110943050

大型网站的挑战主要来自庞大的用户,高并发的访问和海量数据,任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户,问题就会变得棘手。大型网站架构主要就是解决这类问题。

本文内容大部分来自《大型网站技术架构》,这本书很值得一看,强烈推荐(如果需要可评论留言我)。

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

 

 

1. 前端架构

前端指用户请求到达网站应用服务器之前经历的环节,通常不包含网站业务逻辑,不处理动态内容。

  • 浏览器优化技术

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

  • CDN

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

  • 动静分离,静态资源独立部署

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

  • 图片服务

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

  • 反向代理

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

  • DNS

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

2. 应用层架构

应用层是处理网站主要业务逻辑的地方。

  • 开发框架

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

  • 页面渲染

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

  • 负载均衡

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

  • Session管理

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

  • 动态页面静态化

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

  • 业务拆分

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

  • 虚拟化服务器

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

3. 服务层架构

提供基础服务,供应用层调用,完成网站业务。

  • 分布式消息

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

  • 分布式服务

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

  • 分布式缓存

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

  • 分布式配置

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

4. 存储层架构

提供数据、文件的持久化存储访问与管理服务。

  • 分布式文件

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

  • 关系数据库

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

  • NoSQL数据库

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

  • 数据同步

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

5. 后台架构

网站应用中,除了要处理用户的实时访问请求外,还有一些后台非实时数据分析要处理。

  • 搜索引擎

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

  • 数据仓库

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

  • 推荐系统

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

6. 数据采集与监控

监控网站访问情况与系统运行情况,为网站运营决策和运维管理提供支持保障。

  • 浏览器数据采集

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

  • 服务器业务数据采集

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

  • 服务器性能数据采集

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

  • 系统监控

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

  • 系统报警

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

7. 安全架构

保护网站免遭攻击及敏感信息泄露。

  • Web攻击

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

  • 数据保护

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

8. 数据中心机房架构

大型网站需要的服务器规模数以十万计,机房物理架构也需要关注。

  • 机房架构

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

  • 机柜架构

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

  • 服务器架构

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


转自:“Hollis”微信公众号

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

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

相关文章

大型网站架构演化历程

摘自《大型网站技术架构》:第一章 大型网站架构演化 目录 一、大型网站系统的特点 二、 大型网站架构演化发展历程 1. 初始阶段的网站架构 2. 应用服务和数据服务分离 3. 使用缓存改善网站性能 4. 使用应用服务器集群改善网站的并发处理能力 5. 数据库读写分离 6. 使…

珍藏30年的网站都在这了,自媒体运营必不可少

目录 01办公协作 02 图库 03新媒体相关 04 APP相关 05 小程序相关 06 H5制作 06 二维码 07 问卷 08 gif 09 大数据 10 SasS类平台 11 KOL采购及广告投放 12活动会议 13 长短连接 14 搜索工具 15 思维导图 16 图片处理 17 识图工具 18 表情包 01办公…

HMDB网站 爬取工具

HDMB网站有一个特别不友好的地方是: 搜索相应太慢,成功率还低,这个简直太不爽了。不过白天体验明显好于晚上体验…原因自己品吧 效果图工具使用部分效果 根据HMDBID下载结果 设置搜索条件搜索结果 解析成Excel文件 接受定制任务

网站、数据库的衍变之路(三)

话接前文《网站、数据库的衍变之路(二)》。上文讲了几种静态化方案的利弊,有朋友要讲详细一点,呵呵,这不属于本文的范畴。也有朋友说有些网站不适合搞静态化,是有这种情况。但是在这个时期,网站还处于刚发展的起始阶段…

Java SpringMVC 支付宝-手机网站支付接口

首先就是申请支付宝第三方接口,获取到APPID,应用发布前也可以用支付宝的沙箱环境,服务器要开启外网访问权限,因为支付宝需要返回异步通知(notify_url)和同步通知(return_url) 如果想学习Java工程化、高性能…

JAVA WEB快速编写一个JSP WEB网站了解网站的基本结构 调试 部署

一、使用eclipse初始化一个JSP WEB项目(即:动态WEB项目),步骤如下: 如上图示注意选择TOMCAT版本 如上图示勾选生成web.xml,当然如果不勾选也行,但后续如果有需要用到配置的地方就需要再单独添加,故这里我选…

我穿越到1994年,终于发现80%的网站都用PHP的原因!

见字如面,我是军哥!昨天晚上写代码到深夜,一头扎到床上,沉沉睡去。第二天睁开眼睛,我发现自己居然坐在一个咖啡馆里,旁边的墙上贴着最新的英文电影海报《阿甘正传》、《肖申克的救赎》这都是1994年的经典电…

Java程序员进阶笔记实操—大型网站架构技术之负载均衡详解(3)

欢迎关注专栏:Java架构技术进阶。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。 上一篇:Java程序员进阶笔记实操—大型网站架构技术之负载均衡详解(2) 本次分享大纲 软件负载均衡概…

使用SEP实现:禁止访问特定的网站

利用SEP自带的防火墙可以禁止客户所需要禁止的网站。具体操作如下: 1、点击【Policies】选【Firewall】,在右边右击,选择【Add】。 2、选择【Rules】,可以再【Policy name】里更改名字,便于识别。 3、选择【Add Rule】…

允许网站使用相机和麦克风_新一代网红神器 佳能G7 X Mark III相机评测

1英寸卡片机向来是很多玩家首选的随身摄影器材。一方面,1英寸传感器相较手机等常规装备而言具备更高的成像水准;另一方面,“小巧机身大光圈变焦镜头”的配置不仅带来了出色的便携性,同时还能满足各种复杂的拍摄需求,实…

怎么arm数据上传到云服务器_纵横数据:在日本服务器上搭建外贸网站怎么样?...

​​现在外贸建站赚取外汇已经成为不少企业的收入来源,而对于外贸网站的搭建,不少企业或者网站开发者都会选择使用wordpress程序,而且近几年采用wordpress搭建外贸用户的增长一直都比较快。那么使用wordpress搭建外贸网站有什么好处&#xff…

Magento网站迁移指南

上周五,为MKT同事迁移了一个从本机到GODADDY的MAGENTO系统。 中间出了不少状况, 现在写个迁移纲要: ~~~~~~~~~~~~~~~~ 1,网页和数据库文件上传,最好采用压缩方式,节约网络流量和布置时间。 2,如…

网站php.ini在哪,php.ini在哪

最近在centos中安装lamp环境,发现装完php之后,没有php.ini文件,那么php.ini在哪呢?正常情况下php.ini文件是在php的安装目录下的lib目录里,比如我的php安装目录在/usr/local/php/中,而我进到/usr/local/php/lib目录中却…

总用这个网站把ppt,doc转成PDF,还挺好用,记一下

2019独角兽企业重金招聘Python工程师标准>>> http://www.freepdfconvert.com/ 转载于:https://my.oschina.net/ahuaahua/blog/132714

10个帮程序员和站长减压放松的良心网站!

2019独角兽企业重金招聘Python工程师标准>>> 1. Calm 这是同类型中最火的网站了,站如其名,「平和」,通过自然的图像(阳光下的暖流、淙淙的小溪等)与缓缓的音乐,帮你在短时间内放松下来。 左侧有…

php网站栏目隐藏,phpcms 首页需要隐藏栏目的代码

找到首页模板搜索{php $num}在其后面增加代码即可{php if($r[ismenu]!1) continue;}完成代码如下{loop subcat(0,0,0,$siteid) $r}{php $num}{php if($r[ismenu]!1) continue;}{$r[catname]}更多>>{pc:content action"lists" catid"$r[catid]" order…

ie连接服务器被系统禁止,防止IE被流氓网站乱改

随着互联网的普及和网民队伍的壮大,网络也变的越来不安全。病毒、木马日益侵蚀着我们的网络,让我们感到网络上到处都存在着危险。尽管FireFox、Maxthon等的浏览器以其独特的功能和安全性被越来越多的用户接受,但是IE仍然是浏览器中的“老大”…

JSP网站开发基础总结《一》

经过JAVASE的学习相信大家对JAVA已经不再陌生,那么JAVA都可以干什么呢?做算法、应用程序、网站开发都可以,从今天开始为大家奉上JAVAEE之JSP动态网站开发基础总结。 既然是动态网站开发,那它与传统的静态网站有什么区别呢&#xf…

css3媒体查询实现网站响应式布局

响应式建筑设计、响应式家具设计、响应式办公设计,这些词可能是已有的专业名词,也可能是我自己想出来的一些名词。因为在生活中,我们常常会见到很多让人惊叹的设计,为什么同一套东西经过不同的方式变化之后会给人不同的使用感受和…

ubuntu下webbench作网站压力测试教程【webbench安装】

webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便。 1. 安装教程 1.1 安装依赖 exuberant-ctags sudo apt-get install exuberant-ctags1.2 下载源码并安装 wget http://blog.s…