多活与灾备问题
讲完数据层的扩展技术,最后来谈一下多机房部署和异地容灾的话题。QingCloud从北京3区机房开始,通过自营的骨干网光纤和多路环网技术,使得当机房出现网络故障时对用户无感知,在基础设施上保障了高可用性。但是用户的业务如果能够多机房部署,可以在分摊访问负载的同时加速区域访问,比如加速中国南北方的用户或者海外用户的访问。
如图5所示,若是有三个机房,中间是QingCloud北京3区机房,负责主营业务。左边是QingCloud亚太1区机房,主要服务亚太和海外的客户。这两个机房都使用了QingCloud私有网络(VPC)部署,通过GRE或IPsec加密隧道在网络上的互联互通。右边是你办公室的物理机房,IT人员可以在这个环境下进行开发和办公。
图5
在业务上实现异地多活时,通常从易到难有三个阶段。
第一,在备用机房搭建反向代理,用户请求到备用机房,请求直接被转向主机房,如果两机房有专线互联或延时很小,这样部署最为简单。
第二,两个机房同时部署业务服务器和缓存,由于大部分数据请求可以从缓存中读取,不用进行跨机房访问。但当缓存失效时,依然要从主机房的数据库去查询。
第三,两机房同时部署全套系统,包括接入层、业务层和数据层。数据层依靠数据库双主或主从技术进行跨机房同步。
总结一下。没有一个所谓经典或完美的架构,只有最适合企业业务的架构,本文主要讲述在最通用的业务场景下,系统在接入层、业务层和数据层的常用扩展方法。企业后端架构的演进过程是一个漫长而艰巨的过程,不可能一蹴而就设计出一个万般周全的系统,但如果设计之初能更多着眼于未来,就可以为进一步优化留出了余地。
王煜,青云QingCloud系统研发工程师,原街旁团队创始成员,基础架构负责人,现负责QingStor对象存储服务的设计与研发。对Linux操作系统、计算机网络、分布式系统、云计算等领域有较深入的研究。九零前,文青程序员,代码诗人,北京土著。通信等行业成功实施并支持多个上百节点Hadoop集群。