小型网站到大型网站的演化过程

news/2024/5/19 13:57:08/文章来源:https://blog.csdn.net/B_boy_hong10/article/details/79129492

本文摘自书籍《大型网站技术架构.核心原理与案例分析》

  • 1. 初始阶段:

    应用程序、数据库、文件等所有资源都在一台服务器上。
    这里写图片描述

  • 2. 应用服务与数据服务分离

    应用和数据分离后整个网站使用三台服务器:应用服务器、文件服务器和数据库服务器。这三台服务器对硬件资源的要求各不相同,应用服务器需要处理大量的业务逻辑,因此需要更快更强大的CPU;数据库服务器需要快速磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存;文件服务器需要存储大量用户上传 的文件,因此需要更大的硬盘。
    这里写图片描述

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

    网站访问特点和现实世界的财富分配一样遵循二八定律:80%的业务访问集中在20%的数据上。既然大部分业务访问集中在少部分数据上,那么把这部分数据缓存在内存中,可减少数据库访问压力,提高站点性能,改善数据库写入性能。
    网站使用的缓存可以分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存。本地缓存的访问速度更快一些,但是受应用服务器内存限制,其缓存数据量有限,而且会出现和应用程序争用内存的情况。远程分布式缓存可以使用集群的方式,部署大内存的服务器作为专门的缓存服务器,可以在理论上做到不受内存容量限制的缓存服务。
    这里写图片描述

  • 4. 使用应用服务器集群改善站点并发处理能力

    使用集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。
    这里写图片描述
    通过负载均衡调度服务器,可将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈。

  • 5. 数据库读写分离

    网站在使用缓存后,使绝大部分数据读操作访问都可以不通过数据库就能完成,但是仍有一部分读操作(缓存访问不命中、缓存过期)和全部的写操作需要访问数据库,在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站利用数据库的这一功能,实现数据库读写分离,从而改善数据库负载压力。
    这里写图片描述
    应用服务器在写数据的时候,访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库,这样当应用服务器读数据的时候,就可以通过从数据库获得数据。为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用透明。

  • 6. 使用反向代理与CDN加速网站响应

    网站访问延迟和用户流失率正相关,网站访问越慢,用户越容易失去耐心而离开。为了提供更好的用户体验,留住用户,网站需要加速网站访问速度。主要手段有使用CDN和反向代理。
    这里写图片描述
    CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据;而反向代理则部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中缓存着用户请求的资源,就将其直接返回给用户。使用CDN和反向代理的目的都是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。

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

    任何强大的单一服务器都满足不了大型网站持续增长的业务需求。数据库经过读写分离后,从一台服务器拆分成两台服务器,但是随着网站业务的发展依然不能满足需求,这时需要使用分布式数据库。文件系统也是一样,需要使用分布式文件系统。
    这里写图片描述
    分布式数据库是网站数据库拆分的最后手段,只有在单表数据规模非常庞大的时候才使用。不到不得已时,网站更常用的数据库拆分手段是业务分库,将不同业务的数据库部署在不同的物理服务器上。

  • 8. 使用NOSQL与搜索引擎

    随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎,NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具有更好的支持。应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。
    这里写图片描述

  • 9. 业务拆分

    大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务分成不同的产品线,如大型购物交易网站就会将首页、商铺、订单、买家、卖家等拆分成不同的产品线,分归不同的业务团队负责。将拆分出来的业务独立成一个应用,对应用进行独立部署
    这里写图片描述

  • 10. 分布式服务

    随着业务拆分越来越小,存储系统越来越庞大,应用系统的整体复杂度呈指数级增加,部署维护越来越困难。由于所有应用要和所有数据库系统连接,在数万台服务器规模的网站中,这些连接的数目是服务器规模的平方,导致存数据库接资源不足,拒绝服务。既然每一个应用系统都需要执行许多相同的业务操作,比如用户管理、商品管理等,那么可以将这些共用的业务提取出来,独立部署。由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。
    这里写图片描述

  • 注意
    不要为了分布式而分布式,网站的架构应该是循序渐进的、满足需求的。

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

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

