系统架构的演进

​ 系统架构的演进

上古架构

90年代 单机时代 一台服务器甚至可以承载前端应用和数据库 稍微正式点的 两台服务器足以 一台前端 一台后端mysql

image-20220412100739842

随着数据量的增加出现以下问题

  1. 数据量大 读写在一起 单台mysql访问量太大

  2. 数据量大 单台存储 数据索引很慢

  3. 单台数据库内存 磁盘都存在上限 到一定容量无法扩展

  4. 文件直接读取硬盘 硬盘的读写速度与内存的读写速度相差太大 大多数时间都是等待磁盘检索

Memcached + Mysql +读写分离

通过内存缓存 memcached 用户读取的数据来源于内存 速度远快于磁盘

读写分离 ,相对于写入数据来说来说, 用户的数据访问 大多数是读取数据 ,

通过后端集群架构 多台读主机 相对少量的写主机 读写之间通过数据同步实现数据一致

这样就实现了读写分离

每当出现性能瓶颈的时候 历史总是分为多个分支去解决问题

IBM走向了一个分支 开发出小型机 ,内部磁盘冗余 内存扩展,多网卡等等的小型机,总之一台机器上 我想办法帮你解决你说的问题

但是价格也是很感人的

另外一个分支也是大家看到的分支 集群架构

打个比方 如果一台车太重了 一头牛拉不动 IBM相当于找一台更强壮的牛,这个牛更贵 坏了也更费钱

而我们的想法 既然一头牛拉不动 我找两头牛,一头牛坏了 我们可以更换 也不贵

image-20220412101727214

垂直拆分(数据库中的表放到不同数据库) + 水平拆分(一张表数据分别存储到不同数据库)

按照上面的架构继续演进 性能的瓶颈出现在了mysql上 技术用cache内存 后面的数据越来越大 数据库的技术也

不可能突然推进很多 ,既然数据访问到最后就是数据的表 那我们就把用户访问的表拆分开 不让一个表太大 有太多的热点数据,同时把不同的数据分成不同的库

image-20220412103802593

当今架构

当今年代 数量井喷式增长 数据的样式也各种各样,图片 视频 定位信息等层出不穷 大数据的年代 mysql终于力不从心 Nosql应运而生 解决了大数据时代的问题

关系型数据库:列+行,同一个表下数据的结构是一样的。

非关系型数据库:数据存储没有固定的格式,并且可以进行横向扩展。

NoSQL(not only sql )泛指非关系型数据库,随着超大规模的高并发的社区,暴露出来很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的。

目前企业的常见架构

image-20220412113226444

Nosql特点

  1. 方便扩展(数据之间没有关系 好扩展)

  2. 大数据量高性能(Redis基于内存的读写 一秒可以写8万次,读11万次,性能会比较高)

  3. 数据类型是多样型的(不用事先设计数据库,随取随用)

    传统RDMS

    1. - 结构化组织

    2. - SQL

    3. - 数据和关系都存在单独的表中 row col

    4. - 操作,数据定义语言

    5. - 严格的一致性

    6. - 基础的事务

    7. -...

      Nosql

      1. - 没有固定的查询语言

      2. - 键值对存储,列存储,文档存储,图形数据库(社交关系)

      3. - 最终一致性

      4. - CAP定理和BASE

      5. - 高性能,高可用,高扩展

      6. - ...

        大数据时代的3V :主要是描述问题的

        1. 海量Velume
        2. 多样Variety
        3. 实时Velocity

        大数据时代的3高 : 主要是对程序的要求

        1. 高并发
        2. 高可扩
        3. 高性能

    当今公司 NoSQL + RDBMS

    Nosql分类

    1. KV键值对

    Redis

    Memcache

    1. 文档型数据库(bson数据格式)

      MongoDB(掌握)

      基于分布式文件存储的数据库。C++编写,用于处理大量文档。

      MongoDB是RDBMS和NoSQL的中间产品。MongoDB是非关系型数据库中功能最丰富的,NoSQL中最像关系型数据库的数据库。

      ConthDB

    2. 列存储数据库

      • HBase(大数据)
      • 分布式文件系统
    3. 图关系数据库

      用于广告推荐,社交网络

      • Neo4j、InfoGrid

      image-20220412115136660

posted @ 2022-04-12 15:22  机猿巧合  阅读(73)  评论(0编辑  收藏  举报