尚硅谷课程的学习笔记


web系统的发展历程

------- 单机mysql的美好年代

最开始(90年代),一个网站的访问量不大,页面多是静态网页,这种情况下,单个数据库是完全可以支撑的 ;



后来随着技术的发展,动态页面的加入,网站访问量上去以后,单个数据库开始出现瓶颈问题了 ;

  1. 系统的数据量太大,一台数据库服务器已经存不下了;

  2. 创建的数据的索引,越来越多,单台数据库服务器的内存已经加载不了全部索引了 ;

  3. 网站做的越来越大,访问量越来越多,读写操作越来越频繁,达到单台数据库实例读写的瓶颈了;

    遇到上面的磁盘、内存、读写瓶颈,伟大的架构师开改变系统架构;


------ Memcached(缓存)+Mysql+垂直拆分

为了缓解上面提到的访问量过多,对数据库服务器造成的压力,架构师选择在数据库服务器之前,架构一个缓存服务器,帮数据库挡掉一部分压力 ;

对有索引和数据量太大,架构选择对数据库进行 垂直拆分,使用多台数据库,构建集群,将不同的 业务 的数据(比如卖家和买家)保存到不同的数据库服务器上;

垂直拆分:(按照业务进行分割,将不同业务的表,分到不同的数据库里面


------ mysql 主从读写分离

主从分离:主库有一条记录,从库也立刻记录一条 ;

读写分离:读和写的操作,放在不同的数据库服务器上 ;

对于之前的架构,已经可以解决大部分的问题了,但是在某些情况下,还是会有问题的,前面 Memcaahe 缓存只会降低对数据库读的压力,但是如果有大量的 读写操作 集中到一台数据库上,数据库还是会达到性能瓶颈,比如大量的买家注册信息,同时又有大量的买家登录系统,读写全聚到一起了,那么保存买家的数据库压力就会很大;

架构师们又想出一个改进,进行 主从读写分离图中的而每一个主、从,都是一个数据库组,里面都进行了垂直拆分 );



继续对数据库进行垂直拆分的,图上没细画出来,并且进行主从读写分离,所有的写操作都由 master 进行,所有的读操作,都由 slave 进行 ,将读写分离,缓解数据库的压力;


------ 分表分库+水平拆分+mysql集群

水平拆分:将同一张表的数据,分到不同的数据库 ;

上面的架构,将读写分离,减轻了数据库的写压力,但是当访问量持续增加,写操作都在 master 服务器上 ;master 时间久也扛不住了。

继续改进,使用如下架构:

进行分表分库操作,将数据表的数据内容,水平分表,按照字段的某些规则,将同一张表的数据进行划分,存到不同的数据库里面,每个 M/S 里面都是这样的一个数据库组 ;

然后进行集群,组成一个大的系统 ,简单说,就是将数据进行了分类,每组 M/S 里面,水平分表,保存在所有的表,但是保存每张表的部分数据;这样,就相当于导流了,试想,当有有人读写数据库,读写的数据不同,就会被分到不同的 M/S 上,这样对 M/S 的主数据库减轻压力 ;


------ 现在的架构

前面当有 负载均衡Nginx),然后打到 服务器集群 ,然后 数据库集群 ,还有 缓存服务器图片服务器音、视频服务器通信服务器 等一大堆 ;

