分布式数据访问与同步场景浅析(Simple Ideas on Distributed Data Manipulation
Things)
其实不想说这东西, 因为我也不知道正宗不正宗,完善不完善, 而且, 往简单了说,就2点, 简单的要死,
不过,我感觉我要真的不说,有些人可能也真的不知道我在说什么,而且今天有点儿小破事儿, 也促使我
就此
“嚼嚼舌头
”
。当然一家之言, 看官自己掂量。
随着应用数据规模的增长, 相应的数据库集群自然而然的浮出水面, 进而,
为了应用和管理位于这些数据库集群中的海量数据,你通常会提供一个分布式的数据访问层,
由这一层来屏蔽分布式环境下数据库集群的数据访问复杂度,此为一;另外,你要保证系统的高可用性, 或许会对数据库集群整体或者某些节点进行备份,
这些备份或许发生在在同一个数据中心,或许发生在位于不同地理区域内的数据中心,
因此,你或许会寻求数据复制技术来达此目的,此为二;另外,面对海量的数据,不同的应用有不同的使用角度,如何将同一份数据有效的分发给不同的应用来使用,也是需要你来考虑的问题。
要处理这些东西, 我们可以以数据存储为中心, 从前面和后面两个角度来解决。 Just like this:
1. FK Data Store From The Front
不用说大家都知道, 要做数据访问(不管他是不是分布式的), 指定得从数据存储前面进行。 分布式的数据访问解决方案大都如此,
要是我漏了啥,欢迎补充,呵呵。
尽管都是为了做分布式的数据访问, 大家的具体解决方案可能会稍有不同, 比如,
我们的DAL或许只是一个简单的jar随应用一同部署, 又或许我们的DAL是一个独立的服务, 比如MySQL Proxy, Ameoba等。
不过, DAL不单单就这点儿料儿, 我们还可以让它帮我们做数据同步与数据备份之类的事情, 打个比方,
在做数据访问的同时,我们可以将同一笔数据的更新分发给其它服务节点, 这包括(但不限于):
当然,
从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出来的东西完全正确。
总之, 有些路并非总是一路坦途,呵呵
应该说, 这两个角度的方案都不见得尽美, 但合适的场景选择合适的方案, 甚至结合起来使用, 这些方案完全可以帮助你达成目标。
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
分享到:
相关推荐
在技术实现上,分布式HLR的FP与BP之间的Rz接口,基于TCP/IP的LDAP协议提供数据访问,与具体数据结构无关,从而支持了数据标准化和开放性。BP与BP之间的Rs接口支持用户数据库间用户数据的同步功能,而HSSFP与CSCF、AS...
同时,系统还需要具备数据更新同步的能力,以及灾难恢复策略,以应对可能的数据丢失或系统故障。 其次,系统开发的目标主要包括资源共享和科学管理两个方面。资源共享是分布式数据库建设的核心特征,尤其是在档案...
当前,研究分布式路由算法QoS性能的重要目的是确保在多样的网络应用中,如非实时数据传送、实时图像传送、声音传送和视频会议等,能够寻找到一条既符合QoS条件又资源占用最小(即跳数最少)的路径。这一目标与多个...
本文将浅析SQL Server 2000的四种远程数据上传方法,以帮助读者根据不同的网络状况和数据量要求选择合适的上传策略。 1. 引言 信息技术的快速发展让企业通过Internet实现分布式办公和集中管理成为可能。例如,连锁...
然而,Redis的功能远不止于此,它还能够用于构建分布式消息队列,这对于处理高并发场景下的任务调度和数据传递至关重要。 首先,让我们来理解一下什么是分布式消息队列。在分布式系统中,消息队列作为一种中间件,...
此外,分布式事务、分布式锁、状态同步等技术则用于解决数据一致性问题。 在开发和运维分布式系统时,还需要考虑监控、调试、安全和性能调优等问题。例如,使用日志和监控工具跟踪系统状态,及时发现和解决问题;...
Zookeeper是一个开源的分布式协调服务,它主要用于解决分布式应用程序中的常见问题,如配置管理、命名服务、分布式同步等。与传统的进程内协调不同,Zookeeper针对的是分布式环境下的复杂场景。例如,在一个业务被...
ZooKeeper 是一个高度可靠的分布式协调开源服务器,它主要用于维护配置信息、命名、提供分布式同步以及集团服务。其设计目标是解决分布式环境中的单点问题,让开发人员可以专注于业务逻辑,而不是分布式系统的复杂性...
解决高并发问题可以使用分布式流量分发、同步锁和可重入锁等技术。 七、编译时异常和运行时异常 编译时异常是指在编译阶段检查的异常,而运行时异常是指在运行阶段出现的异常。编译时异常可以使用IDE集成开发环境...
总的来说,Ceph是一个复杂但强大的分布式存储解决方案,其设计和实现考虑了多种存储需求和场景,通过高度分布式和自治的架构来确保数据的安全性和可用性。对于想要理解和使用分布式存储的人来说,深入研究Ceph的架构...
分布式时钟可以根据不同的应用场景选择不同的时钟同步模式。 Device Description EtherCAT协议的设备描述可以实现设备的描述和配置。设备描述可以根据不同的应用场景选择不同的描述模式。 Configuration Tool ...
1. 数据加密:区块链技术可以为敏感数据提供加密存储和传输,从而有效防止数据泄露和未授权访问。 2. 电子通讯:在电子通讯领域,区块链可以保障通信双方身份的真实性,并且确保信息的完整性和不可否认性。 3. 防...
为了处理大量的日志数据并确保系统的稳定性和效率,常常引入分布式日志队列。在这个场景下,Redis作为一个高效的消息队列被广泛应用。 首先,我们需要理解为什么需要消息队列。在高并发的系统中,生产者(如应用...
区块链技术最初与金融领域密切相关,因为它的出现与比特币的诞生是同步的,其在金融行业的应用非常广泛,从支付、结算到资金转账和征信管理等。 区块链技术在金融行业的实践涵盖了以下几个方面: 1. 支付与结算:...
Apache ZooKeeper是一个高性能、可扩展的分布式协调服务,它为分布式应用提供了一套简单统一的服务,如配置维护、命名服务、分布式同步、组服务等。ZooKeeper的核心特点是其独特的数据模型和原子广播机制。 #### ...
总结来说,这份"JAVA高级编程资料"涵盖了JAVA开发中的关键知识点,包括多线程的管理与同步、网络编程的基础与优化、文件与流的使用技巧以及集合类的深入理解。这些内容对于任何想在JAVA开发领域深入学习或提升技能的...
### Hadoop中的数据库访问...通过上述介绍,我们可以看出Hadoop及其周边生态系统不仅提供了强大的数据处理能力,还涵盖了从数据访问到分布式应用的各种关键技术。这些技术相互配合,为现代大数据处理提供了坚实的基础。