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

news/2024/5/20 12:31:53/文章来源:https://blog.csdn.net/weixin_30902251/article/details/98502683

  前面已经描述了大型网站系统的特点,而对一个大型网站系统,其架构也是重要的一个环节。

  大型网站技术主要的挑战来自于庞大的用户、高并发以及海量的数据这三个方面。大型网站的形成就像一颗大树的成长,历尽长时间的磨练,最后枝繁叶茂,服务他人。

初始网站架构结构

         起初的网站鉴于用户量、访问量较少,只需要一台服务器足以,应用程序、数据库、文件等其所有资源放在一太服务器上就已经足够满足此时的需求,这时候网站的架构就几个简单组成部分如下图

应用和数据服务分离

  随着网站业务需求的发展,越来越多的用户进行访问,此时一台服务器渐渐不能满足需求,数据的存储空间出现屏障。于是应用程序、数据库、文件三者面临分离,各自为首分配一台服务器,这三台服务器对硬件的要求各取所需,应用服务器处理大量的业务逻辑,需求更快更大的CPU;数据库服务器对数据库的处理需要快速搜索以及缓存,需求对内存更大,对硬盘读写能力更迅速;文件服务器需求放入大量的用户资源,对硬盘空间要求更大。此时的网站的架构组成部分展示如下图

使用缓存

  网站的架构进一步改进后可以满足了业务的发展,但是随着网站知名度提升,用户量的进一步增加,访问数据相比之前愈加频繁,数据库压力急剧上升导致网站访问出现延迟,用户的性能体验出现下滑,面临此时网站出现的性能问题,网站架构设计需要再一次的进化,鉴于网站访问也遵循二八定律,例如:新浪微博,只有经常登录的用户才会发微博,看微博,而这些用户对于总用户数只是冰山一角。既然出现这一现象,那么缓存这部分的数据是不是可以解决这现象呢?网站缓存可以分为本地缓存和分布式缓存这两种,二者的区别是本地缓存速度快但是受服务器内存限制缓存的数量有限,而分布式缓存采用的是集群处理,理论上是可以避免内存瓶颈。此时网站的架构组成部分如下图

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

  使用缓存后,数据库的压力得到缓解,但是在面临网站高峰期时,应用服务器处理单一的请求连接出现瓶颈,万事都有解决的办法,只是看你愿不愿去想,愿不愿去尝试做,采用集群,集群多台应用程序服务器分布原有的应用程序服务器,从而实现了系统的可伸缩性,网站架构此时演化成这样如下图

数据库读写分离

  使用缓存,虽然使用户请求数据操作大部分不直接通过数据库,但是仍有一部分数据(缓存过期、缓存数据没有命中)读写操作需要访问数据库,面对这部分数据,可能出现数据访问负载压力,把数据库读写操作分离性能效果理当会如何呢?效果无言而喻。

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

  网络覆盖范围地区广泛,造就了网络环境复杂,从而用户访问网站性能体现也各有差异,鉴于这问题,网站架构使用CDN和反向代理以技术加速网站响应,二者原理都是缓存,CDN可以从距离用户最近网络提供点获取数据;反向代理则是首先从反向代理服务器中获取数据。

分布式文件、数据库系统

  任何单一的服务器最后都是满足不了业务需求发展。虽然前面数据库读写分离能够改善数据库负载压力但是随着业务不断壮大最终还是难以维持此时使用分布式数据库,该技术不到不得以建议不使用,而对于这个技术解决方案更常用的使用业务拆分,将不同的业务数据库部署在不同的物理服务器上。

NoSQL和搜索引擎

  该技术对于可伸缩的分布式提供更好的支持,减轻应用程序管理诸多数据源的麻烦。

业务拆分

  大型网站日益发展壮大,业务需求越来越复杂,使用分而治之手段分离整个网站的业务变成不同的产品线。具体到技术上,将一个网站拆分成许多不同的应用,每个应用独立部署,而应用与应用之间通过超链接关联,不过最多的还是通过访问同一个数据存储来构成一个关联的完整系统。

分布式服务

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

  大型网站结构演化到这里,基本上大多数的技术问题都得以解决了,但是事物发展到一定的阶段就会摆脱初衷向更强的方向发展。目前许多的大型网站都建立自己的云平台,将计算作为一种资源进行出售。