web 系统发展历程的更多相关文章

  1. web技术发展历程--读《大型网站技术架构_核心原理与案例分析》

    1 早期的web服务 2 CGI程序的出现.发展.凋零到MVC的兴起 CGI:通用网关接口技术. 随着CGI技术的出现,web服务端可以通过不同的用户请求产生动态页面内容. web服务器将请求数据交给 ...

  2. web服务发展历程

    PhP发展历史1.php: 开始名字含义:personal home page 个人网页 现在名字含义:HyperText Perprocessor 超文本预处理语言 预处理: 说明PHP是在服务器预 ...

  3. 十年WEB技术发展历程

    一个小分享,知识有限,抛砖引玉. ajax 03年的时候我上六年级,那时候网吧刚在小县城的角落萌生.传奇,大话西游第一代网游一时风靡.我抱着试一试的心态给了网吧老板两块钱想申请个号玩玩,然后接下来的一 ...

  4. web开发发展历程

    cs架构:(软件主要运行在桌面上,数据库软件运行在服务器端) 缺点:如果web应用修改或升级,需要每个客户端逐个升级桌面App,因此Browser/server模式开始流行. bs架构:应用程序的逻辑 ...

  5. 动态 Web Server 技术发展历程

    动态 Web Server 技术发展历程 开始接触 Java Web 方面的技术,此篇文章是以介绍 Web server 相关技术的演变为主来作为了解 Java servlet 的技术背景,目的是更好 ...

  6. Web UI 技术发展历程

    本文内容 纯文本和静态 HTML 页面 服务器端技术 插件技术--ActiveX.Applet 和 Flash Ajax 异步时代和基于 JavaScript 的 UI 技术 RIA--Adobe F ...

  7. Linux实战教学笔记03:操作系统发展历程及系统版本选择

    标签(空格分隔): Linux实战教学笔记-陈思齐 第1章 Linux简介 1.1 什么是操作系统? 简单讲:操作系统就是一个人与计算机硬件的中介. 操作系统,英文名称Operating System ...

  8. 从故纸堆里,回顾下Web技术的发展历程

    通过对比这些年的计算机图书来让大家感受下前些年Web技术的发展历程. Web开发框架,目前是Spring Boot+JPA,我正好出过本书,从中大家能感受到现在的技术. <Spring Boot ...

  9. 使用C/C++发展Web系统开源

    下载 见 C++开发的论坛系统 - BBS 下载地址:Fetch_source_code_release_vse2008_v1.2.1.7z 眼下先暂存在百度云上,最近会放入github 当前版本号的 ...

随机推荐

  1. java循环获取多天时间

    通过开始时间和结束时间循环获取时间: SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date star ...

  2. win7下如何根据端口号杀掉进程

    点击windows左下窗口图标按钮.   输入cmd   输入netstat -ano后回车.   左边箭头指向端口号,右边箭头指向为这个端口号对应的进程号pid,我们记下pid号   我们以2001 ...

  3. ICEM-圆锥的一种画法(2D转3D)

    原视频下载地址:https://pan.baidu.com/s/1jIOEelo  密码: btap

  4. faster-rcnn CUDA8.0编译错误

    之前编译Faster-RCNN的时候用的都是CUDA7.5,最近换了机器,变成了CUDA8.0,果然编译出现错误了…… 参考下面这篇博客解决了问题: http://blog.csdn.net/kexi ...

  5. javascript创建对象的几种方式?

    javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON:但写法有很多种,也能混合使用. 1.对象字面量的方式 person={ firstname:" ...

  6. python 设计模式之备忘录模式

    1.为什么用备忘录模式 假设大战僵尸游戏共10关,越是往后关卡越难,越难就越是费时间费钱费精力. 开始大战僵尸,玩了好久好久终于玩到了第9关,真是不容易. 这个时候开始玩第9关了,哇,好难啊,真不幸, ...

  7. 简易的CRM系统案例之Struts2+Hibernate3+JSP+MySQL版本

    改造上一版本的DAO层 简易的CRM系统案例之Struts2+JSP+MySQL版本 src文件下hibernate.cfg.xml <!DOCTYPE hibernate-configurat ...

  8. ObjectAnimator简单示例

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  9. 命令行启动python的IDLE

    如果你电脑上使用了anaconda2,默认路径为python2,但是你又想使用anaconda2下的python3的idle 方法如下: 首先查看python的路径: (deeplearning3) ...

  10. 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_04-用户认证-认证服务查询数据库-查询用户接口-接口开发

    定义dao 权限放在授权的课程里面做,现在先不管.我们还需要查企业信息,就是用户所属的公司 公司表 对应关系在xc_company 这是一个关系 表 这个表里有唯一索引 user_id 所以根据use ...