异地多活是一种高可用架构设计,它指的是分布在不同地理位置的多个数据中心同时对外提供服务的业务场景。这种架构与传统的灾备设计的主要区别在于“多活”,即所有站点都同时在对外提供服务,而不仅仅是作为备份。
应用场景
异地多活架构适用于以下场景:
-
同城灾备:适用于容灾可用性要求达到99.9%,业务分布在同一个地域,要求支持同城跨AZ的应用和数据灾备场景。
-
同城双活:适用于容灾可用性要求达到99.95%,要求业务双活的容灾场景。同城跨AZ的应用数据多活,并分担部分业务流量。
-
两地三中心:适用于容灾可用性要求达到99.99%,同时进行跨AZ和跨Region容灾场景。同城双活+异地灾备,提供最高程度的业务连续性和数据可用性保障。
-
异地多活(单元化):适用于容灾可用性要求达到99.99%+,业务对时延敏感,且要求数据分区化场景。分区化管理+应用数据多活,可扩展性强,可以随时增加新的分区,可靠性高。
-
混沌工程:适用于向被测系统主动引入故障,通过故障注入、故障演练的方式提升系统可靠性。
技术解释
异地多活的挑战包括:
-
物理距离带来的延时:如果应用请求需要在异地多个单元对同一行记录进行修改,为满足异地单元间数据库数据的一致性和完整性,需要付出高昂的时间成本。
-
单元内数据读写封闭:不能出现不同单元对同一行数据进行修改,需要找到一个维度去划分单元。
-
数据路由:某个单元内访问其他单元数据需要能正确路由到对应的单元,例如A用户给B用户转账,A用户和B用户数据不在一个单元内,对B用户的操作能路由到相应的单元。
-
数据同步挑战:对于单元封闭的数据需全部同步到对应单元,对于读写分离类型的,需要把中心的数据同步到单元。
异地多活架构通过在不同地理位置部署应用和数据库,实现数据的双向同步和业务的切流能力,从而在故障场景下保障业务连续性。这种架构提高了系统的抗故障能力和读性能,同时也提升了资源利用率和业务并发度。