大型网站架构演化历经了长时间磨练才发展如此,在过程中也是出现一些易步入的误区

  一味的追随大公司解决方案,大公司的经验和成功固然重要,但是不能盲目的追从,要与实际的具体业务需求有所改动;

  为了技术而技术,网站技术是为业务而存在的,但是一味的追求新技术,可能会导致结构技术之路越走越难;

  企图用技术解决所有问题,技术虽是解决业务问题的,但也不是万能钥匙,有些业务的问题也是可以通过业务手段解决。

 

  参考资料:《大型网站技术架构核心原理与案例分析》

转载于:https://www.cnblogs.com/JustOnly/p/4899615.html

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

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

相关文章

【推荐】腾讯android镜像(做Android开发的得好好利用下这个网站,国内的大公司还是可以滴……)...

原文地址:http://android-mirror.bugly.qq.com:8080/include/usage.html ☀ Windows I. Open Android SDK Manager II. Config User Defined Sites Add this url to "User Defined Sites": http://android-mirror.bugly.qq.com:8080/android/repository/…

网站创建过程(一)

今天一天都在上班啊,我觉得我也没有玩啊,怎么自己的项目就没有一点进展呢。。。。我方了 今天就用django创建了一个项目然后连上mysql 建了一个表。这也就证明我的django是可以读取数据库哒~~开心 具体步骤 一、新建一个文件夹 这个文件夹用来存放项目&a…

转帖:网站服务架构

原文地址:http://www.cnblogs.com/jiekzou/p/4677994.html 服务器划分 对于访问量大的网站而言,将网站的各个部分拆分分别部署到不同服务器上是很有必要的。例如将图片和web站点分开。一般而言,在网站的整个服务器部署上分为如下几种类型&…

WSS无编程网站建设(1)-客户需求分析

今天,和ABC公司的老总(老黄)谈了一笔生意,做一个企业外网,功能结构就是和所有企业网站一样。 一、网站结构图 谈完后,到公司财务拿钱开始做了. 1,服务器: 下表列出为独立安装部署 Windows SharePoint Services 3.0 时所…

网站后台 服务器,网站后台数据 服务器

网站后台数据 服务器 内容精选换一换华为云云市场搭建了包括基础软件市场、企业应用市场、建站市场、安全市场、服务市场、解决方案市场、人工智能市场、物联网市场8大子市场,种类丰富,产品众多,用户可以在华为云云市场找到适合自己业务的软件…

PHP来编写网站评论系统

2019独角兽企业重金招聘Python工程师标准>>> 首先打开Dreamweaver cc,安装MySQL数据库。 这里有三个文件:comments.php, 是用来显示评论的, commentadd.php, 用来处理评论内容的, commentform.html 通过FROM来提交评论。 首先建立一个数据库&#xff0c…

网站总访问人数和当前在线人数

做网站肯定会要求实现这样的需要,相信对绝大部分程序员同行来说都很easy。其实只要我们对ASP.NET的内置对象的生命周期了解的话,很容易想到解决的办法。 在项目的根目录下新建global.asax文件,下面是我当年所写的代码: 代码 1 voi…

(转)大型网站架构系列:负载均衡详解(4)

三、LVS负载均衡 LVS是一个开源的软件,由毕业于国防科技大学的章文嵩博士于1998年5月创立,用来实现Linux平台下的简单负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。 基于IP层的负载均衡调度技术,它在操作系…

夺命雷公狗ThinkPHP项目之----企业网站26之网站前台列表页的显示和完成分页功能...

我们用大I接收到我们get过来的栏目页的id然后通过文章的ar_cateid 来判断是不是属于该栏目下的&#xff0c;如果文章表ar_cateid 栏目表的cate_id 那么就可以选出我们要查找的信息&#xff0c; 然后再遍历到视图即可。。。 <?php namespace Home\Controller; use Think\Co…

纪念一下我在2009年开发的一款网站客户端软件[winform]

时间过的真快&#xff0c;虽然目前该网站暂时停止运行了&#xff0c;但还是为自己开发的这款客户端软件感到自豪&#xff0c;要知道&#xff0c;这是在我的UI架构下产生的第一个商业软件哦。 让思绪飞一会儿~~~~~~~~~~ 登录界面&#xff1a; 主界面&#xff1a; 菜单显示&#…

