网站架构基础学习(详细)

1.网站架构的发展经历:

初始阶段的网站(特点:没人)应用程序,数据库,文件都在一个服务器中

比如我们学的是开发,我们要写一个网站,因为这是一个项目,

所以我们要把它部署一下,然后在淘宝买了一个域名,

然后部署到线上了(买了个服务器和租了个阿里云),

因为最初的网站没有人,

所以我们可以将应用程序apache和nginx,数据库,文件都在一个服务器上

就是我们熟知的lamp和lnmp    将所有东西部署在一台服务器上

Lamp  :linux apache mysql  php

Lnmp   : linux nginx mysql php

随着你网站的人增多,当有1000个人10000个人的时候,       (当访问的人多了)

一台服务器就抗不住了

应用服务和数据服务分离

随着网站业务的发展,一台服务器逐渐不能满足需求,性能越来越差,存储空间不足,

这就需要应用和数据分离

应用服务器

处理大量业务

需要更快更强的CPU

数据库服务器

需要快速的磁盘检索和数据缓存

需要更快的硬盘和更大的内存

文件服务器

需要大量用户上传文件

需要更大的硬盘

着三个本来在一块,但是为了满足实际需求,

我们需要将这三个应用分离在3个服务器上面,减轻服务器压力

再往上发展的时候我们还想进行优化

使用缓存改善网络性能

网站访问的特点和二八定律一样:

80%的业务访问集中在20%的数据上,所以如果把这一小部分数据缓存在内存中,

可以减少数据库的访问压力,提高整个网站的数据访问速度,改善数据库的写入性能

(内存不硬盘快很多)

  1. 网站使用的缓存可以分为两种:
  2. 缓存在应用服务器上的本地缓存
  3. 缓存在专门的分布缓存服务器上的远程缓存

本地缓存的访问快一些,

但受内存服务器的内存限制,缓存数据量有限

远程分布式缓存可以使用集群(多个)的方式(我们可以用很多台来进行缓存,一台8G内存,10台80G的内存),部署大内存的服务器作为专门的缓存服务器,

理论上做到不受内存容量的限制的缓存服务(钱没那么多)

缓存技术:

内容分发网络(CDN)  反向代理

本地缓存 分布式缓存

使用前提:

  1. 数据访问热点不均衡(如微博里的热点新闻和微博热搜,满足这两个条件)
  2. 是数据在某个时间段内有效

实际中我们可以本地缓存一些,再用使用远程分布式去缓存一些

使用应用服务器集群改善并发处理能力

使用缓存后,数据访问压力得到有效的缓解,

但是单一应用服务器能够处理的请求连接有限,

在网站高峰器,应用服务器成为整个网站的瓶颈,

使用集群是网站解决高并发,海量数据问题的常用手段,通过负载均衡调度服务器,

可将 来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多用户,

就是集群中加入更多的应用 服务器(再服务员),使应用服务器的负载压力不再成为整个网站的瓶颈

刚才实际中我们可以本地缓存一些,

再使用远程分布式去缓存一些

减轻了数据库服务器的压力(可以从内存中很快的给用户)

我们只有接收用户的请求才知道用户要什么

#负载均衡:

在已经有应用服务器的基础上

应用服务器是4个(没有标出)(服务员),有本地缓存和远程分布式缓存

负载均衡调试服务器 : 相当于门迎,来一个用户的请求,

根据我的排班规则将用户请求,把用户分布到不同的应用服务器

数据库的读写分离:

网站在使用缓存后,使绝大部分数据操作访问都可以不通过数据库就能完成,

但是仍有一部分操作(缓存访问不命中,缓过期)和全部的写操作(要改变硬盘)需要访问数据库,

在网站的用户达到一定规模后数据因为负载压力过高而成为网站的瓶颈,

目前大部分的主流数据都提供从主热备功能,通过配置两台服务器的主从关系,

可以将一台数据库服务器的数据更新到同步到另一台服务器上,

网站利用数据库的这一功能,实现数据库的读写分离,从而改善数据库负载压力

一主多从,一台写的多台读的,从库可以复制主库的数据

使用反向代理和CDN加速:  解决速度问题

随着网络不断发展,用户规模越来越大,由于中国复杂的网络环境,不同地区的用户访问网站时,

速度差别也极大,为了提供更好的用户体验,留住用户,网站需要加速网站访问速度,主要手段有CDN的 反向代理

CDN的反向代理基本原理都是缓存,

区别在于CDN部署再网络供应商的机房,

反向代理则部署在网络的中心机房,

当用户请求到达中心机房后,

首先访问的服务器是CDN反向代理服务器,

如果反向代理中缓存这用户请求的资源,

就将其直接其返回给用户

如果我们要访问阿里的网络,阿里的中心机房在杭州,我们访问阿里网站来发送一个请求,

时的网络时阿里给我们共享出来的一个网关网络,和我们的网络不时同一个网络,我们把请求发到互联网上,

然后根据路由器的一跳一跳,找到杭州的服务器机房门口,杭州的访问快,西藏访问的慢

