大型网站的架构

news/2024/5/20 12:06:55/文章来源:https://blog.csdn.net/qq_31142553/article/details/85527641

一、大型网站的软件系统的特点

  • 高并发,大流量
  • 高可用
  • 海量数据
  • 用户分布广泛,网络情况复杂
  • 安全环境恶劣
  • 需求快速变更,发布频繁
  • 渐进式发展

二、大型网站的架构演化发展历程

1、初始阶段的网站架构

最开始网站的应用程序、数据库、文件等所有的资源都在一台服务器上。最典型的就是LAMP技术了:服务器操作系统使用Linux,应用程序使用PHP开发,数据库使用MySQL,然后部署在Apache上。

2、应用服务和数据服务分离

随着网站业务的发展,一台服务器的性能和存储空间逐渐不能满足需求,这时就将应用和数据分离,整个网站使用三台服务器:应用服务器、文件服务器和数据库服务器。三台服务器对硬件资源的要求也各不相同:应用服务器需要更快更强大的CPU,数据库服务器需要更快的硬盘的更大的内存,文件服务器需要更大的硬盘。

3、使用缓存改善网站性能

网站访问特点和现实世界的财富分配一样遵循二八定律:80%的业务访问集中在20%的数据上。把大部分业务访问的小部分数据缓存在内存中,可以减少数据库的访问压力,提高整个网站的数据访问速度。

缓存可以分为两种:应用服务器上的本地缓存和分布式缓存服务器上的远程缓存。本地缓存访问速度更快,但缓存数据有限,而且会出现和应用程序争用内存的情况。远程缓存可以使用集群的方式,理论上可以做到不受内存容量的限制。

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

一台应用服务器所能处理的请求有限(一台Tomcat大概六七百),企图去换更强大的服务器也终究会满足不了持续增长的业务需求,而且网站有访问高峰期和低谷期,扩展性也不好。使用集群是网站解决高并发、海量数据问题的常用手段。通过负载均衡调度服务器,可将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上。

5、数据库读写分离

使用缓存后,仍有一部分读操作(缓存访问不命中、缓存过期)和全部的写操作需要访问数据库。数据库服务器也终究会因为负载压力过高而成为网站的瓶颈。

目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到另一台数据库服务器。

应用服务器在写数据的时候,访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库,这样当应用服务器读数据的时候,就可以通过从数据库获得数据。

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

CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据;而反向代理则部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中缓存着用户请求的资源,就将其直接返回给用户。

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

只有在单表数据规模非常庞大的时候才使用分布式数据库。网站更常用的数据库拆分手段是业务分库。

8、使用NoSQL和搜索引擎

随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,关系型数据库逐渐不能满足需求。网站需要采用一些非关系型数据库技术如NoSQL和非数据库查询技术如搜索引擎。

9、业务拆分

大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站按业务拆分,如购物系统将首页、商铺、订单、购物车、支付等分成不同模块,分归不同的团队负责,作为不同的应用独立开发和独立部署。用得最多的是各应用通过访问同一个数据存储系统来构成一个关联的完整系统。

10、分布式服务

既然每一个应用系统都需要执行许多相同的业务操作,比如用户管理、商品管理等,那么可以将这些公用的业务提取出来,独立部署。由这些可复用的业务连接数据库,提供公用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。

三、大型网站的架构模式

1、分层

对网站软件系统在横向方面进行切分,分为应用层、服务层、数据层。

  • 应用层:负责具体业务和视图展示,如网站首页及搜索输入和结果展示。
  • 服务层:为应用层提供服务支持,如用户管理服务、购物车服务等。
  • 数据层:提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等。

2、分割

在纵向方向对软件进行切分,将网站按不同的功能和服务分割,包装成高内聚低耦合的模块单元。一方面有助于软件的开发和维护,另一方面便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。比如将软件系统的购物、论坛、搜索、广告分割成不同的应用。

3、分布式

在网站应用中,常用的分布式方案有以下几种。

  • 分布式应用和服务:将分层和分割后的应用和服务模块分布式部署。
  • 分布式静态资源:网站的静态资源如JS、CSS、Logo图片等资源独立分布式部署。
  • 分布式数据和存储:为网站应用而生的各种NoSQL产品几乎都是分布式的。
  • 分布式计算:Hadoop及其MapReduce分布式计算框架,移动计算而不是移动数据。
  • 分布式配置:支持网站线上服务器配置实时更新。
  • 分布式锁:分布式环境下实现并发和协同。
  • 分布式文件系统:FastDFS、HDFS。

4、集群

提高网站高并发和高可用的能力。

5、缓存

提高数据访问速度。

  • CDN
  • 反向代理
  • 本地缓存
  • 分布式缓存

6、异步

  • 降低软件耦合性。
  • 提高系统可用性。
  • 加快网站相应速度。
  • 消除并发访问高峰。

7、冗余

