美文网首页找个工作
大型网站架构演变过程

大型网站架构演变过程

作者: 吃掉夏天的怪物 | 来源:发表于2021-04-11 20:56 被阅读0次
    1. web动静资源分离
    2. 缓存处理
    3. web server集群 + 读写分离
    4. CDN、分布式缓存、分库分表
    5. 多数据中心+分布式存储与计算

    web server与数据库分离

    image.png

    这里的web服务器指http服务器与应用服务器
    上半部分的部署情况,任何一个出现瓶颈都会影响另一个,因此可以将web服务器与数据库服务器分开
    还可以动静分离

    但这两个,都只存在单点,不符合高可用

    1. web动静资源分离

    image.png

    2. 缓存处理

    缓存处理.png

    Front Page Cache 可以做一些静态页面缓存

    3. web server集群 + 读写分离

    前端后端需要加一个负载均衡,然后数据库就可能出现瓶颈,因此增加读写分离。因此读可以比写多分配一个。主流都有replication机制对其做同步。


    image.png

    前端负载均衡

    • DNS负载均衡
      在DNS服务器中,可以为多个不同的地址配置一个名字,对于不同的客户机访问同一个名字,得到不同的地址。
    • 反向代理
      使用代理服务器将请求发给内部服务器,让代理服务器将请求均匀转发给多台内部服务器之一,从而达到负载均衡的目的。标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个用户使用它访问内部Web服务器,因此也称为反向代理模式
    • 基于NAT的负载均衡技术
    • LVS (开源软件)
    • F5硬件负载均衡 (这个不便宜)

    应用服务器负载均衡 (上节课讲的可以利用任务服务器)

    数据库负载均衡

    4. CDN、分布式缓存、分库分表

    负载均衡.png

    CDN:内容分发网络

    在各个运营商增加一个CDN,这样不同地区访问网站速度都能得到提升

    分布式缓存

    所有缓存对主机都是共享


    分布缓存.png

    左边是本地数据缓存,数据库的缓存缓存到这台应用服务器之上,这台应用服务器的缓存和其它共享。

    分库分表

    数据库量太大,可能会有锁竞争。一定程度上可以避免锁竞争。分库后表可能也比较大,因此还可以分表。

    分库

    垂直分区.png
    分表
    水平分区.png
    DAL数据访问层编写的难度增加

    5. 多数据中心+分布式存储与计算

    最终.png
    可以发现对于之前,增加了基于分布式文件系统计算机构架建立数据中心
    原因:对一致性要求不那么高的数据没有必要存在关系型数据库中,关系数据库一致性要求比较高,其事务处理、大表的join都是服务器性能杀手。(pB级别数据)。因此在数据中心可以用nosql等存储这些一致性要求不高的数据,从而有更高的并发性。

    关系型数据库,更注重数据的一致性。

    技术点[DFS(分布式文件系统)、Key-Value DB、 Map/Reduce(分布式的计算框架)]

    image.png

    如淘宝的商品有很多图标,小。如果用操作系统的文件系统来管理,操作系统磁盘每个块都比较小,查找某个图标,就会在磁头来回转动效率低。而用文件系统,可以用Hash算法快速找到文件。可以减轻对操作系统I/O的访问。

    Map/Reduce : 统计文件单词的计数,但是这些文件不能一次放在内存中。用一台机器统计效率比较低,因此可以用多台机器去统计它。得到Key-val 数据(可能出现在Key-value机器上)就是map的过程(hello 1次 hello 1次), 合并就是reduce的过程(hello 2 次) map combine reduce

    相关文章

      网友评论

        本文标题:大型网站架构演变过程

        本文链接:https://www.haomeiwen.com/subject/znlzkltx.html