非常推荐去看原文↓
-
单元化概述
- 概念:将业务按维度划分成单元,理想情况下单元自包含,能独立处理业务流程,数据分散在各单元且组合完整,流量按分区维度调度,保证同一分区数据写入同一单元。
- 原因:解决资源限制、合规要求和容灾需求,同时带来业务体验提升、成本降低、隔离风险等收益。
- 挑战:包括机房延迟、数据同步、流量路由、数据正确性、成本和管理复杂度等问题。
-
字节跳动异地单元化架构
- 架构设计:围绕客户端选路、接入层纠偏、计算层纠偏、存储访问层管控构建流量调度和管控能力,确保流量和数据访问正确性,生产环境已接入众多核心微服务和实例。
- 关键问题及解决方式
- 单元维度选择:综合业务特性和核心问题,选择 Region 维度构建单元,形成同城容灾 + 异地多活架构。
- 分区维度选择:常见以用户(UserID)或 Region 为分区维度,需考虑数据不重叠、流量调度灵活性、路由计算轻量和单元内调用闭环等因素。
- 流量单元化调度:通过映射表和表达式管理分区和单元映射,在客户端、接入层、计算层和存储层根据必要性进行路由信息计算和纠偏。
- 复杂业务调度适配:区分本地服务和中心服务,不同服务类型决定流量调度方式和数据同步方式,降低业务理解和管理复杂度。
- 多单元数据管理:单元间数据同步分单向和双向,考虑防回环和唯一 Key 冲突处理,通过实时增量比对和周期全量比对保证数据同步一致性,重点检测和处理热键。
- 数据多活正确性保证:日常态通过存储访问中间件识别和拦截异常单元化流量;切流态采用两阶段配置变更 + 存储访问禁写避免数据脏写,同时优化配置下发时效、防止路由死循环并检查各层状态。
- 切流可靠性和风险控制:包括优化配置下发时效、防止路由死循环和检查业务架构各层状态。
- 跨地区 RPC 质量提升:通过跨单元 RPC 通道收敛和跨单元网络分级 QoS 管控优化跨地区 RPC 质量。
-
未来演进思考
- 多单元研发成本和效率优化:降低多 Region 视角下的研发和业务管理成本。
- 极致成本优化:计算资源和存储资源成本在异地单元化架构下有望进一步优化。
- 复杂单元化架构演进:应对区域增多和业务发展带来的流量调度、数据单元化和同步模型的变化,解决数据识别和搬迁问题。
- 完善数据多活能力:满足电商、支付类等高数据一致性要求业务的需求,发展跨 Region 强一致数据库。
...