本文是关于某互联网公司多活稳定性运维架构的解析和实践经验分享。文章从多活架构的定义出发,详细介绍了同城多活、异地多活的概念及其优势和挑战,并深入探讨了多活管控治理的各个方面,包括流量调度、数据同步、缓存一致性、消息队列同步等关键技术点,以及多活架构下的业务场景确定、接口依赖梳理、消息场景梳理、接口链路梳理、数据存储梳理等实施步骤。最后,文章总结了多活架构的收益与成本,并对不同类型的多活架构进行了对比分析。
多活架构解析: 多活架构指在不同地理位置的数据中心部署应用服务和数据,能够同时提供服务。架构分为异地多活、同城多活和单活/灾备三种类型。同城多活数据中心间网络延迟低,数据层具备同步和切换能力,适合抵抗城市级别以下的故障。异地多活数据中心间网络延迟较高,需要按用户分片划分流量,数据层具备单元分片能力,适合抵抗城市或区域级别的灾难。
多活管控治理: 多活管控涉及流量接入层、数据访问层、缓存层、消息层和数据存储层等多个层面。关键技术点包括: - 流量调度:通过DCDN、SLB和APIGW实现南北向流量管控,支持多机房流量权重灵活调整。 - 缓存一致性:采用统一Proxy,支持Redis、Memcache,通过Canal订阅同可用区存储Binlog,投递消息队列,由业务Job解析处理后更新缓存。 - 消息队列同步:遵循单可用区内自产自消原则,支持多可用区间消息双向同步,根据业务场景提供三种消费处理模式。 - 数据存储:支持MySQL、TiDB、Taishan(KV)等,实现主从单向同步、双向同步和高可用容灾切换。
多活架构实施步骤: 实施多活架构需要进行以下步骤: 1. 确定业务场景:对业务进行分级,区分核心/非核心功能,与产研商定多活改造的场景。 2. 接口依赖梳理:梳理依赖应用、接口,划分强弱依赖,梳理依赖中间件、组件。 3. 消息场景梳理:梳理涉及的消息队列,生产/消费者,以及下游处理消息方式。 4. 接口链路梳理:梳理场景涉及业务流程,涉及服务、接口。 5. 数据存储梳理:分类数据,确定一致性要求,可丢失性、可恢复性,以及存储、缓存使用方式。 6. 改造实施上线:制定业务架构、中间件改造方案,多活管控接入、验证方案,以及多活切量执行预案。
收益与成本分析: 多活架构的收益包括高可用性、解决机房容量限制、变更灰度管控能力、重大活动稳定性保障等。成本方面,包括数据中心、基础设施、硬件资源投入,业务架构改造成本,以及架构复杂度带来的资源管理和运维管理成本。
多活架构对比: 文章最后对比了同城多活、单元化多活+异地读多活、异地多活三种架构。同城多活适合抵抗城市级别以下故障,单元化多活+异地读多活提供了更灵活的流量调度和数据管理,而异地多活则能够抵抗更高级别的灾难,但架构复杂度和成本也相对较高。
|