随着企业服务窗口的不断增加,业务中断对很多企业意味着毁灭性的灾难,因此,跨多个数据中心的应用部署成为了当下最热门的话题之一。大数据时代,数据中心的异地容灾变得非常重要。当组织考虑在多个跨数据中心(或区域云)部署应用时,他们通常会希望使用“异地容灾”的架构。
那么什么是“异地容灾”
异地容灾是一个冷备的概念。即平时正常的时候,另外一个机房只是当做备份。而异地双(多)活,却是指有两个或者多个可以同时对外服务的节点,任意一个点挂了,也可以迅速切换到其他节点对外服务,节点之间的数据做到准实时同步。相较于同城双活,异地的投入成本大,实现起来会更复杂。但是异地双活的一个天然优势,让大家对它趋之若鹜,即其扩容不会受地域的限制。
“异地双活”面临的挑战
1、切换问题
切换问题不仅仅是灾难发生自动切换到好的机房,还有另外一个问题,就是灾难机房恢复能力后,如何再切换回去,切换回去的数据同步问题又是需要解决的。
2、跨机房流量问题
跨机房的流量是花钱的。所以不是无限大的。控制跨机房消息体的大小,当然是越小越好。然而,很多时候要想保证数据同步是一件很耗费流量的事情。但跨机房流量真的是一座山。
既然跨机房流量有限制,而且不稳定。所以有一种解决方案就是不跨机房。既然不跨机房就要做用户分区,确保每个用户只能访问自己所在的区,这样至少能保证该用户自己的数据的完整。
3、业务拆分
异地多活效果看起来很诱人,但异地多活是有成本的,包括开发成本和维护成本。需要实现异地多活的业务越多,方案越复杂,投入的设计开发时间越多;同时维护成本也会越高,需要更多的机器,需要更多的带宽。所以需要对业务进行拆分,识别出核心和关键业务,明确哪些业务是必须实现异地多活,哪些是可以不实现异地多活,哪些是不能实现异地多活的。比如“登录”必须实现异地多活、“注册”和“修改用户信息”不一定要实现异地多活。
4、冷备还是热备。冷备了以后,一直冷备,当真正出现问题,你还有勇气去切换到那个一直冷的机房吗?恐怕需要点勇气。
5、数据一致性问题。
解决方案:
(1)、守护进程同步。
(2)、客户端双写。
(3)、不去解决。不需要解决的前提是用户分区。分区后,从本质上说,其实是没有做到双活的。只是看起来一个业务确实被分到了多个机房而已。
6、读取问题。
这个相对来说要好解决一些,就是就近读取。