• web 系统发展历程



    尚硅谷课程的学习笔记


    web系统的发展历程

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

    最开始(90年代),一个网站的访问量不大,页面多是静态网页,这种情况下,单个数据库是完全可以支撑的 ;
    美好的单机年代
    后来随着技术的发展,动态页面的加入,网站访问量上去以后,单个数据库开始出现瓶颈问题了 ;

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

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

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

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


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

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

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

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

    改变1


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

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

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

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

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

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


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

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

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

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

    在这里插入图片描述!

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

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


    ------ 现在的架构

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

    在这里插入图片描述

  • 相关阅读:
    The Game
    棋盘问题(dfs)(类似8皇后)
    dfs---之全排列
    Dijkstra算法(求单源最短路径)
    四点共面 (简单题)
    最长递增子序列
    线段的重叠
    kruskal
    hdu 1232 畅通工程
    无限对拍程序
  • 原文地址:https://www.cnblogs.com/young-youth/p/11665621.html
Copyright © 2020-2023  润新知