文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

多机房该如何部署?数据如何同步?

2024-12-01 14:51

关注

​Labs 导读

服务的可用性就是网络的平均无故障率。对于一个平台来讲,这是非常重要的指标之一。当前主要使用的可用率为4个9,即99.99%。也意味着每年最多只能有52分钟的故障时间。

Part 01  双活、多活解决的问题

虽然通过负载均衡等方式,可以应对单节点故障。但当出现小概率不可抗力的时候(自然灾害、停电、挖断光缆等情况),整个机房不可用的情况依然会出现。近年来,支付宝、微博、B站等均出现过机房级的故障,因此一个或者多个便于快速切换的机房就成了backup(备用)。同时,多活的一个次要条件就是可以部署在不同的位置,通过物理上的距离减少,来提升响应速度。分机房部署也可以大大地减少单机房资源的需求。

Part 02  同城备份还是同城双活?

同城进行部署服务的最大好处就是机房空间距离小,通过专线进行连接,机房间时延可以稳定到3ms以内,因此服务可以跨机房访问数据。

于是,最简单的双活方式如下:我们可以称之为同城备份,数据库放在机房A,并定期将数据库内数据同步至机房B。好处是实现简单、方便横向的服务拓展。如果发生机房级别的灾害,可以尽快从机房B将数据恢复。但是问题也出在这里:机房B并没有数据库,无法完全接替机房A的作用。

图一 同城备份

为了解决上述的问题,可以在机房B内放置数据库从库,并将机房A的数据实时同步到机房B:即A机房中的数据库为主库,机房B中为从库。若发生机房A故障,则可以将流量切到B机房,并停止实时同步,把机房B中的数据库置为主库。

图二 同城同步

该机房的主要问题是需要人工干预较多。除了数据库和DNS的切换之外,还需要修改大量数据库的配置。总体上,该架构可以以较快时间恢复服务,对于同城的多机房,已经足够。

Part 03  异地多活的新问题

异地多活不同于同城的情况,首先就是机房间哪怕使用专线,延时的问题也无法解决(想要异地访问数据库几乎不可能)。

首先我们想到的是,有没有一种方法可以尽量避免信息的同步?那就是下图的方式:通过地理、用户哈希、设备id哈希等方式,将请求在DNS层分流到多个机房。每个机房处理固定用户请求,从而可以将两个机房间数据同步减少到最少,也将每个机房的数据量减少到最少的量。但是数据同步只能靠业务进行同步,而不是数据库工具进行同步。

分治的方式看起来很理想,但实际上也会有其他的问题。比如,使用地理方式进行划分(即使用ip进行划分)的方案,用户位置发生变化导致请求到其他机房,如何进行数据同步?使用用户id哈希进行分片的方案,需要进行横向扩容时,旧数据如何处理?发生故障时,其他机房如何短时间内同步其他分片数据等等。

总之,分片方式并非是完美的解决方法。

图三 异地双活

Part 04  异地同步数据

到这里,我们已经发现了,多个机房间的数据一定是需要同步的,这是异地多机房的必由之路。

数据的同步方式可以通过业务方式,也可以通过数据库中间件进行。下图中的方式就是机房间进行同步,这种方式确实增大了业务的复杂性,并且会随着机房的拓展,机房间同步的情况会更加复杂。

图四 网状同步

在上述的架构中,如果设置一个中心的数据节点,所有机房通过中心数据节点来进行同步,数据流就会从“网状”变成“星状”。大大减少同步工作和复杂性。但是这一方案,实质上是与我们追求的分布式部署理念的一种背离。

图五 网状星状同步

Part 05  分布式数据库,是银弹吗?

不仅是在多机房部署的情况下,随着数据量的急剧增大,针对Mysql的分库分表,开发人员对JDBC Proxy还有DB Proxy进行了深入的实战。大家越来越发现,承认数据库分片是很有必要的。在该基础上,许多分布式数据库如cockroach、TiDB随之产生。分布式数据库天生支持多集群、多机房的部署,这与异地多活的需求不谋而合。

通过分布式数据库,既可以实现数据的横向拓展,也可以减少业务上数据同步的复杂性,几乎可以说是一举多得。

此外,数据库对于资源的需求也很高,一个三集群的TiDB,至少需要9台物理机,10个万兆网卡以及之间的3条专线。

另外的缺点是改架构对于分布式数据库集群间的延时,相对苛刻,这也阻碍了改架构在较广域的地区无限扩容。

图六 分布书数据库多机房

Part 06  总结

多机房部署相对于单个机房,其难度、开发、资源开销都是级数上升。因此具体的架构需要根据实际需求来选择。本文旨在介绍多机房部署的几种类型,开拓大家的思路。实际的多机房部署形式可能也与上述的都不一样,但是思路大体是相同的。​

来源:移动Labs内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