【绝对干货!!!】年薪百万都在用的学习网站, 大学生与职场人请收藏

值得学习的技能有很多&#xff0c;但最应该掌握的是编程 作为一个过来人&#xff0c;真的想谈谈。不管你现在是学生&#xff0c;还是参加工作不久&#xff0c;希望这篇文章都可以帮到你。 重在实践 想要成为一个优秀的人&#xff0c;应该不管在什么样的情况下都停止抱怨。其实…

一天完成把PC网站改为自适应!原来这么简单!

http://www.webkaka.com/blog/archives/how-to-modify-a-web-page-to-be-responsive.html 一天完成把PC网站改为自适应&#xff01;原来这么简单&#xff01; 作者:Kaka 时间:2015-8-27 11:26:9 浏览:5279 评论:8 网站自适应&#xff0c;很多人都认为是很高级需要很多…

高性能网站建设指南学习笔记

一、规则1----减少HTTP请求 &#xff08;1&#xff09;图片地图 图片地图允许你在一个图片上关联多个URL。目标URL的选择取决于用户单击了图片上的哪个位置。 &#xff08;2&#xff09;CSS Sprites (3)内联图片 通过使用data:URL模式可以在Web页面中包含图片但无需任何额外…

推荐15个清爽简约风格的 HTML5 网站作品

本期的 HTML5 网站大观与大家分享15个精美的 HTML5 清爽简约风格网站。HTML5 是现在Web开发领域的热点&#xff0c;越来越多的开发人员开始使用 HTML5 来开发交互性强、效果出众的Web应用和游戏。希望这些制作精美的 HTML5 网站实例能帮助大家更好的学习 HTML5 网站制作。 Naom…

自从学会了搭建开源网站,妈妈再也不担心我找不到web自动化学习环境了

前言 很多小伙伴在学习web自动化测试时候&#xff0c;总在苦恼找不到合适的web网站的去进行自动化练习&#xff0c;练习项目无非就是百度官网&#xff0c;总感觉没什么实质的提高。 环境准备&#xff1a; 1. Tomcat 2. shopping商城文件 3. jdk环境 4. Mysql环境 解压shoppin…

Google的全新在线地图API演示网站 - More than a map

日期&#xff1a;2012-10-28 来源&#xff1a;GBin1.com More Than A Map是Google最新上线的Google地图API使用的演示网站&#xff0c;提供了丰富的Google Maps API的使用。 包括一下几个方面的功能展示&#xff1a; 基础功能卫星功能街景功能地点功能路线功能数据可视化功能相…

基于 ZKEACMS 的云建站 / 自助建站解决方案

基于ZKEACMS的云建站 / 自助建站解决方案&#xff0c;一站式托管&#xff0c;解决企业建站需求&#xff0c;功能强大&#xff0c;高度自定义。用户只需在界面上输入一些基本信息&#xff0c;选择相应的主题 / 网站模板&#xff0c;然后就可以快速创建一个独一无二的网站。 建站…

[ios-必看] 国人当自强:两岸三地在线编程学习网站大搜罗 [转]

http://blog.csdn.net/lyy_whg/article/details/17350923 说到国内的在线编程学习网站&#xff0c;很多人都是一脸茫然&#xff0c;即使是资深开发者也是如此。在许多人眼中&#xff0c;尽管国内App开发景象一派繁荣&#xff0c;但教育疲软却是不争的事实。在《移动开发者的自学…

http://download.java.net/openjdk/jdk7下载openjdk源码的网站的bug

获取OpenJDK源码大致有两种方式&#xff0c;其中一种是通过Mercurial代码版本管理工具从Repository中直接取得源码http://hg.openjdk.java.net 第二种就是从网站上下载 &#xff1a;http://jdk7.java.net/source.html(这个地址好像不能用了)还有个就是http://download.java.ne…

给网站加ico浏览器小图标

魅力网络最近在给客户做网站的时候&#xff0c;发现客户主动要求给网站加个浏览器小ico图标&#xff0c;其实加这个非常的简单&#xff0c;弄一个logo的图标&#xff0c;网上有在线转换ico的&#xff0c;转换一下&#xff0c;32*32的就行 例如&#xff1a; 生产的文件名是favic…