目录

1、初始阶段的网站架构

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

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

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

5、数据库读写分离

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

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

8、使用NoSQL和搜索引擎

9、业务拆分

10、分布式服务


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

1、初始阶段的网站架构

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

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

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

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

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

1.应用服务器 要处理大量的业务逻辑,所以需要更好更快更强大的 CPU2.数据库服务器 需要快速的进行磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存3.文件服务器 需要存储用户上传的文件资源,因此需要更大的硬盘存储空间

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

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

毫无疑问,现在的网站基本上都会使用缓存,即:80%的业务访问都会集中在20%的数据上。
网站的缓存可以分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存

本地缓存 的访问速度会快一些,但是受应用服务器内存限制,缓存数据量很有限,而且会出现内存争用的情况远程分布式缓存 可以使用集群的方式,部署大内存的服务器作为专门的缓存服务器,可以在理论上做到不受内存容量限制的缓存服务

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

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

5、数据库读写分离

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

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

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

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

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

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

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

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

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

8、使用NoSQL和搜索引擎

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

9、业务拆分

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

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

10、分布式服务

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

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

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

  1. BAT架构师进阶:大型网站架构书籍推荐

    " 书籍推荐分为如下: 大型网站架构系列 分布式系统系列 BAT技术系列 架构设计系列 一:大型网站架构系列 第一本:<大型网站技术架构:核心原理与案例分析> 这本书主要从大型网 ...

  2. 大并发服务器架构 大型网站架构演变

    服务器的三条要求: 高性能:对于大量请求,及时快速的响应 高可用:7*24 不间断,出现故障自动转移,这叫fail over(故障转移) 伸缩性:使用跨机器的通信(TCP) 另外任何网络系统结构都可以 ...

  3. 大型网站架构演变过程、大并发服务器架构

    大型网站架构演变过程: [Step1]web server与数据库分离 web动静资源分离 静态请求:如html, js, css, img 动态请求:如jsp, php [Step2]缓存处理 客户 ...

  4. 大型网站架构 图片服务器分离

    转自http://www.cnblogs.com/hukailee/p/5285018.html 大型网站架构 图片服务器分离   1   介绍 现在很多的网站上都会用到大量的图片,而图片是网页传输中 ...

  5. 大型网站架构演变和知识体系

    存爱好,作为收藏,原地址:http://www.blogjava.net/BlueDavy/archive/2008/09/03/226749.html ,同时向原创致敬 之前也有一些介绍大型网站架构 ...

  6. 大型网站架构系列:缓存在分布式系统中的应用(二)

    缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题.提供高性能的数据快速访问. 本文是缓存在分布式应用第二篇文章,介绍分布式缓存,Memcache,Redis,本地缓存 ...

  7. 大型网站架构不得不考虑的10个问题,互联网营销

    这里的大型网站架构只包括高互动性高交互性的数据型大型网站,基于大家众所周知的原因,我们就不谈新闻类和一些依靠HTML静态化就可以实现的架构了,我们以高负载高数据交换高数据流动性的网站为例,比如海内,开 ...

  8. 搭建“双11”大型网站架构必须掌握的 5 个核心知识

    2019独角兽企业重金招聘Python工程师标准>>> 每年电商双11大促对背后技术人都是一次大考,阿里数据库团队表示.经过9年的发展,双11单日交易额从2009年的0.5亿一路攀升 ...

  9. 读《大型网站技术架构:核心原理与案例分析》第一章:大型网站架构演化

    写在前面 从开始写代码到现在,已经做了好几个项目了,BS和CS的都有,一直都以一个码农自居.但,作为一个进步的程序员,都有一个成为架构师的理想.于是,在平时的工作中,也积极的去看各种书籍,看园子里面的 ...

最新文章

  1. python使用matplotlib可视化棉签图、棉棒图(stem plot)、展示离散而有序的数据
  2. 挑战权威还是偏离主流?颠覆性研究或将证明神经信号是机械波
  3. 中文Visual Studio 2005 Express Beta2不能安装在英文Longhorn Beta1上吗?
  4. python画圣诞树代码-圣诞节!教你用Python画棵圣诞树
  5. Git SSH Key生成,配置到GitHub 并测试
  6. 如何创建依赖于某时间段的ABAP视图
  7. 拦截器读post参数导致接口post请求报错_vue中Axios的封装和API接口的管理
  8. 软件测试与开发专业就业方向,学习软件测试后就业方向有哪些?
  9. mmseg java_MMSeg中文分词算法
  10. 2015-10-07 jQuery2
  11. bzoj1228 [SDOI2009]ED 找规律
  12. NYOJ-阶乘之和(贪心)
  13. 并发编程----AQS架构
  14. 国内外CDN服务商CNAME特征串调研
  15. php mongodb方法,PHP 操作mongodb api大部分方法
  16. 合唱队形——线性dp
  17. 程序员编程入门一定知道!程序员需要学什么?
  18. 十五、IO流【黑马JavaSE笔记】(本文文中记录了个人学习感受)
  19. echo相关参数 -e -n
  20. 荣耀20搭载鸿蒙,荣耀20新机发布 搭载鸿蒙系统荣耀20详细参数

热门文章

  1. Android自定义半透明背景弹窗非popwindow/dialog超简单任意编写!
  2. 报告 :2018世界杯球迷群体分析实录
  3. KNN算法之好感度预测
  4. php artisan命令怎么写,在 Laravel 中编写第一个 Artisan 命令
  5. 用turtle库绘制Python Logo图案
  6. Matlab:绘制阿基米德螺旋线结构
  7. iphone13和12外观的区别 iphone13和iphone12对比哪个好
  8. 2022秋软工实践个人作业二
  9. c语言键盘输入坐标,c语言键盘操作.docx
  10. markdown tips