服务器故障时保证数据不丢失。

8、自动化

  • 发布过程自动化
  • 自动化代码管理
  • 自动化测试
  • 自动化安全检测
  • 自动化部署
  • 自动化监控
  • 自动化报警
  • 自动化失效转移
  • 自动化失效恢复
  • 自动化降级
  • 自动化分配资源

9、安全

  • 通过密码和手机验证码进行身份认证。
  • 对网络传输数据进行加密。
  • 使用验证码识别机器人程序滥用网络资源攻击网站。
  • 攻击网站的XSS攻击、SQL注入进行编码转换。
  • 垃圾信息、敏感信息的过滤。
  • 交易转账等重要操作的风险控制。

四、大型网站的架构技术一览

1、前端架构

  • 浏览器优化技术
  • CDN
  • 动静分离,静态资源独立部署
  • 图片服务
  • 反向代理
  • DNS

2、应用层架构

  • 开发框架
  • 页面渲染
  • 负载均衡
  • Session管理
  • 动态页面静态化
  • 业务拆分
  • 虚拟化服务器

3、服务层架构

  • 分布式消息
  • 分布式服务
  • 分布式缓存
  • 分布式配置

4、存储层架构

  • 分布式文件
  • 关系数据库
  • NoSQL数据库
  • 数据同步

5、后台架构

  • 搜索引擎
  • 数据仓库
  • 推荐系统

6、数据采集与监控

  • 浏览器数据采集
  • 服务器业务数据采集
  • 服务器性能数据采集
  • 系统监控
  • 系统报警

7、安全架构

  • Web攻击
  • 数据保护

8、数据中心机房架构

  • 机房架构
  • 机柜架构 
  • 服务器架构

本文主要摘自 阿里大牛 李智慧 写的《大型网站技术架构·核心原理与案例分析》。

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

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

相关文章

发现一个国外的学习网站

一个国外的学习网站 udacity.com 优达学成。 免费课程 https://cn.udacity.com/courses/all 全部的课程 里面有不少有意思的课程。 课程是英文的带中文翻译。 还有一个机器学习的课程,感觉好高大上啊。 总结 使用上有点不太方便。 本地化做的还不是很好。 但是…

网站导航代码最精简的设置

2019独角兽企业重金招聘Python工程师标准>>> <div class"nav"> <div class"wrapper"> <ul class"nav-list fix"> <li class"item"> <…

dedecms织梦网站搬家教程

2019独角兽企业重金招聘Python工程师标准>>> 方法一&#xff1a;利用网站管理后台备份数据库 1. 登陆你的织梦网站后台&#xff0c;在“系统”区找到“数据库备份/还原”&#xff0c;将数据库进行“备份”&#xff1b; 2. 数据库备份完成后&#xff0c;去主机管理平…

低版本ie运行html5+css3的网站方法

为什么80%的码农都做不了架构师&#xff1f;>>> htmlshiv.js Remy的 HTML5shiv通过JavaScript 来创建HTML5元素(如 main, header, footer等)。在某种程度上通过JavaScript 创建的元素是 styleable(可样式)的。我们可以花很多时间来思考其运行原理&#xff0c;但谁会…

《网站情感化设计与内容策略》一1.3 你好,马斯洛

本节书摘来自异步社区《网站情感化设计与内容策略》一书中的第1章&#xff0c;第1.3节&#xff0c;作者 【美】Aarron Walter , Erin Kissane&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 1.3 你好&#xff0c;马斯洛 在20世纪50年代至60年代&#xff0c;…

渗透测试(面试)如何获取一个网站的真实ip

真实ip获取 为了保证网络的稳定和快速传输&#xff0c;网站服务商会在网络不同的位置设置节点服务器&#xff0c;通过CDN的全称是Content Delivery Network&#xff0c;即内容分发网络技术。将网络请求分发到最优的节点服务器上面。如果开启了CDN加速&#xff0c;就无法通过网…

网站项目管理-如何做好需求分析(转)

前言 随着技术的不断发展和用户对网站功能性的需求不断提高&#xff0c;如今网站项目的设计已经不能再仅仅简单地利用静态Html文件来实现&#xff0c;与前几年网站设计由一两名网页设计师自由的创作相比&#xff0c;网站项目的设计和开发越来越像一个软件工程&#xff0c;也越来…

影响网站成败重要因素

因为自己早就有建站这个打算&#xff0c;所以也看过不少别人建的站。个人有点建站体会&#xff0c;觉着对增加网站访问量和对浏览者的印象 招募忠实访客有点作用。可能有点老套了&#xff0c;但绝对字字发自肺腑。 一、应该说是最重要的就是网站内容。看到别人写过很多相关文章…

MOSS 2007应用日记(21)——如何通过添加链接让子网站显示在主页

