zoukankan      html  css  js  c++  java
  • 从冷备到多活,阿里毕玄谈数据中心的异地容灾

    原文链接:http://wx.shenchuang.com/article/2015-04-07/595023.html

    什么是异地多活?

         简单的理解就是在不同地方(一般指不同城市)建立多个数据中心,相对于冷备份而言,多活的特点在于,平时这些数据中心都是走流量的,会做业务支撑。阿里异地多活业务分为三个阶段,首先是单元化,然后是异地双活,最后是异地多活。为什么叫单元化?冷备份通常是备份全站,但是这样成本太高,而且由于平时不走流量,所以真正主站出问题时,进行站点迁移时不能保证冷备份站点一定能正常运行,或者把流量接管起来。单元化是异地多活基于成本考虑作出的决策,不会部署全站,通常只部署流量会爆发增长的部分(如跟买家交易相关的核心业务),在异地部署的只是一组业务,这组业务就称为单元。

    异地多活面临的挑战

         异地多活主要面临的挑战是延时,成本和一致性

    • 延时:异地项目最大的挑战是延时。跨城市一定会有延时的问题。在中国范围内,延时可能在一百毫秒以内。看起来单次好像没什么,但是像淘宝是个很大的分布式系统,一次页面的展现,背后的交互次数可能在一两百次。如果这一两百次全部是跨城市做的,整个响应时间会增加很多,所以延时带来的挑战非常大。怎样减少时延的大小,最简单最好的办法,就是让操作全部在同一机房内完成,那就不存在延时的挑战了。所以最关键的问题,就是怎样让所有操作在一个机房内完成。这就是单元化。
    • 成本:虽然冷备份成本很高,多活可以降低成本,但是大部分人还是更喜欢冷备,不喜欢多活,是因为多活的数据正确性很难保证。数据在多点同时写的时候,一定不能写错。因为数据故障跟业务故障还不一样,跟应用层故障不一样。如果应用出故障了,可能就是用户不能访问。但是如果数据写错了,对用户来说,就彻底乱了。而且这个故障是无法恢复的,因为无法确定到底那里写的才是对的。所以在所有的异地多活项目中,最重要的是保障某个点写进去的数据一定是正确的。这是最大的挑战,也是我们在设计整个方案中的第一原则。
    • 一致性:多个单元之间一定会有数据同步。一方面,每个单元都需要卖家的数据、商品的数据;另一方面,我们的单元不是全量业务,那一定会有业务需要这个单元,比如说买家在这个单元下了一笔定单,而其他业务有可能也是需要这笔数据,否则可能操作不了,所以需要同步该数据。所以怎样确保每个单元之间的商品、卖家的数据是一致的,然后买家数据中心和单元是一致的,这是非常关键的。
  • 相关阅读:
    PAT 甲级 1115 Counting Nodes in a BST (30 分)
    PAT 甲级 1114 Family Property (25 分)
    PAT 甲级 1114 Family Property (25 分)
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
  • 原文地址:https://www.cnblogs.com/hubavyn/p/4494931.html
Copyright © 2011-2022 走看看