虽然数据中心的建设规模越来越大,但不可能有控制地扩容,这取决于地点、环境、技术水平和公众数据中心的设施。等相关。很多时候,需要在多个地方建设很多数据中心,有时是因为应用需要,有时是因为资源限制,有时是因为数据备份,甚至现在还有很多新的概念:比如微数据中心,云数据中心等等,不再一味强调超大型超强数据中心的建设。俗话说,“三个皮匠顶一个诸葛亮”。未来,数据中心可以以量取胜,而不是以个体大小取胜。那么问题来了,如何协调多个数据中心之间的工作,达到“1+1大于2”的效果呢?这就涉及到数据中心之间的数据复制技术。必须学会用好复制技术,才能玩好Multipledatacenter。单主复制技术单主复制是指只有一个主数据中心具有数据写入权限来完成数据写入工作,同时将数据同步到其他数据中心,其他数据中心只提供只读服务。单主复制技术相当于将主数据中心的数据复制多份,放到其他数据中心供更多人访问,但这些数据只有读权限。对于那些交互式访问,这种复制技术将不起作用。为了不影响主数据中心的写入性能,同步数据一般都是异步复制的,所以由于及时不完全同步,当主数据中心发生故障时,其他数据中心的少量数据会丢失,并且多个数据中心只有一个主数据中心进行数据写入操作,导致工作效率低,写入的数据量小,也会影响复制到其他数据中心的数据量,最终影响效率整个数据中心系统。多主复制技术由于单主复制技术的数据写入效率太低,多主复制技术应运而生。Multi-master可以实现多个数据中心写数据,当然也支持读数据。多主复制技术需要解决写请求的顺序问题。不同的数据中心位于不同的位置,同一写操作在不同数据中心的效果和时间是不同的。这样很容易出现数据差异,导致数据写入错误。或者有延迟,这是数据中心应用无法容忍的。这样一般会选择地理位置相近的数据中心同时写入数据,时延可以得到保证。因此,这种多主复制技术一般部署在两个数据中心中,数据由距离很近的两个数据中心同时写入。同时,两个数据中心将数据复制到其他数据中心。其他数据中心支持数据读取访问。如果有两个以上的数据中心需要写数据,多主复制技术就不适用了。二阶段提交技术两阶段提交是一种在分布式系统上实现事务的协议。分布式系统的难点之一是如何保证架构下的多个节点在执行事务操作时保持一致性。两阶段提交技术首先假设有一个节点作为协调者,其他节点作为参与者,所有节点之间进行网络通信。同时,所有节点都使用预写日志,即使节点损坏,日志数据也不会消失。两阶段提交技术同样适用于多个数据中心之间的数据复制。在数据中心选出一个协调者,其他人作为参与者,按照第二阶段提交算法实现多个数据中心之间的数据复制。但是,二阶段提交技术也有很大的局限性。这种方案虽然没有单点错误,但是会因为额外的协调通信而增加时延。一次写操作的时间将达到200毫秒的水平,大大降低了吞吐量,增加了延迟,不适合对吞吐量和延迟要求高的数据中心。在协调数据中心的执行过程中,所有参与的节点都是事务阻塞的。当一个参与者失败时,协调器需要为每个参与者指定额外的超时机制。超时后,整个交易失败。没有容错机制。或者它可能会永远被阻止。如果协调器在发送commit消息后宕机,同时唯一收到消息的参与者宕机,那么即使协调器通过选举协议产生了新的协调器,这个事务的状态也是不确定的,没有人知道事务是否已经提交。显然,二阶段提交技术也存在问题。当然,还有第三阶段提交技术。各个参与节点的状态在***提交阶段之前是一致的。既然三段提交比二段好,那为什么老是提到二段提交技术呢?这是因为在第三阶段提交时会出现数据不一致的情况,极大地限制了该技术的应用。Paxos共识算法Paxos是LeslieLambert于1990年提出的一种基于消息的算法,被认为是最有效的共识算法,它解决了分布式系统中的数据一致性问题。.为了保证每个节点执行相同的命令序列,Paxos需要对每条指令执行Paxos,以保证每个节点看到的指令是一致的。如果Paxos部署在多个数据中心之间,可以实现数据的完全一致性。将Paxos算法部署到数据中心,可以实现所有跨数据中心的操作,尤其是协调数据中心之间的状态传递。如果你的应用程序为一个数据中心提供数据,当它需要将数据传输到另一个数据中心时,这些协调工作需要通过Paxos,而Paxos也会被用来管理memcache和离线处理。因为Paxo算法也有很多判断和交互过程,这直接导致数据处理延迟高,读写效率降低,但数据基本不会丢失,数据中心之间的数据也是完全一致的。
