大型网站技术架构(1)

news/2024/5/9 14:01:46/文章来源:https://blog.csdn.net/weixin_34184561/article/details/85975077

网站都是从小网站一步一步发展为大型网站的,而这之中的挑战主要来自于庞大的用户、安全环境恶劣、高并发的访问和海量的数据,任何简单的业务处理,一旦需要处理数以 P 计的数据和面对数以亿计的用户时,问题就会变的很棘手。

初始阶段

大型网站都是由小型网站演变而来的,网站架构也一样

小型网站最开始没有太多人访问,只需要一台服务器就绰绰有余,就像这样:

应用程序、数据库、文件等所有资源都在一台服务器上,通常使用 Linux PHP MySQL Apache 就可以完成整个项目部署,然后再买个域名,租一个廉价的服务器就可以开始我们的网站之旅了

应用服务与数据服务分离

随着业务的发展,逐渐的一台服务器已经不能满足需求,这时我们可以将 应用与数据分离

分离之后我们使用到三台服务器:应用服务器、文件服务器和数据库服务器,如下所示:

对于这三台服务器要求各不相同:

  • 应用服务器 要处理大量的业务逻辑,所以需要更好更快更强大的 CPU

  • 数据库服务器 需要快速的进行磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存

  • 文件服务器 需要存储用户上传的文件资源,因此需要更大的硬盘存储空间

应用与数据分离后,各个的职责变得更加专一,网站的性能得到进一步的提升,但随着用户的继续增加,我们需要对网站架构进一步优化

使用缓存改善性能

网站的访问一样遵循二八定律:80% 的业务访问集中在 20% 的数据上面

因此我们要对这一小部分的数据进行缓存来减轻数据库的访问压力,以提高整个网站的数据访问速度,改善数据库的读写性能

网站的缓存可以分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存

  • 本地缓存 的访问速度会快一些,但是受应用服务器内存限制,缓存数据量很有限,而且会出现内存争用的情况

  • 远程分布式缓存 可以使用集群的方式,部署大内存的服务器作为专门的缓存服务器,可以在理论上做到不受内存容量限制的缓存服务

如下所示:

使用缓存后,数据访问压力得到了有效的缓解,但单一的应用服务器能够处理的请求连接数有限,在访问的高峰期,应用服务器又会成为网站性能的瓶颈

 

使用应用服务器集群改善网站并发处理能力

使用集群是网站解决高并发,海量数据问题的常用手段,当你纵向提升到一定程度后,那就该开始横向提升了

当一台服务器的处理能力不足时,与其换一台更强大的服务器,不如增加一台服务器去分担原有的服务器压力。对于大型网站而言,无论多么强大的服务器,都满足不了持续增长的业务需求,更高效的方式就是增加服务器来分担压力

对于网站架构而言,如果增添一台新的服务器可以改善负载压力,那么就可以使用同样的方式来应对源源不断的业务需求,从而实现系统的可伸缩性

通过负载均衡调度服务器,可以将用户请求分发到应用服务器集群里的任何一台服务器上,如果有更多的用户,可以增加更多的应用服务器,使应用服务器的负载压力不再成为网站的性能问题

 

数据库读写分离

在使用了缓存后,大多数的操作不经过数据库访问就能完成,但仍有一部分读操作(缓存访问未命中,缓存过期)和所有的写操作需要访问数据库,在网站的用户量达到一定时,数据库的负载问题就来了

目前大多数的数据库都支持主从热备份,通过配置两台服务器的主从关系,可以将一台数据库服务器的数据更新同步到另一台,网站利用这一功能,实现数据库读写分离,从而进一步改善数据库负载压力

应用服务器在写操作的时候,访问主数据库,主数据库通过主从复制机制把数据同步更新到从数据库,这样当应用服务器进行读操作的时候,就能访问从数据库获取数据

使用反向代理和 CDN 加速网站响应

CDN 和 反向代理 的基本原理都是缓存

  • CDN 部署在网络供应商的机房,用户在进行请求时,会从距离最近的网络供应商机房获取数据

  • 反向代理 则部署在中心机房,当用户请求到达中心机房后,会首先访问反向代理服务器,如果反向代理服务器中缓存这用户请求的资源,就直接返回给用户

