zoukankan      html  css  js  c++  java
  • 一种分布式数据库同步方案 .

    转:http://blog.csdn.net/fangaoxin/article/details/5752526

    对于大型企业,业务分布在世界各地,为了改善当地业务服务能力,不得不在当地部署数据库以提高性能,而各个区域之间的数据交互或者同步,成为不可不面对的问题。其间要解决的技术问题主要有:
        1、同步数据的提取。从数据库里提取出需要同步的数据,这包括增、删、改三类动作对数据造成的改变。在数据表安装触发器是提取同步数据的简单有效的手段,而且触发器对应用层而言是透明的,应用程序感觉不到触发器的存在。
        2、同步数据的可靠传输。数据传输可以用队列来实现,例如有MSMQ、IBM MQ Series等。
        3、数据冲突与操作冲突的规避、发现和解决。数据冲突是指两个节点合并数据时,出现约束冲突的情况;而操作冲突是指两个节点同时发生对同一条记录发生操作,导致在双向同步时难以决定两个操作执行的先后顺序。

        触发器安装在各个要同步的数据表上,记录对表的增删改操作。所有操作共同记录在一张操作日志表上,以便保证操作发生的顺序。数据发送服务提取操作日志表上的数据,通过消息队列传输到远程服务器,远程服务器接收队列数据后,写入到远程数据表里,从而完成数据同步。
    在方案中,本地和远程节点在结构上是对等的,是发送方同时也是接收方,由以下几个部分组成:
    1、 数据库服务器:Oracle / SQL Server / DB2 等
    2、 操作日志:记录数据表的增删改操作
    3、 消息队列:消息队列服务,负责通讯,例如发送和接收消息
    4、 抽取发送服务:从操作日志表提取数据,写入消息队列
    5、 接收写入服务:从消息队列读取数据,写入到数据库
    6、 配置管理服务:配置同步任务、管理监控系统执行情况
    7、 配置管理工具:管理配置工具的客户端
    8、 适配器:消息队列适配器,减少队列依赖
    9、 异常信息库:存放一些无法处理的冲突和意外错误,供管理员处理

  • 相关阅读:
    Redis集群的搭建
    CAS部署在Windows上
    Loadrunner中Error-26612HTTP Status-Cod
    Coneroller执行时候的-26374及-26377错误
    Loadrunner 26377错误
    歌名也好笑
    loadrunner 中Error和failed transaction 的区别
    loadrunner 性能测试报error-27796的解决
    lr11.0负载测试 real-world schedule 与basic schedule的区别是什么
    LR中错误代号为27796的一个解决方法
  • 原文地址:https://www.cnblogs.com/wangle1001986/p/4108906.html
Copyright © 2011-2022 走看看