`
fujohnwang
  • 浏览: 156218 次
社区版块
存档分类
最新评论

分布式数据访问与同步场景浅析

    博客分类:
  • Tech
阅读更多

分布式数据访问与同步场景浅析(Simple Ideas on Distributed Data Manipulation Things)

王福强(Darren.Wang)


其实不想说这东西, 因为我也不知道正宗不正宗,完善不完善, 而且, 往简单了说,就2点, 简单的要死, 不过,我感觉我要真的不说,有些人可能也真的不知道我在说什么,而且今天有点儿小破事儿, 也促使我 就此 嚼嚼舌头 。当然一家之言, 看官自己掂量。

随着应用数据规模的增长, 相应的数据库集群自然而然的浮出水面, 进而, 为了应用和管理位于这些数据库集群中的海量数据,你通常会提供一个分布式的数据访问层, 由这一层来屏蔽分布式环境下数据库集群的数据访问复杂度,此为一;另外,你要保证系统的高可用性, 或许会对数据库集群整体或者某些节点进行备份, 这些备份或许发生在在同一个数据中心,或许发生在位于不同地理区域内的数据中心, 因此,你或许会寻求数据复制技术来达此目的,此为二;另外,面对海量的数据,不同的应用有不同的使用角度,如何将同一份数据有效的分发给不同的应用来使用,也是需要你来考虑的问题。

要处理这些东西, 我们可以以数据存储为中心, 从前面和后面两个角度来解决。 Just like this:

 

1. FK Data Store From The Front

不用说大家都知道, 要做数据访问(不管他是不是分布式的), 指定得从数据存储前面进行。 分布式的数据访问解决方案大都如此, 要是我漏了啥,欢迎补充,呵呵。

尽管都是为了做分布式的数据访问, 大家的具体解决方案可能会稍有不同, 比如, 我们的DAL或许只是一个简单的jar随应用一同部署, 又或许我们的DAL是一个独立的服务, 比如MySQL Proxy, Ameoba等。

不过, DAL不单单就这点儿料儿, 我们还可以让它帮我们做数据同步与数据备份之类的事情, 打个比方, 在做数据访问的同时,我们可以将同一笔数据的更新分发给其它服务节点, 这包括(但不限于):

  • 分发数据给search index builder, 以便实时的构建search index;

  • 分发数据给备份节点, 以便做数据冗余备份;

  • 分发数据给其它应用的数据存储,以便应用可以根据情况来进行相应的数据处理, 而不用对主要的数据服务造成访问压力;

 

当然, 从DAL这一层或者说数据存储前端处理我们之前提到的那些关注点,最好提前对整个系统的状况进行评估,以便DAL的设计可以在后期不会受到很大的冲击。而且,像避免DAL成为单点之类的HA关注点,也都是需要在设计DAL的时候要考虑的。

2. FK Data Store From The Backend

从数据存储服务的屁股后面当然没法做数据访问啦,但我们可以做除了数据访问之外的事情,比如我们在前面提到的一些功能,像实时构建search index啦, 数据的备份啦之类。

那么如何从数据存储服务的屁股后面扣东西那? 以RDBMS为例, 大部分vendor的产品都会包含事务日志的记录, 比如Oracle的redo log, MySQL的binlog等, 数据库会将数据的变更记录到他们相应的事务日志中,而我们也就可以通过监听相应事务日志的变化来获取数据的变化, 拿到这些数据的变化,你还用担心不知道怎么用它们吗?

不过这种方式有些时候也不见得行得通, 像MySQL这样开源的数据库,它的内部实现以及协议之类的资料都可以找到,这种方式显然行的同;而像Oracle这样的商业产品, 它的内部实现以及相关协议是不公开的, 要强行走这条路,你或许要花费很大的力气去hack它的内部协议,而且还不见得最终hack出来的东西完全正确。

总之, 有些路并非总是一路坦途,呵呵

3. The end

应该说, 这两个角度的方案都不见得尽美, 但合适的场景选择合适的方案, 甚至结合起来使用, 这些方案完全可以帮助你达成目标。

What do u think about what I said? bullshit(fucking easy)? or something that's useful to you? Your feedback will be welcome.

  • 大小: 30.6 KB
分享到:
评论
2 楼 fujohnwang 2010-09-07  
trydofor 写道
FK = f你ck
read the fcking source code

You know why I change to that abbr., haha
1 楼 trydofor 2010-09-07  
FK = f你ck
read the fcking source code

相关推荐

    面向用户数据融合的演进之路——分布式HLR应用浅析.pdf

    在技术实现上,分布式HLR的FP与BP之间的Rz接口,基于TCP/IP的LDAP协议提供数据访问,与具体数据结构无关,从而支持了数据标准化和开放性。BP与BP之间的Rs接口支持用户数据库间用户数据的同步功能,而HSSFP与CSCF、AS...

    浅谈分布式数据库管理应用系统的开发.pdf

    同时,系统还需要具备数据更新同步的能力,以及灾难恢复策略,以应对可能的数据丢失或系统故障。 其次,系统开发的目标主要包括资源共享和科学管理两个方面。资源共享是分布式数据库建设的核心特征,尤其是在档案...

    浅析分布式路由算法QOS性能研究与仿真.pdf

    当前,研究分布式路由算法QoS性能的重要目的是确保在多样的网络应用中,如非实时数据传送、实时图像传送、声音传送和视频会议等,能够寻找到一条既符合QoS条件又资源占用最小(即跳数最少)的路径。这一目标与多个...

    SQL server2000远程数据上传方式浅析.pdf

    本文将浅析SQL Server 2000的四种远程数据上传方法,以帮助读者根据不同的网络状况和数据量要求选择合适的上传策略。 1. 引言 信息技术的快速发展让企业通过Internet实现分布式办公和集中管理成为可能。例如,连锁...

    Redis实现分布式队列浅析

    然而,Redis的功能远不止于此,它还能够用于构建分布式消息队列,这对于处理高并发场景下的任务调度和数据传递至关重要。 首先,让我们来理解一下什么是分布式消息队列。在分布式系统中,消息队列作为一种中间件,...

    浅析分布式系统

    此外,分布式事务、分布式锁、状态同步等技术则用于解决数据一致性问题。 在开发和运维分布式系统时,还需要考虑监控、调试、安全和性能调优等问题。例如,使用日志和监控工具跟踪系统状态,及时发现和解决问题;...

    zookeeper浅析

    Zookeeper是一个开源的分布式协调服务,它主要用于解决分布式应用程序中的常见问题,如配置管理、命名服务、分布式同步等。与传统的进程内协调不同,Zookeeper针对的是分布式环境下的复杂场景。例如,在一个业务被...

    浅析ZooKeeper实现原理.pptx

    ZooKeeper 是一个高度可靠的分布式协调开源服务器,它主要用于维护配置信息、命名、提供分布式同步以及集团服务。其设计目标是解决分布式环境中的单点问题,让开发人员可以专注于业务逻辑,而不是分布式系统的复杂性...

    技术浅析.pdf 知识领域 Javase javaee Java技术浅析 技术关键词 JAVA语言 编程技术框架 原理

    解决高并发问题可以使用分布式流量分发、同步锁和可重入锁等技术。 七、编译时异常和运行时异常 编译时异常是指在编译阶段检查的异常,而运行时异常是指在运行阶段出现的异常。编译时异常可以使用IDE集成开发环境...

    浅析开源项目之Ceph1

    总的来说,Ceph是一个复杂但强大的分布式存储解决方案,其设计和实现考虑了多种存储需求和场景,通过高度分布式和自治的架构来确保数据的安全性和可用性。对于想要理解和使用分布式存储的人来说,深入研究Ceph的架构...

    EtherCAT Communication_TC.PDF

    分布式时钟可以根据不同的应用场景选择不同的时钟同步模式。 Device Description EtherCAT协议的设备描述可以实现设备的描述和配置。设备描述可以根据不同的应用场景选择不同的描述模式。 Configuration Tool ...

    区块链技术与网络空间安全浅析.pdf

    1. 数据加密:区块链技术可以为敏感数据提供加密存储和传输,从而有效防止数据泄露和未授权访问。 2. 电子通讯:在电子通讯领域,区块链可以保障通信双方身份的真实性,并且确保信息的完整性和不可否认性。 3. 防...

    浅析JavaWeb项目架构之Redis分布式日志队列

    为了处理大量的日志数据并确保系统的稳定性和效率,常常引入分布式日志队列。在这个场景下,Redis作为一个高效的消息队列被广泛应用。 首先,我们需要理解为什么需要消息队列。在高并发的系统中,生产者(如应用...

    浅析区块链技术在金融领域的实践与展望 (1).pdf

    区块链技术最初与金融领域密切相关,因为它的出现与比特币的诞生是同步的,其在金融行业的应用非常广泛,从支付、结算到资金转账和征信管理等。 区块链技术在金融行业的实践涵盖了以下几个方面: 1. 支付与结算:...

    《Hadoop开发者》第三期

    Apache ZooKeeper是一个高性能、可扩展的分布式协调服务,它为分布式应用提供了一套简单统一的服务,如配置维护、命名服务、分布式同步、组服务等。ZooKeeper的核心特点是其独特的数据模型和原子广播机制。 #### ...

    JAVA高级编程资料

    总结来说,这份"JAVA高级编程资料"涵盖了JAVA开发中的关键知识点,包括多线程的管理与同步、网络编程的基础与优化、文件与流的使用技巧以及集合类的深入理解。这些内容对于任何想在JAVA开发领域深入学习或提升技能的...

    hadoop开发者第三期

    ### Hadoop中的数据库访问...通过上述介绍,我们可以看出Hadoop及其周边生态系统不仅提供了强大的数据处理能力,还涵盖了从数据访问到分布式应用的各种关键技术。这些技术相互配合,为现代大数据处理提供了坚实的基础。

Global site tag (gtag.js) - Google Analytics