【服务器架构】十张图带你了解大型网站架构

news/2024/5/20 15:31:20/文章来源:https://fiend.blog.csdn.net/article/details/95166360

参考文章:【服务器架构】十张图带你了解大型网站架构

 说道大型网站,就的先说大型网站的特点:高并发,大流量,高可用,海量数据等。下面就说说大型网站的架构演化过程吧。

1、初始阶段的网站架构

            初始阶段都比较简单,通常一台服务器就可以搞定一个网站了,看图。

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

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

        随着网站业务的发展,一台服务器逐渐不能满足需求;这时候就需要将应用和数据分离,如图。

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

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

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

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

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

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

        毫无疑问,现在的网站基本上都会使用缓存,即:80%的业务访问都会集中在20%的数据上。

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

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

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

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

         因为单一应用服务器能够处理的请求连接有限,在网站访问高峰时期,应用服务器会成为整个网站的瓶颈。因此使用负载均衡处理器势在必然。通过负载均衡调度服务器,可将来自浏览器的访问请求分发到应用的集群中的任何一台服务器上。

5、数据库读写分离

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

当用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。而目前主流的数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库的数据更新同步到另一台服务器上。网站利用数据库这一功能实现数据库读写分离,从而改善数据库负载压力。

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

6、使用反向代理和CDN加上网站相应

       提高网站的访问速度,主要手段有使用CDN和反向代理。

      CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,而反向代理是部署在网站的中心机房,当用户请求到达中心机房后,首先访问的反向代理,如果反向代理缓存着用户请求的资源,则直接返回给用户。

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

    任何强大的单一服务器都满足不了大型网站持续增长的业务需求。

     分布式数据库时网站数据库拆分的最后手段,只用在单表数据规模非常大的时候才使用。不到不得已时,网站更常用的数据库拆分手段是业务拆分,将不同业务的数据部署在不同的物理服务器上。

8、使用NoSQL和搜索引擎

       搜素引擎也基本已经形成现在大型网站必须提供的功能了,网站需要采用一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎。

9、业务拆分

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

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

10、分布式服务

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

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

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

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

相关文章

用gogs搭建属于自己的git网站

参考文章:用gogs搭建属于自己的git网站 如果你对docker的操作不太了解, 建议先阅读 从零搭建docker私有仓库gogs是一款极易搭建的自助 Git 服务, 掌握了它, 我们就可以搭建自己的git服务站点gogs官网: https://gogs.io/, github中文地址:https://github.com/gogs/go…

《大型分布式网站架构设计与实践》——常见的Web攻击手段

常见的Web攻击手段 XSS攻击 跨站脚本攻击(Cross Site Scripting),指的是攻击者在网页中嵌入恶意脚本程序,当用户打开该网页时,脚本程序便开始在客户端的浏览器上执行,以盗取客户端cookie、用户名密码&…

《大型网站技术架构:核心原理与案例分析》——大型网站架构演化过程

大型网站软件系统的特点 高并发,大流量高可用海量数据用户分布广泛,网络情况复杂安全环境恶劣需求快速变更,发布频繁渐进式发展 大型网站架构演化发展历程 初始阶段的网站架构 LinuxPHPApacheMySQL 应用服务和数据服务分离 演化原因 一…

用户行为分析大数据系统(实时统计每个分类被点击的次数,实时计算商品销售额,统计网站PV、UV )

Spark Streaming实战对论坛网站动态行为pv,uv,注册人数,跳出率的多维度分析_小强签名设计 的博客-CSDN博客_spark streaming uv 实时统计每天pv,uv的sparkStreaming结合redis结果存入mysql供前端展示 实时统计每天pv,uv的sparkStreaming结合…

机器学习(三)-- KNN(K近邻分类算法)、电影分类、改进约会网站的配对效果

决策树< 朴素贝叶斯< KNN K近邻算法&#xff1a;根据距离来做排序&#xff0c;距离哪些同类的数据比较近则属于哪一类 &#xff08;1&#xff09;从计算结果直观上来看&#xff0c;在这三种算法中&#xff0c;KNN算法的计算准确率普遍较高&#xff0c;且kNN算法在训练数…

【大型分布式网站】抗住千万流量的大型分布式系统架构设计

一、大型分布式网站架构技术 1.1 大型网站的特点 用户多&#xff0c;分布广泛 大流量&#xff0c;高并发 海量数据&#xff0c;服务高可用 安全环境恶劣&#xff0c;易受网络攻击 功能多&#xff0c;变更快&#xff0c;频繁发布 从小到大&#xff0c;渐进发展 以用户为中…

基于服务器的个人博客网站搭建

网站搭建 目录 网站搭建 A1 基础 A2 域名 2.1 域名解析 2.2 添加记录 2.2 域名备案 A3 ECS云服务器搭建博客 3.1 安全组添加8888端口 3.2 安装宝塔 3.3 访问网站&#xff0c;登录宝塔 3.4 安装wordpress 3.5 配置wordpress 3.6 进入后台 A4 问题 4.1 关于访问公…

网站备案后没有找到站点

