美文网首页
系统设计基础知识

系统设计基础知识

作者: madao756 | 来源:发表于2021-10-19 20:23 被阅读0次

    基础知识

    负载均衡

    • 分布式系统不可少的组件
    1. 有 user 到 web server 之间的负载均衡

    2. 有 web server 到 app server 之间的负载均衡

    3. 有 app server 到 db server 之间的负载均衡

    • 实现方法
    1. smart client
    2. Hardware Load Balancer
    3. Software Load Balancer

    缓存

    缓存更好的利用资源,最近访问的数据或者近期访问的数据更有可能被访问。有以下的方法:

    • local cache
    • distributed cache
      1. 优点:方便扩容,通过一致性 hash,方便找到缓存的节点。
      2. 缺点:不做冗余的缓存,缓存节点下线,导致缓存穿透。做缓存的冗余,缓存系统复杂性上升。
    • global cache
      1. 两种回源策略:
        1. 由缓存负责回源,避免穿透
        2. app server 去回源,降低 Global Cache 的负载(第二种更常用)

    CDN

    主要存储静态资源。具体原理可以参考《自定向下计算机网络》。

    • 缓存有效性策略

      1. Write-through cache

        同时写缓存和持久化。在不考虑写失败的情况下,缓存和持久化层保持一致。缺点是高延迟。

      2. Write-around cache

        由于上一个策略要写两遍数据,所以延迟可能会比较高,Write-around cache 策略就是只写持久化层。减少一次写入,缺点就是遇到写入后立马读的case延迟会比第一种策略还要高。

      3. Write-back cache

        写回策略。只写缓存,但是定期写入持久层。这样有数据不一致的风险。

    • 缓存替换策略

      1. First In First Out (FIFO)
      2. Last In First Out (LIFO)
      3. Least Recently Used (LRU)
      4. Most Recently Used (MRU)
      5. Least Frequently Used (LFU)
      6. Random Replacement (RR)

    分片或数据分区

    • 分片的方法
      1. 水平分片
      2. 垂直分片
      3. 根据目录分片
        1. 有一张 table 存储这条记录存在哪里
    • 分片的根据
      1. key 或者 hash 取模分区
      2. 列表分区:每个分区记录了一个 key 的范围
      3. Round-robin 分区
      4. 复合分区:结合上述方法做分区
    • 分片中的常见问题

    索引

    代理

    队列

    冗余和备份

    SQL 和 NoSQL

    CAP 理论

    一致性 hash

    Hash 环主要解决大量迁移的问题。

    虚拟节点主要解决 hash 环分配不均的问题。

    Long-Polling 和 WebSockets

    系统设计步骤

    • 需求澄清
    • 接口定义
    • 粗略估计
    • 定义数据库模型
    • 高层设计
    • 设计细节
    • 发现并解决系统瓶颈

    相关文章

      网友评论

          本文标题:系统设计基础知识

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