非常推荐去看原文↓

字节跳动技术团队

  1. 单元化概述

    • 概念:将业务按维度划分成单元,理想情况下单元自包含,能独立处理业务流程,数据分散在各单元且组合完整,流量按分区维度调度,保证同一分区数据写入同一单元。
    • 原因:解决资源限制、合规要求和容灾需求,同时带来业务体验提升、成本降低、隔离风险等收益。
    • 挑战:包括机房延迟、数据同步、流量路由、数据正确性、成本和管理复杂度等问题。
  2. 字节跳动异地单元化架构

    • 架构设计:围绕客户端选路、接入层纠偏、计算层纠偏、存储访问层管控构建流量调度和管控能力,确保流量和数据访问正确性,生产环境已接入众多核心微服务和实例。
    • 关键问题及解决方式
      • 单元维度选择:综合业务特性和核心问题,选择 Region 维度构建单元,形成同城容灾 + 异地多活架构。
      • 分区维度选择:常见以用户(UserID)或 Region 为分区维度,需考虑数据不重叠、流量调度灵活性、路由计算轻量和单元内调用闭环等因素。
      • 流量单元化调度:通过映射表和表达式管理分区和单元映射,在客户端、接入层、计算层和存储层根据必要性进行路由信息计算和纠偏。
      • 复杂业务调度适配:区分本地服务和中心服务,不同服务类型决定流量调度方式和数据同步方式,降低业务理解和管理复杂度。
      • 多单元数据管理:单元间数据同步分单向和双向,考虑防回环和唯一 Key 冲突处理,通过实时增量比对和周期全量比对保证数据同步一致性,重点检测和处理热键。
      • 数据多活正确性保证:日常态通过存储访问中间件识别和拦截异常单元化流量;切流态采用两阶段配置变更 + 存储访问禁写避免数据脏写,同时优化配置下发时效、防止路由死循环并检查各层状态。
      • 切流可靠性和风险控制:包括优化配置下发时效、防止路由死循环和检查业务架构各层状态。
      • 跨地区 RPC 质量提升:通过跨单元 RPC 通道收敛和跨单元网络分级 QoS 管控优化跨地区 RPC 质量。
  3. 未来演进思考

    • 多单元研发成本和效率优化:降低多 Region 视角下的研发和业务管理成本。
    • 极致成本优化:计算资源和存储资源成本在异地单元化架构下有望进一步优化。
    • 复杂单元化架构演进:应对区域增多和业务发展带来的流量调度、数据单元化和同步模型的变化,解决数据识别和搬迁问题。
    • 完善数据多活能力:满足电商、支付类等高数据一致性要求业务的需求,发展跨 Region 强一致数据库。