如何保证两份数据的实时同步情况下提高IO性能?

目前同城灾备基本都是数据同步复制,但是从某种程度上来讲,提高了IO Lantency,而且随着双活数据中心时代的到来影响越来越大。那么有没有什么办法,在保证数据安全的情况下,即保证两份数据的实时同步、也能够一定程度上提高IO性能呢?...显示全部

目前同城灾备基本都是数据同步复制,但是从某种程度上来讲,提高了IO Lantency,而且随着双活数据中心时代的到来影响越来越大。那么有没有什么办法,在保证数据安全的情况下,即保证两份数据的实时同步、也能够一定程度上提高IO性能呢?

收起
参与34

查看其它 6 个回答haizdl的回答

haizdlhaizdl技术经理大连

传统数据库场合下,

我认为这个问题不能从根本上解决,而只能是缓解。这种模式下,如果想保证数据的一致性就必然要牺牲掉IO操作的性能。那么最好的方式就是找一个平衡点,一个从业务上可以接受的平衡点。

如果在保证数据一致性的前提下,想提高性能,那么就要解决数据热点争抢的问题。而这个问题在传统数据库模式下无法得到根本解决。但是可以缓解,也就是说减少热点。具体有以下几个考虑点:

第一、从业务层面本身,可以试图去做一些分离,比如业务类型的分离,读写的分离等。

第二、从数据库本身来讲,可以利用其分区技术,只要在数据库设计的时候,最大限度将数据做到可以分区,那么热点数据就会少。


分布式数据库场合下,

其实所谓分布式数据库,最大的优势在于它能够将数据进行切片,在空间上将其物理分离,但是从逻辑层面上,还是一份统一数据。而且其存储方式以及读写方式和传统数据库发生了质的改变。这种模式的数据库可以最大限度解决数据的热点争抢问题。

但是不是所有的业务特点都符合这一模式的数据库,比如对一个耦合性很高的业务操作,如果前一瞬间的写操作和后一瞬间的读操作分布于两个不同的数据中心,那么从客户角度就会感知到这一数据的不一致性,或者是后一个操作的慢。类似于这样的业务,那么还需要从应用导流方面做到前后的一致性。


综上所述,解决这一问题的途径,一方面在于各个层面的新技术支持。更重要的是需要业务、网络、应用、基础架构、数据库多方面的共同努力。需要根据业务的特点,仔细分析其读写特性,据此设计应用架构、网络架构、基础架构以及数据的模式等,设计出一套特殊的解决方案,而不是一个通用架构。这是是一个复杂的系统问题,解决方案只能有特例,而不存在放之四海皆准的通用解决方案。


个人愚见,偏颇之处,请多见谅。

银行 · 2015-11-19
浏览3915

回答者

haizdl
haizdl101634
技术经理大连
擅长领域: 灾备存储服务器

haizdl 最近回答过的问题

回答状态

  • 发布时间:2015-11-19
  • 关注会员:9 人
  • 回答浏览:3915
  • X社区推广