使用 CDN 和 反向代理 都是为了尽快返回给用户数据,一方面加快用户访问速度,另一方面也减轻了后端服务器的压力

使用分布式文件系统和分布式数据库系统

随着网站业务的继续发展,这时候就可以像分布式应用服务器一样,对数据库系统和文件系统进行分布式管理

分布式数据库 是网站数据库拆分的最后手段,一般我们可以采取业务分库,根据不同业务的数据库部署在不同的数据库服务器上

使用 NoSQL 和搜索引擎

这两个方式都是依赖于互联网的技术手段,应用服务器通过一个统一的数据访问模块来访问各种数据,从而减轻应用程序有多个数据源的麻烦

 

业务拆分

对于大型网站,我们可以分而治之,把整个网站的业务分为不同的模块,比如大型的交易购物完整可以分为首页、店铺、订单、买家等,分别交给不同的业务团队来负责

同时我们将一个网站根据模块划分拆分成多个应用,每个应用进行单独的部署和维护,应用之间通过超链接建立关系(指向不同的应用地址),最后通过相同的数据存储系统来构成一个互相关联的完整系统。

 

分布式服务

随着业务拆分,整个系统越来越大,应用的整体复杂度呈指数级增加,部署维护越来越困难,并且所有的应用服务器都要与数据库服务连接, 在数万台服务器规模的情况下,这些连接的数目是服务器规模的平方,导致资源不足

这时候就要对相同的业务进行提取,独立部署,把这些可重用的业务和连接数据库等,提取出来作为公共业务服务,而应用系统只需要通过分布式服务访问公共业务服务完成业务操作

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

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

相关文章

买空间做网站_企业如何搭建自己的官方网站

如今网站建设对于一个企业来说,所起到的作用是至关重要的,在互联网时代,更需要顺应社会的潮流,才能够真正的有利于企业的长远发展。网站建设除了网页设计之外,其他都是比较客观的条件,选择了就不容易修改&a…

IIS发布网站,访问时出现无法识别的属性“targetFramework”错误

今天在IIS发布网站后,访问时出现无识别的属性“targetFramework”错误 错误描述: 错误原因: 是由IIS配置该站点的.NET Framework 版本与程序中的.NET Framework配置的版本不一致引起的 解决方法: 出现这个错误的原因是NET Framewo…

java开发企业网站开发文档6,java开发文档

java开发文档比如商业有什么样的本质,同样的产品在商业里的可行性,你去跨行业去问商业人士。huarimani说:“开源企业的根本原则是结构化的商业模式,模式化的商业模式就是结构化的商业模式。自动化化的商业模式就是为了将产品在众多…

【Python爬虫学习实践】基于Xpath和lxml库解析网站

在之前的学习笔记中,介绍了Xpath语法规则和lxml库的基本使用,同时也列举出了一部分示例代码。为了更加深入地学习和运用好这两大工具,下面以爬取Tencent招聘网站职位信息为实例介绍在实践中基于Xpath和lxml库编写爬虫的基本流程和方法。 Tenc…

基于django的视频点播网站开发-step15-项目部署

项目部署是一个比较大的工程,但这是笔者最喜欢的一个环节,因为在部署过程中,会遇到很多疑难问题,这些问题能促使我学到很多很多的技术。 项目部署,顾名思义,就是将自己的程序存放到远程服务器上面&#xff…

使用Quasar设计Material和IOS风格的响应式网站

