【读书笔记】大型网站架构演化

news/2024/5/13 2:30:48/文章来源:https://blog.csdn.net/u013568373/article/details/91345438

写在最前面

强烈推荐李智慧老师所著的《大型网站技术架构》一书,它能带领你从一个俯瞰的角度清晰的了解了一个网站的架构设计!本菜鸡以前每次接到一个项目的时候,总是一开始就罗列各种需要实现的功能,然后马上着手开始设计数据库,从来没有一个良好的严谨的架构思想,可能也是因为本菜鸡一直干的都是给学校开发各种管理系统的low比项目吧。。。

前前后后大概花了三天的时间一字不落的读完了整本书,真是意犹未尽。它改变了我以往的那种,一接到项目就思考繁杂业务功能这种错误的思维模式,让我学会了要在项目开始之前,要好好的设计一个网站的架构,要先描绘出一个整体的骨架,然后再考虑各个模块的具体实现。

当当网打5折时买的,不到30块钱,收获这么大,感觉有点对不起李智慧老师。。。

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

这是《大型网站技术架构》第二章的内容,它非常直观的描述了一个小型网站随着不断的发展所遇到的问题,以及相对应的在架构上所做出的优化。用浅显易懂的语言介绍了小型网站到大型网站的成长历程。

一、初始的网站架构

在这里插入图片描述
最朴素的架构,甚至毫无架构可言,所有的东西,全部都部署在同一台服务器上。本菜鸡目前做的项目无一例外都是这种架构模型。。。

新的问题:随着网站的发展。用户量越来越大,请求量越来越多,越来越多的数据,也会导致单一服务器的存储空间不足。

怎么解决?请往下看!

二、应用服务与数据服务分离

在这里插入图片描述
将应用服务、文件服务、数据库服务拆开,分别部署在不同的服务器上。

而且,这三种服务器在性能上也是各有各的要求。

  • 应用服务器:CPU密集型,需要更强劲的CPU。
  • 数据库服务器:IO密集型,需要更快的磁盘和更大的内存。
  • 文件服务器:要存储大量的数据,需要更大的磁盘。

新的问题:用户量再增多,数据库压力太大,导致访问延迟。

怎么解决?请往下看!

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

在这里插入图片描述
我们都知道,内存存取速度比硬盘快上几个数量级,所以我们可以通过将热点数据缓存在内存中,这样对于频繁访问的数据,就不需要每次都去数据库里去取。

同时,本地缓存虽然会更快一些,但是由于应用服务器的内存有限,在缓存数据量巨大时,还需考虑加入远程的分布式缓存服务器,这种服务器最大的特点就是内存大!

新的问题:使用缓存后,数据访问压力得到了有效的缓解。但是我们的应用服务器能处理的请求数量毕竟还是有限,在网站访问高峰期,性能将会受到极大的影响。

怎么解决?继续往下看!

四、使用应用服务器集群

在这里插入图片描述
当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求。这种情况下,更恰当的做法是增加服务器分担原有服务器的压力。

新的问题:现在我们发现,尽管使用了缓存,但是仍有一部分读操作、和全部的写操作
需要访问数据库。随着用户的增长,数据库因为负载压力过高而成为网站的瓶颈。

怎么解决?接着往下看吧。。。

五、数据库读写分离

在这里插入图片描述
应用程序在写数据时,访问主数据库,主数据库通过主从复制机制将数据更新同步至从数据库,这样应用程序读数据时,就可以访问读数据库,这就实现了读写分离!

新的问题:网站进一步发展,规模进一步扩大,由于中国复杂的网络环境,不同地区的用户访问网站时,速度差别也极大。

解决办法在下面,接着看吧。。。

六、使用CDN和反向代理加速网站访问

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

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

新的问题:任何强大的单一服务器都满足不了大型网站持续增长的业务需求。数据库经过读写分离后,从一台服务器拆分成两台服务器,但是随着网站业务的发展依然不能满足需求,文件服务器也是同理。

别问,问就是往下看。。。

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

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

八、使用NoSQL和搜索引擎

在这里插入图片描述
随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎。

九、业务拆分

在这里插入图片描述
将业务拆分成一小块一小块的业务。如大型购物交易网站就会将首页、商铺、订单、买家、卖家等拆分成不同的产品线,分归不同的业务团队负责。

十、分布式服务

在这里插入图片描述
将可复用的服务提取出来,独立部署,提供共用业务服务。应用系统通过分布式服务调用共用业务服务完成具体业务操作。

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

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

相关文章

【读书笔记】网站的高性能架构

前言 本菜鸡之前有过一篇读书笔记,整理了李智慧老师所著的《大型网站技术架构》一书中叙述的五个架构要素。这五个要素分别为 性能、可用性、伸缩性、扩展性、安全性。本文针对性能这一要素进行展开讨论,内容也主要参考自《大型网站技术架构》这本书&am…

【读书笔记】网站的高可用架构

前言 本菜鸡之前有过一篇读书笔记,整理了李智慧老师所著的《大型网站技术架构》一书中叙述的五个架构要素。这五个要素分别为 性能、可用性、伸缩性、扩展性、安全性。本文针对可用性这一要素进行简单的讨论,内容也主要参考自《大型网站技术架构》这本书…

【读书笔记】网站的伸缩性架构

前言 本菜鸡之前有过一篇读书笔记,整理了李智慧老师所著的《大型网站技术架构》一书中叙述的五个架构要素。这五个要素分别为 性能、可用性、伸缩性、扩展性、安全性。本文针对伸缩性这一要素进行简单的讨论,内容也主要参考自《大型网站技术架构》这本书…

【读书笔记】网站的可扩展架构