进入“网站目录”网站&#xff0c;点击“创建网站”&#xff0c;添加一个子网站在新建网站页面&#xff0c;输入网站的标题和URL&#xff0c;这里输入“test”下面的权限、导航保持默认。网站类别也不做任何选择。网站创建成功后&#xff0c;我们只能在网站地图里面看到相关的链…

Windows10中Tensorboard“无法访问此网站”解决办法

启动TensorBoard命令&#xff08;如下&#xff09;&#xff0c;谷歌浏览器中输入http://handsomeboy:6006/无法访问TensorBoard tensorboard --logdir"./summary/"尝试关闭防火墙&#xff0c;修改文件夹的访问权限未果。 启动命令添加host选项&#xff0c;奇迹发…

html网页引导,网站引导功能实现

欢迎加入前端交流群背景&#xff1a;发布了新网站&#xff0c;需要引导用户操作或者发布了新功能需要展示给用户实现&#xff1a;借助driver.js 第三方类库实现demo&#xff1a;样式如下图实现方式&#xff1a;点击查看示例代码api介绍&#xff1a;1 const driver new Driver(…

云服务器 ECS 建站教程:搭建Joomla基础管理平台

搭建Joomla基础管理平台Joomla是一套知名的内容管理系统。Joomla是使用PHP语言加上Mysql数据开发的软件系统&#xff0c;Joomla的最新版本是3.x&#xff0c;这一版本实现了许多技术上的优化调整&#xff0c;是目前的稳定版本。 本文主要说明如何在阿里云ECS上搭建Joomla基础管理…

刷题网站

2019独角兽企业重金招聘Python工程师标准>>> 上周被老大叫去出一点面试题&#xff0c;周末在网上搜了半天才凑出来一份。 过程中&#xff0c;自已因为要做验证&#xff0c;又发现自已的基本能力真得是太鶸了。因为是搜面试&#xff0c;又看到挺多面试的建议。个人为…

[转]超越竞争对手:SEO一击必杀

为什么80%的码农都做不了架构师&#xff1f;>>> 所谓知己知彼&#xff0c;百战不殆&#xff0c;SEO也是如此。最近很多朋友跟我抱怨他们的遇到了瓶颈&#xff0c;该做的都做了&#xff0c;不见效果&#xff0c;不知道该怎么做了。在交流的过程中&#xff0c;我发现…

faq网站开源java_AnyQ首页、文档和下载 - 开源 FAQ 问答系统 - OSCHINA - 中文开源技术交流社区...

AnyQ(ANswer Your Questions)AnyQ(ANswer Your Questions) 开源项目主要包含面向FAQ集合的问答系统框架、文本语义匹配工具SimNet。问答系统框架采用了配置化、插件化的设计&#xff0c;各功能均通过插件形式加入&#xff0c;当前共开放了20种插件。开发者可以使用AnyQ系统快速…

java 根据星期得到日期_如何给女友解释为什么一到年底,部分网站就会出现日期混乱的现象?...

2019年最后一天&#xff0c;在家里看着跨年晚会&#xff0c;享受着这一年最后一天的闲暇时光&#xff0c;女朋友在旁边玩手机。看了一会之后她突然问我一些很奇怪的问题。于是我拿过他的手机&#xff0c;看到了下面这一幕&#xff1a;这是微信官方出的公众号管理的APP&#xff…

在SharePoint2007中创建站点一:相关服务的启动

在程序中打开“SharePoint3.0管理中心” 点击“SharePoint3.0管理中心”会弹出要求输入用户名和密码的对话框 输入用户名和密码&#xff08;注意用户名需要是域名加上用户名&#xff09;&#xff0c;点击“确定” 在上图中可以看出&#xff0c;服务器场配置未完成&#xff0c;所…

视频网站视频缩略图显示

上传视频获得视频的某一帧的缩略图可由jsp或者php等实现&#xff0c;记录一下很简单的缩略图显示在页面&#xff0c;鼠标经过&#xff0c;播放按钮显示&#xff0c;和一般视频网站上一样。 html代码 <div class"left news_right"> <div> …

长尾词推广系统推荐乐云seo_做好这三点,你的SEO优化工作事半功倍

SEO优化是一个长期的工作&#xff0c;SEO优化的第一步&#xff0c;是要确定适当的关键词。如何确定适当的关键词?就需要SEOer对大量关键词进行分析研究&#xff0c;基础打好了&#xff0c;就一定会有更好的效果。做好SEO的策略&#xff1a;1、做好关键词的分类做SEO优化&#…

python自动化爬取app_松勤软件自动化测试-如何利用Python爬取网站数据?

这样就装载进一个cookie&#xff0c;用urlOpener去open登录以后就可以记住信息。3.断线重连如果只是做到上面的程度&#xff0c;不对open进行包装的话&#xff0c;只要网络状况有些起伏&#xff0c;就直接抛出异常&#xff0c;退出整个程序&#xff0c;是个很不好的程序。这个时…