相关文章

python爬取唯品会电商网站数据并保存到csv中

文章目录 1.目标、思路2. 获取数据3.解析数据4.保存数据 1.目标、思路 目标: 本次爬虫爬取的目标是唯品会中口红分类的商品。(url ) 思路:打开网页后点击F12打开抓包工具,找到我们想要的数据包,并分析。 …

各大视频网站下载神器

先说介绍工具,后说使用方法(其实不难) you-get 是GitHub上的一个项目,其实就是通过几个命令行下载各大网站视频的,这对于做视频的爱好者及一些司机都是很奈斯的选择。 地址:https://github.com/soimort/y…

电子商务网站的 10 个易用性规则

电子商务网站的 10 个易用性规则 电子商务网站的竞争越来越激烈,虽然你可能在以最低的价格卖最好的东西,但同样重要的的是用户的购买体验,对电子商务网站而言,易用性就是让用户尽 可能快而简单的完成购买,有时候&…

基于jquery Stellar.js实现 网站视差滚动效果

stellar.js是一个 jQuery插件&#xff0c;能很容易地给网站添加视差滚动效果。 虽然已经停止了维护&#xff0c;但它非常稳定&#xff0c;与最新版本的jQuery兼容。 http://markdalgleish.com/projects/stellar.js/ 官网 1.引用js 包 <script src"path/to/jquery/jq…

推荐一个前沿的无线通信网站——定为电子

欢迎来到定为官网 成都定为电子技术有限公司是一家集咨询、设计、研发和生产无线通信数字基带和模拟前端等产品的高新技术企业&#xff0c;公司一直专注于算法原型验证、教学实验、无线通信和便携式仪器设备等领域。 在算法原型验证方面&#xff0c;定为电子坚持为客户提供最…

网站被DDOS攻击,我只用了2招应对

做网站难免遇到被黑客攻击&#xff0c;特别是关键词排名较靠前的站点&#xff0c;一些不正当的竞争对手会使用不正当的方法把你网站搞瘫&#xff0c;以便把流量引到自己平台上让自己得利。不管是大平台网站还是小平台网站都会遇到DDOS攻击&#xff0c;难道面对DDOS&#xff0c;…

【Python】利用网站API接口获取天气信息

本文主要讲如何利用Python来获取天气信息。主要程序实现思路是从命令行传递坐标信息&#xff0c;然后利用天气预报网站的免费接口获取到相关天气信息&#xff0c;返回结果以json格式显示&#xff0c;并打印出需要的近3天天气情况。 信息源&#xff1a;https://openweathermap.…

做一个酷网站(2)

成品 成品源码 接上篇博客 相信你根据 Demo 的源代码 已经可以制作一个简单的动态网站了 核心思想 同时动态修改 style 标签 和 页面上 某个元素的内容产生一种网站在动态展示的效果 知识点 ES6 箭头函数使用setInterval(fn, n)substring(n, m)document.querySelector()dom 元…

用户访问一个网站的整过程

原文网址&#xff1a;https://blog.csdn.net/yonggeit/article/details/72857630 用户访问网站流程框架 第一步&#xff1a;客户端用户从浏览器输入www.baidu.com网站网址后回车&#xff0c;系统会查询本地hosts文件及DNS缓存信息&#xff0c;查找是否存在网址对应的IP解析记…

手机网页的设计vs2008开发wap网站(一)

vs2008开发wap网站(一)首先新创建个项目&#xff0c;打开VS2008&#xff0c;新建个网站项目&#xff0c;我们添加新项时会发现以前在vs2003或vs2005中的“移动Web窗体”项没有了&#xff0c;下图为vs2003和2005中的。 vs2008中就没有“移动Web窗体”这一项&#xff0c;这…

优化网站性能 提高网站速度访问速度的14条实践