A1 问题&#xff1a; A2 原因&#xff1a; 您没有将此域名或IP绑定到对应站点!配置文件未生效! A3 解决&#xff1a; 检查是否已经绑定到对应站点&#xff0c;若确认已绑定&#xff0c;请尝试重载Web服务&#xff08;大部分是这个问题&#xff0c;添加对应站点和开放端口&am…

linux一键卸载安装脚本,在使用LANMP Linux一键包卸载安装网站服务器要注意的事情...

前言之前在某个论坛里看到了一个关于Nginx如何限制并发的问题&#xff0c;也知道一些朋友也对博客做了一些访问限制(各种什么Js验证、cookie验证&#xff0c;还加了个Fail2ban什么的)然后觉得自己的博客很稳&#xff0c;恩&#xff0c;可能&#xff0c;也许&#xff0c;大概………

个人网站www.pixysoft.net设计系列: 数据库同步的思考

个人网站www.pixysoft.net设计系列: 数据库同步的思考Introduction:本网站使用WebService进行远程网站管理.因此有数据同步的问题表结构设计 说明:网站管理分为本地数据库(如上图设计)和网站数据库. 通过本地数据库管理网站数据库..SiteMapContent保存导航文件.WebPageInfo保存…

使用Web标准建站

使用Web标准建站第1天:选择什么样的DOCTYPE 前言 大家好&#xff01;这个系列文章是按阿捷自己制作这个站点的过程编写的。之前阿捷也一直没有制作过一个真正符合web标准的网站。现在边参考国外资料边制作&#xff0c;同时把过程中的心得和经验记录下来&#xff0c;希望对大家有…

一步一步SharePoint 2007之二十一:解决实现注册用户后,自动具备访问网站的权限的问题(3)——创建用户...

摘要  本篇文章将记录如何解决实现注册用户后&#xff0c;自动具备访问网站的权限的第三部分。   前面各项准备工作都做完了&#xff0c;现在我们就来进行解决实现注册用户后&#xff0c;自动具备访问网站的权限的最后一步设置吧&#xff01;正文  下面将记录每一步的实现…

[电子商务网站设计] 之 Passport

从所承担的功能上来说&#xff0c;Passport 是一个系统级别的服务&#xff0c;而不仅仅用来进行用户管理。对于任何一个网站而言&#xff0c;随着业务的发展&#xff0c;多业务的网站群整合不可避免&#xff0c;那么作为整合的通道之一&#xff0c;用户数据共享自然就是一个关键…

[CSS]30种时尚的CSS网站导航条

【原文地址】&#xff1a;http://coolshell.cn/?p562 我想&#xff0c;大家在上网的时候一定见过很多很多种各式各样的网站导航条的设计。这些导航条基本上来说都是用CSS来做的。这里&#xff0c;我们将向你介绍几种最不错的用CSS设计的网站导航条。希望你会喜欢。 1. The Men…

用python爬取网页内容_用python爬取网页文本内容,让你快速浏览网站内容

大家好&#xff0c;我是咿哑呀。今天我教大家学习网络爬虫&#xff0c;这个爬虫能够爬取网页文本内容&#xff0c;提高大家浏览网页的速度。下面我把代码贴出&#xff0c;大家仔细研究&#xff1a;from urllib import request, parsefrom urllib.parse import quoteimport stri…

python语言的主要网站是_TIOBE:2018年度编程语言 Python八年后重登王座

2003-2018 年度最佳编程语言&#xff1a;可以看到&#xff0c;Python 上一次获得此荣誉&#xff0c;是在 2010 年。 其他值得关注的变化还有&#xff1a; MATLAB —— 从第 18 名升至第 11 名 Kotlin —— 从第 39 名升至第 31 名 Rust —— 从第 46 名升至第 33 名 Julia ——…

网站变成灰色

昨天是4月4日清明节&#xff0c;全国都在为抗击疫情&#xff08;新冠肺炎&#xff09;做斗争牺牲的烈士和逝世的同胞哀悼&#xff0c;各大网站都会让自己的网站的全部网页变成灰色&#xff08;黑白色&#xff09;&#xff0c;以表示我们对逝者的悼念。当然&#xff0c;今天已经…

网站企业信息查询

1. 站长工具 2. 爱站网 3. ICP备案查询 4. 公安备案查询 5. 企业查询 站长工具中的【星网大数据】 全国组织机构统一社会信用代码公示查询平台 爱企查 天眼查

web developer tips (84):在Visual Web Developer中设置web网站的起始页

原文地址&#xff1a;How to set a Start page for your Web Site in Visual Web Developer? 如果你正在开发网站&#xff0c;为了测试网站你想启动某个特定的网页。默认的情况下&#xff0c;当你启动调试的时候&#xff0c;Visual Studio 2008运行的页面是设计器中当前激活的…

ajax nginx 转发 sessionid_教你快速使用nginx部署网站

前言如果服务器只需要放置一个网站程序&#xff0c;解析网站到服务器的网站&#xff0c;网站程序监听80端口就可以了。如果服务器有很多应用&#xff0c;借助nginx不仅可以实现端口的代理&#xff0c;还可以实现负载均衡。本文将详细介绍前端及nodeJS项目在服务器配置时需要用到…