七月

毛剑 - B站高可用架构实践

Date

2021-07-18

URL

https://zhuanlan.zhihu.com/p/139258985

负载均衡
  • 前端负载均衡 以 DNS 为主

    • 尽量选择最近节点

    • 基于带宽策略调度选择 API 进入机房

    • 基于 可用服务容量 平衡流量

  • 数据中心内部负载均衡

    • 均衡流量分发

    • 可靠识别异常节点

    • scale-out,增加同质节点以扩容

    • 减少错误,提高可用性

为客户端分配 backend 子集:🔍Deterministic Subsetting

JQS(最闲轮训)负载均衡算法

限流
  • 分布式限流: Quota Server

  • 客户端限流

过载保护

重试
  • 要限制重试的次数,以及基于重试分布的策略

  • 只应该在失败层进行重试,当重试仍然失败时,我们需要全局约定错误码,避免级联重试

  • 使用随机化、指数型递增的充实周期,参考 Exponential Backoff 和 Jitter

  • 设定重试速率指标(?),用于诊断故障

客户端限速

超时
  • 进程内超时控制

  • 跨进程超时控制(依赖 RPC 框架)

名词解释

BFE
领域

计算机

这里说的是 Bilibili Front End,理解为边缘节点的 proxy 即可

SLE
领域

计算机

Server Load Balancing

BFF
领域

计算机

Backend for Frontend

eBPF

URL

https://blog.fleeto.us/post/what-is-ebpf/

ZBS:SmartX 分布式块存储 - 元数据篇

Date

2021-07-28

URL

https://zhuanlan.zhihu.com/p/36138609

分布式存储中通常需要解决的问题:
  • 元数据服务

    • 集群成员管理

    • 数据寻址

    • 副本分配

    • 负载均衡

    • 心跳

    • 垃圾回收

  • 数据存储引擎

    • 单机存储

    • 本地磁盘的管理

    • 磁盘故障处理

  • 一致性协议

元数据服务
需求
  • 可靠性

    • 多副本

    • 故障转移(Failover)

  • 高性能

    • 响应时间短

    • 高吞吐

  • 轻量级

解决方案
  • LevelDB + ZooKeeper

  • Log Replication

Meta Server Leader 将数据库 log 操作写入 Zk,写入成功后将修改提交到本地 LevelDB,Meta Server Standby 从 Zk 读取 log 提交到本地 LevelDB

故障转移

Leader 发生故障,其他 Meta Server 再次进行选主,新选的 Leader 会从 Zk 同步所有未消耗的 log,提交后则对外提供服务

素描研究群 作业点评

Date

2021-07-30

有温度的画面。

👤霍克尼 的人物写生