GITHUB:使用Quasar设计旅游网站文章链接:使用Quasar设计Material和IOS风格的响应式网站 Quasar Quasar是一款基于Vue.js开发的UI框架,可以让你轻松构建网站简洁明快的界面,更重要的是它还能让你轻松做好RWD(响应式网站…

关于网站架构设计的知识

网站架构,一般认为是根据客户需求分析的结果,准确定位网站目标群体,设定网站整体架构,规划、设计网站栏目及其内容,制作网站开发流程及顺序,以最大限度地进行高效资源分配与管理的设计。其内容有程序架构&a…

java验证码的实现原理_web技术开发:网站的验证码的验证原理是什么?怎么实现的?...

src链接到生成验证码图片的servlet应用于数据回显CheckImgServletpackage com.huanfeng.cn;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.BufferedReader;import jav…

建立php的网站配置文件,网站的搭建流程,lnmp环境网站目录以及配置文件,安全等介绍!...

上节我们教了大家linux系统php环境的安装,这里我简单的教大家怎么配置安全,网站的根目录在哪,怎么样才能让一个网站运行起来。一个环境已经安装好了,点击ftp按钮进入ftp管理ftp管理界面可以直观的看到文件和目录等。首先是数据库的…

去哪儿网代理网站机票价格采集方案

2019独角兽企业重金招聘Python工程师标准>>> 原文作者:西安鲲之鹏 原文链接:http://http://www.site-digger.com/html/articles/20120509/33.html 去哪儿网的代理网站有自己独立的机票搜索接口,例如http://xyx.trade.qunar.com/si…

建设优质手机网站必读

在2013年底百度曾经发布了一份《2014中国网站运营发展趋势报告》,里面详细分析了目前中文网站的发展趋势,其中值得我们注意的是,报告中首次将PC端网站与移动端网站分开说明,另外一个可喜的发现是,目前在所有的网站中&a…

7个最好的文件存储网站

最近,文件越来越多,因为在不同的地方轮换上网,地方的不确定性迫使我去寻找一些高性能且免费的文件存储站点。或者,你目前有一些集体照片,需要传送给同学以及朋友,但是邮箱的附件的限制性让人霎时头痛。现在…

这10件事情,你做网站之前都有考虑吗?

2019独角兽企业重金招聘Python工程师标准>>> 1.命名尽量统一。 命名有很多地方,比如页面该如何统一命名,要是用wordpress建站,命名就该遵循wordpress的文件命名规范,比如文章页single.php,分类页category.php,搜索页se…

GCOGE技术内幕-Gcoge酷鸽传媒官方网站 Gcoge.com-酷哥一下,问题搞定!

Gcoge酷鸽传媒官方网站 Gcoge.com-酷哥一下,问题搞定!- 酷哥引擎新媒体 酷哥搜索珀利引擎-全球唯一全新概念珀利引擎新媒体--聚合优化创新 新思维 心服务~一个域名,通行天下!全球最大聚合门户!全球卓著搜索专家! 国内外著名搜索引擎聚合门户~我们的宗旨是为人民服务…

配置Nginx网站https访问、http共存访问、http强制跳转到https

最近公司一客户要求服务器与客户端之间传输内容是加密的,通过https协议访问,于是使用OpenSSL生成证书,默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数,需要确保机器…

成都PC网站建设需要考虑哪些费用呢

亿合科技PC建设小编分享下:成都PC网站建设需要考虑哪些费用呢?随互联网的发展,越来越多人想建设自己网站,站长最关心的问题之一就是网站建设需要多少钱。每个网站建设的费用都是不一样的,但是都需要涵盖几个方面的费用…

Linux系统的Web网站服务

实验要求:1.编译安装httpd服务器2.构建基于域名的虚拟web主机3.部署AWStats分析系统4.实现httpd服务的访问控制1.编译安装httpd服务器使用tar命令解包配置、编译、安装命令:./configure配置选项:--prefix:指定httpd服务程序的安装…

python搭建个人网站_Django快速搭建个人网站应用,源码开源

Django入门与实践应用,Python制作个人博客网站。Django是Python的高级Web框架,功能非常强大,但是你也不要被它给吓到了,其实Django搭建Web应用也非常简单,下面让小编以学习及分享的态度给大家讲一个Django入门的web应用…

现实世界的Windows Azure:专访PrivacyCentral网站创始人、CEO Zoiner Tejada

作为现实世界Windows Azure博客系列中的一部分,我联系了PrivacyCentral网站创始人、CEO Zoiner Tejada,来探寻该公司是如何利用Windows Azure平台及Ruby语言来搭建其强大的在线隐私服务。点击这里来了解PrivacyCentral的成功案例。下面我们来看看Tejada先…

多语言网站(如何实现网站的多语言版本?)

近日,公司要做一个多语言的网站,今天在网上收集资料,下面是个人觉得很不错的文章,有兴趣的朋友可以参考下: 多语言网站,顾名思义就是能够以多种语言(而不是单种语言)为用户提供信息服…