前言 本菜鸡之前有过一篇读书笔记,整理了李智慧老师所著的《大型网站技术架构》一书中叙述的五个架构要素。这五个要素分别为 性能、可用性、伸缩性、扩展性、安全性。本文针对扩展性这一要素进行简单的讨论,内容也主要参考自《大型网站技术架构》这本书…

【读书笔记】网站的安全架构

前言 本菜鸡之前有过一篇读书笔记,整理了李智慧老师所著的《大型网站技术架构》一书中叙述的五个架构要素。这五个要素分别为 性能、可用性、伸缩性、扩展性、安全性。本文针对安全性这一要素进行简单的讨论,内容也主要参考自《大型网站技术架构》这本书…

[导入]国内web2.0网站的logo集合

国内web2.0网站的logo集合,收集过程中难免有遗漏,请到 http://www.yupoo.com/word/web2补上甘先生 2006-02-13 18:03 文章来源:http://www.blogjava.net/gump/archive/2006/02/13/30487.html转载于:https://www.cnblogs.com/cngump/archive/2006/05/16/401486.html

[转载]说说大型高并发高负载网站的系统架构

说说大型高并发高负载网站的系统架构 By Michael转载请保留出处:俊麟 Michael’s blog (http://www.toplee.com/blog/?p71) Trackback Url : http://www.toplee.com/blog/wp-trackback.php?p71 我在CERNET做过拨号接入平台的搭建,而后在Yahoo&372…

PHP网站事件流,详解DOM事件流的三个阶段

事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即DOM事件流。DOM事件流分为三个阶段,分别为:捕获阶段:事件从Document节点自上而下向目标节点传播的阶段;目标阶段:真正的目标节点正在处理事件…

Windows 7 即将发布 - 91%的应用程序、92%的硬件设备和95%的网站完美兼容

Windows Vista的兼容性往往被大家所诟病,Windows 7打算一血前仇了。经过了长达2年的兼容性测试和改进,已经有91%的应用程序、92%的硬件设备和95%的网站完美兼容Windows 7。在这个过程中,作为微软在北京的Windows 7兼容性测试支持中心&#xf…

网站CSS背景图片抓取工具

工具介绍:  1)分析网页,获取页面图片。  2)分析网页引用CSS文件,获取背景图片。  3)批量下载。要点:  1)正则 LINK_PATTERN:获取页面所有连接 BACKGROUND_IMAGE_…

网站服务器基本安全设置

一、服务器系统安装建议1、不安装多余组件,停止不需要的服务;2、www服务单独分区;3、补丁打全;二、登录账号与口令安全1、设置密码使用、数字加大小写字母不少余8位;# vi /etc/login.defs找到以下:PASS_MAX_DAYS 99…

查看网站服务器版本,查看服务器版本

您正在运行的 Tableau Server 的版本很重要。它确定您可以访问的功能和能力。在您进行升级时,版本也很重要,因为在某些情况下,您升级的方式取决于您从中升级的版本,以及要升级到的版本。了解如何查找版本之后,就很容易…

Java开发者必去的20个英文技术网站

为什么80%的码农都做不了架构师?>>> http://www.javaalmanac.com - Java开发者年鉴一书的在线版本. 要想快速查到某种Java技巧的用法及示例代码, 这是一个不错的去处. http://www.onjava.com - OReilly的Java网站. 每周都有新文章. http://java.sun.c…

从零开始建站-4

为什么80%的码农都做不了架构师?>>> 这里记录使用wordpress建站中遇到的问题 1、增加外网访问功能 登录数据库,在wp_options表中,修改字段 siteurl 和home均为 /wordpress,这里的wordpress的绝对路径为/var/www/htm…

Dreamwear如何创建javascript_15个免费学习JavaScript的最佳网站

作者:行者转发链接:https://codegeekz.com/15-best-websites-to-learn-javascript/前言JavaScript是Web最流行的语言。对于任何Web开发人员来说,JavaScript现在是必须学习的语言。像追踪树这样的创新已经大大提高了JavaScript的性能&#xff…

5分钟必懂-搭建网站框架踩到的坑之获取ServletPath

路径问题RealPathServletPathContextPathRequestURI获取真实ServletPath的方法RealPath String realPathrequest.getServletContext().getRealPath(); String realPathrequest.getServletContext().getRealPath("XXX");1)取得服务应用的绝对路径(本地路径…

【nosql实现企业网站系列之一】mongodb的安装

本系列文章将使用Mongodb作为nosql的数据保存载体,显示载体使用aspnetmvc3,依赖注入容器使用unity application 2。 需要使用Mongodb首先需要安装。 一、下载Mongodb 地址:http://downloads.mongodb.org/win32/mongodb-win32-x86_64-2008plus…

32个使用 Google 网页字体的优秀网站案例

如今,网页设计师非常注重网页字体的运用,为了能让网站有更好的可读性和更强的吸引力,他们需要更漂亮的字体。Google网页字体(Google Web Fonts)为设计师们提供了几百种免费开源的字体,只需要在网页中加入一…

用VS2008开发Ajax网站需要注意的一些事项

这两天因为要开始网站,我们的老大说了,一定要用到mvc架构三层模式的设计,另外关于ajax的的使用部分不得少于三分之一,这样的要求还真的是很奇怪,感觉就不太像是可以用于商业的东西,大概只是想让我们练习一下…

Anonymous几天之内攻陷500多个中国网站

根据CNET的报道,Anonymous***激进组织已经在几天之内黑掉了超过500个中国政府/商业网站,并号召中国***加入他们。 The hacked Web site for the Central Business District in Chengdu, China. (Credit: Screenshot by Steven Musil/CNET)