相信互联网已经越来越成为人们生活中不可或缺的一部分。ajax&#xff0c;flex等等富客户端的应用使得人们越加“幸福”地体验着许多原先只能在C/S实 现的功 能。比如Google机会已经把最基本的office应用都搬到了互联网上。当然便利的同时毫无疑问的也使页面的速度越来越慢。自己…

利用代码托管平台 Pages 搭建静态个人网站

一、写在前面 笔者最近接触生成个人博客的开源项目&#xff0c;玩着挺有意思的。用简单的命令生成vue或go的项目模板。通过markdown语言文档生成静态页面。网上也有很多教学博客。感谢各位大神博主的分享。这里也简单记录下我的使用笔记。 二、开源的hexo框架 框架简介 官方…

推荐3个网页设计在线配色网站

推荐3个网页设计在线配色网站 对于网页设计师而言&#xff0c;每个网站的设计都需要一套最适合它的配色方案&#xff0c;配色方案的选择关系到整个网站的成功与失败。你会不会因为苦恼于一个很急的网站项目的配色方案迟迟没有确定&#xff0c;而抓狂呢&#xff1f;下面暴风彬彬…

提高网站设计可用性(有效性)的10条原则

决定一个网站成败命运的&#xff0c;不是视觉设计&#xff0c;而是设计的可用性和有效性。访问网页的用户们握着鼠标&#xff0c;决定一切&#xff0c;“以用户为中心”已然是成功网站的标准设计方向。总之&#xff0c;用户不用的功能&#xff0c;就不该存在。 我们并不打算重复…

精选31个网站界面设计实践教程

精选31个网站界面设计实践教程 设计一个网站从来都不是一件容易的事。如果你去询问一位在该行业有丰富经验的网页设计师&#xff0c;他会告诉你以前根本没有太多关于Web设计/开发的资源、文章和各种沟通交流平台&#xff0c;更不用说高质量免费教程了。 如果您打算建立自己的个…

Photoshop 爱好者应该收藏的42个网站

Photoshop 是 Adobe 公司旗下最为出名的图像处理软件之一&#xff0c;集图像扫描、编辑修改、图像制作、广告创意&#xff0c;图像输入与输出于一体的图形图像处理软件。今天&#xff0c;本文与大家分享42个非常有用的 Photoshop 设计教程和素材资源网站&#xff0c;希望能帮助…

分享20佳极具创意的网站导航菜单设计案例

导航菜单作为网站必不可少的组成部分&#xff0c;关系着网站的可用性和用户体验。有吸引力的导航能够吸引用户去浏览更多的网站内容&#xff0c;增加用户在网站的停留时间。为了让导航能够和网页内容完美的融合在一起&#xff0c;设计前需要设仔细分析网页结构。下面收集了20佳…

免费下载精美网站模板的25个网站推荐

免费下载精美网站模板的25个网站推荐 这篇文章向大家推荐25个免费下载网站模板的网站&#xff0c;这些网站分享了众多精美的网站模板&#xff0c;您可以免费下载使用&#xff0c;相信这些精美的 网站模板 既能够帮助您节省大量的时间和精力&#xff0c;又能有很满意的效果&…

学习 Web 开发技术的16个最佳教程网站和博客(留着回家学习)

学习 Web 开发技术的16个最佳教程网站和博客 互联网经过这么多年的发展&#xff0c;已经出现了众多的 Web 开发技术&#xff0c;像 .Net/Java/PHP/Python/Ruby 等等。对于 Web 开发人员来说&#xff0c;不管是初学者还是有一定经验的开发人员都需要时刻学习新的开发技术。如今&…

使用 jQuery Mobile 及 ASP.NET 开发跨行动装置网站 (Mobile Web)

转&#xff1a;http://msdn.microsoft.com/zh-tw/hh875190.aspx 在行動式裝置普及化的現在&#xff0c;要開發一個能夠跨行動式裝置的原生應用程式 (Native App) 是非常不容易的&#xff0c;除了需要了解不同的作業系統的差異 (Ex: Windows Phone、Android、iOS)&#xff0c;還…