为了解决这个问题,就用到了CDN反向代理(原理是缓存),CDN是网络提供商的机房,就是电信和移动会构建CDN,

全国各地都能上网(电信移动这种基础运营商肯定是遍布全国各地),

所以我们可以把自己的数据放在电信移动铺设的这个网络平台里面,这样就快了

比如:

运营商会定期把用户可能经常访问的一些网站的logo,一些网站主页,交钱后把数据放在电信移动的机房中

我们用户通过CDN进来的时候,访问阿里百度端的中心机房的时候还是先访问的是CDN代理服务器

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

任何强大的单一服务器都满足不了大型网站持续增长的业务需求,数据库经过读写分离后,

一台服务器拆分成两台服务器,但是随着网站业务的发展依然不能满足需求,

这时需要使用分布式数据库,文件系统也是一样,需要使用分布式文件系统

分布式数据库是网站数据库最后的手段,只有在单表规模非常大的时候才用,

不到不得已时才用,网站更常用的数据库拆分手段是业务分库,

将不同业务的数据库部署在不同的物理服务器上

网站架构基础学习(详细)相关推荐

  1. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  2. Linux shell脚本基础学习详细介绍(完整版)2

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  3. Linux shell脚本基础学习详细介绍(完整版)

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  4. 各大网站架构总结笔记

     各大网站架构总结笔记 记得在大学里不止一次关注网站架构方面的东西了,但每次都是泛泛了解,也没有着重记录,一段时间后对各种架构的思想也就模糊了.这几天不知怎么的又心血来潮(可能是快毕业了冲动了)想 ...

  5. 部署LNMP动态网站及网站架构变迁

    1:网站架构演变 学习从单机架构到集群架构的演变之路: 单机版LNMP 独立数据库服务器 Web服务器集群与Session保持 动静分离.数据库集群 各种缓存服务器 业务模型 单机版LNMP 单机版网 ...

  6. Twitter网站架构介绍(转)

    作为140个字的缔造者,twitter太简单了,又太复杂了,简单是因为仅仅用140个字居然使有几次世界性事件的传播速度超过任何媒体,复杂是因为要为2亿用户提供这看似简单的140个字的服务,这真的是因为 ...

  7. IT:后端进阶技术路线图(初级→中级→高级)、后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介、技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略

    IT:后端进阶技术路线图(初级→中级→高级).后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介.技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略 目录 后端 ...

  8. 大型网站架构学习笔记

    前言 最近一直在拜读两本书: 1.李智慧老师的<大型网站技术架构 核心原理与案例分析> 2.曾宪杰老师的<大型网站系统与Java中间件实践> 看了并结合自己目前的工作进行了思考 ...

  9. 网站架构设计发展路径学习

    1.系统概况图 图1.1 系统架构概况图 图1.2 较为完整的系统架构图 2.系统使用的主要技术 下列排名不分先后 2.1前端 JavaScript,html,css,silverlight,flas ...

最新文章

  1. 可视化卷积神经网络的过滤器_万字长文:深度卷积神经网络特征可视化技术(CAM)最新综述...
  2. 深度学习:推动NLP领域发展的新引擎
  3. 一台台式计算机的主要配件有哪些,电脑的基本配件有哪些
  4. (仿头条APP项目)1.app载入界面相关功能实现
  5. MonkeyServer的使用及自动化
  6. 第 8 章 容器网络 - 051 - 在 overlay 中运行容器
  7. java-StringBuffer构造方法
  8. MySQL高级 - SQL优化 - limit优化
  9. Dev C++ 实现Hello World
  10. Python3.x 基础练习题100例(91-100)
  11. 【Stimulsoft Reports.WPF教程】在代码中使用报表变量
  12. 惠普打印机换硒鼓图解_hp硒鼓怎么安装 hp硒鼓安装方法这图文教程】
  13. PHPWAMP集成环境配置ssl证书
  14. 图像边缘检测新方向--量子算法
  15. 第十届飞思卡尔杯智能车竞赛规则解读
  16. 委托租赁云服务器协议,委托租赁云服务器协议
  17. 几何光学学习笔记(8)- 3.2 理想光学系统的焦点与焦平面、主点与主平面、焦距、节点
  18. 童甫带您去了解海航科技集团旗下的小二租车近况
  19. 10. 项目沟通管理与干系人管理
  20. 通达信全市场数据导入指南—基于股票量化分析工具V2.0!

热门文章

  1. MFC 给对话框添加图片背景
  2. EOS调用Json-RPC接口
  3. HDU6599(PAM+马拉车(hash))
  4. jvm完全解读加吐血整理之垃圾回收
  5. 一位前端开发者的计算机视觉学习之路——专访《Chrome扩展及应用开发》作者李喆
  6. 业绩下滑、股价大跌,芯片厂商如何越过寒冬?
  7. 【产业互联网周报】半导体并购潮持续爆发:Marvell100亿美元收购Inphi;Canalys报告:三季度全球云市场增长33%...
  8. TV Box 安装及使用流程
  9. 怎样让MDK下载完程序后直接就可以运行,而不用手动复位或重新上电等操作
  10. Flutter学习笔记--Gridview网格组件制作相册