大型网站架构的技术要点与应用层的组织方式分析
2021-07-14
对大型网站技术的理解可以基于架构技术原理的组织方法,以架构元素为维度,从系统性能、可用性、可扩展性等角度阐述网站架构的技术要点、可扩展性和安全性。还有一种更直观的组织方式,从不同架构层级使用的网站架构技术维度来描述。
网站系统架构的层次结构如下图所示:
本网站架构层次分为8个层次。数据库中心机房架构是上述所有架构的物理基础;安全架构和数据库采集监控架构是贯穿各个层面的重要保障。这两种架构主要解决五个业务相关层面的安全问题和数据采集与监控问题,一直是需要关注的领域;
对于目前的大规模网络,可以分为五个方面:前端、应用层、服务层、存储层、后端。简单的说,前端存储静态网页,不涉及业务,是为了让客户端能够及时响应,展示一些静态内容;应用层是处理业务逻辑的地方,前端开发的代码主要发布在这个地方。实际用户的各种业务处理也主要在这个地方进行;服务层介于应用层和存储层之间,主要为两者提供各种分布式服务,比如分布式缓存,可以减轻存储层的压力,尽快响应应用层的请求提高性能;存储层存储各种业务数据关系和非关系数据库和文件之间数据同步的区域;以上四个层次可以说是实时业务功能。如果某一层面出现问题,将直接影响用户体验。在这四个层面的背后,有一个后端,不直接与用户沟通,而是从上述业务通过搜索引擎、数据仓库、推荐系统等,创造出更有价值的信息,并为用户提供支持。后端业务。
1.前端架构
(包括:浏览器优化技术、CDN、动静态分离、静态资源独立部署、图片服务、反向代理、DNS等7项技术)
前端是指用户在请求到达网站应用服务器之前经过的链接。它通常不包含网站业务逻辑,也不处理动态内容。一般你打开一个网页或者界面的时候,一输入URL就能看到的信息就属于这部分,然后慢慢加载,就是后续业务层的内容,因为内容是静态的,会没变。可以在各个地方准备,放在CDN中,达到瞬间响应的效果。为了达到这个效果,有以下架构技术:
浏览器优化技术
不是优化浏览器,而是通过优化响应页面来加速浏览器页面的加载和显示。常用的有页面缓存、合并HTTP减少请求次数、使用页面压缩等。
CDN
内容分发网络部署在网络运营商的机房。通过将静态页面内容分发到离用户最近的CDN服务器,用户可以通过最短路径获取内容。
动静分离,静态资源独立部署
静态资源,如JS、CSS等文件部署在专用服务器集群上,与Web应用动态内容服务分离,使用专用(二级)域名。
图片服务
图片不是指网站logo、按钮图标等,这些文件属于上面提到的静态资源,需要和JS、CSS一起部署。这里的图片是指用户上传的图片,如产品图片、用户头像等。图片服务也适用于独立部署的图片服务器集群,使用独立(二级)域名。
反向代理
部署在网站机房,在应用服务器、静态资源服务器、图片服务器前提供页面缓存服务。
域名解析
域名服务,将域名解析为IP地址,使用DNS实现DNS负载均衡,配置CDN也需要修改DNS,使域名解析为指向CDN服务器。
2.应用层架构
(包括:开发框架、页面渲染、负载均衡、管理、动态页面静态、业务拆分、虚拟服务器等7项技术)
应用层是处理网站主要业务逻辑的地方。一般而言,PHP或Java等技术实现的网络逻辑和前端框架均参考本部分内容。这部分是交互业务实现的主要层次。相应的架构技术有:
开发框架
网站业务是多变的。网站的大部分软件工程师都在加班加点开发网站业务。一个好的开发框架非常重要。一个数的开发框架应该能够将关注点分开,让美工和开发工程师可以做自己的事情,轻松协作。同时,应内置一些安全策略,以防止 Web 攻击。
页面渲染
整合单独开发维护的动态内容和静态页面模板,形成一个完整的页面,最终呈现给用户。
负载均衡
多个应用服务器组成集群,通过负载均衡技术将用户请求分发到不同的服务器,以应对大量用户同时访问带来的高并发负载压力。
管理
为了实现高可用的应用服务器集群,应用服务器通常被设计为无状态的,不存储用户请求上下文信息。但是网站服务通常需要维护用户会话信息,需要特殊的机制管理才能使集群甚至跨集群的应用服务器可以共享。
静态化动态页面
对于特别访问和更新不频繁的动态页面,可以将其设为静态,即生成静态页面,并使用静态页面优化方法加速用户访问,如反向代理、CDN、浏览器缓存等。
业务拆分
将复杂庞大的业务拆分成多个较小规模的产品,独立开发、部署和维护,不仅降低了系统耦合度,还方便了数据库业务分库。按业务拆分关系数据库技术难度相对较小,效果也比较好。
虚拟化服务器
将物理服务器虚拟化为多态虚拟服务器。对于并发访问量低的服务,更容易用更少的资源构建高可用的应用服务器集群。
3.服务层架构
(包括:分布式消息、分布式服务、分布式缓存、分布式配置等4项技术)
提供基础服务,调用应用层,完成网站业务。服务层介于应用层和存储层之间。顾名思义,它为应用层提供各种服务。服务层本身的内容来源可能与存储层有关。比如缓存就是在存储层做一部分数据。处理和显示被供应层快速调用。服务层的架构技术主要是几个分布式的服务功能:
分布式消息
利用消息队列机制实现消息的异步发送和业务与业务、业务与服务的低耦合业务关系。
分布式服务
提供高性能、低耦合、易于使用、易于管理的分布式服务,并在网站上实施面向服务的架构(SOA)。
分布式缓存
通过可扩展的服务器集群提供大规模的热数据缓存服务是网站性能优化的重要手段。
分布式配置
系统运行需要配置很多参数。如果需要修改这些参数,比如在分布式缓存集群中添加新的缓存服务器,则需要修改应用客户端的缓存服务器列表的配置并重启应用服务器。分布式配置提供系统运行过程中的动态配置推送服务,无需重启服务器即可将配置变化实时推送到应用系统。
4.存储层架构
(包括:分布式文件、关系数据库、数据库、数据同步等4项技术)
为数据和文件提供持久的存储访问和管理服务。这一层也是一般意义上的数据库层,主要用于存储各种数据。当然,大型网站中数据层的概念不仅包括传统的关系型数据库,还包括分布式文件数据、数据库、数据同步技术等。存储层的架构技术主要包括:
分布式文件
网站在线业务中需要存储的文件大多是图片、网页、视频等相对较小的文件,但这些文件的数量非常多,而且通常还在不断增加,并且需要具有更好可扩展性的分布式文件。系统。
关系数据库
主要业务大部分是基于关系型数据库开发的,但是关系型数据库对集群扩展性的支持较差。通过在应用的数据访问层增加数据库访问的路由功能,根据业务配置将数据库访问路由到不同的物理数据库,实现分布式访问关系型数据库。
数据库
目前各种数据库层出不穷,在内存管理、数据模型、集群分布式管理等方面各有优势,但从社区活跃度来看,无疑是目前最好的。
数据同步
在支持全球数据共享的分布式数据库技术成熟之前,拥有多个数据中心的网站必须在多个数据中心之间同步数据,以确保每个数据中心都有完整的数据。在实践中,为了降低数据库的压力php大型网站技术架构,将数据库的事务日志(或写操作日志)同步到其他数据中心,根据日志重放数据php大型网站技术架构,实现数据同步。
5.后台架构
(包括:搜索引擎、数据仓库、推荐系统等3项技术)
在web应用中,除了处理用户的实时访问请求,还有一些后台非实时的数据分析需要处理。后端架构主要进行一些非实时操作,为前端业务处理提供支持。主要的架构技术有:
搜索引擎
即使是网站内部的搜索引擎,也需要增量和全量数据更新、索引构建等,这些操作都是通过后台系统定期执行的。
数据仓库
根据线下数据,提供数据分析和数据挖掘服务。
推荐系统
社交网站和购物网站通过挖掘人与人之间、人与产品之间的关系,发展潜在的人际关系和购物兴趣,为用户提供个性化的推荐服务。
6.数据收集与监控
(包括:浏览器数据采集、服务器业务数据采集、服务器性能数据采集、系统监控、系统告警等5项技术)
监控网站访问和系统运行,为网站运营决策和运维管理提供支持。数据采集和监控存在于整个业务架构的生命周期中。业务上线后,业务是否正常运行,运维人员的主要工作就是数据的采集和监控。当业务系统出现故障或性能出现问题时,也需要更换系统进行支持和问题定位,进而解决问题。该级别的主要架构技术有:
浏览器数据收集
通过在网页中嵌入JS脚本,收集用户浏览器环境和操作记录,分析用户行为。
服务器业务数据收集
服务器业务数据包括两种,一种是收集服务器端记录的用户请求操作日志;另一种是在应用运行时收集业务数据,比如要处理的消息数。
服务器性能数据收集
收集服务器性能数据,如系统负载、内存使用情况、网卡流量等
系统监控
将上述收集到的数据以图表的形式展示出来,方便运维人员监控网站的运行状态。这一步只是一个系统监控。更高级的做法是根据采集到的数据进行自动化运维,自动处理系统异常,吸收自动化控制。
系统报警
如果采集到的数据超过正常情况的预设阈值,例如系统负载过高,会通过邮件、短信、语音电话等方式发出报警信号,等待管理员介入工程师。
7.安全架构
(包括:网络攻击、数据保护等2项技术)
保护网站免受攻击和敏感信息泄露。安全也是企业正常运营的一个非常重要的问题。安全有两个主要方面。一是来自外界的攻击和防护,会影响网站业务的可用性和性能;另一个是网站内部数据的安装和保护,这会影响到数据层的敏感信息总数。主要的安全架构技术有:
网络攻击
HTTP 请求发起的最有害的攻击是 XSS 和 SQL 注入攻击。但只要措施得当,这两种攻击相对容易防范。
数据保护
敏感信息的加密传输和存储,以保护网站和用户资产。
8.数据中心机房架构
(包括:机房架构、机柜架构、服务器架构等3项技术)
大型网站所需的服务器规模数以万计,机房的物理结构也需要注意。对于大型网络系统,物理服务器的数量势必非常庞大。这样就必须在机房、机柜、服务器等层次上有相应的规划,才能更好的支持以上各个层次。
机房架构
对于一个10万台服务器的大型网站,每台服务器的耗电量(包括服务器本身的耗电量和空调的耗电量)每年大约需要2000元左右,所以每年的机房电费为该网站将耗资2亿元人民币。数据中心能耗问题越来越严重。在选择数据中心的地理位置时,趋势是选择散热良好、供电充足的地方。
机柜结构
包括机柜尺寸、网线布局、指示灯规格、不间断电源、电压规格(是48V DC还是220V AC民用)等一系列问题。
服务器架构
由于大型网站的服务器采购规模较大,大多使用定制服务器,而不是购买完整的服务器。根据网站应用需求,定制硬盘、内存甚至CPU,去除不必要的外围接口(显示输出接口、鼠标、键盘输入接口),使空间结构有利于散热。
原文: