在分布式系统中 存在大量机器集群 外部请求到本系统,负载均衡到各个机器处理 如何保证多台机器处理数据的一致性 是重点需要考虑的问题。
案例:外部系统通过消息队列的方式同步外围数据到本系统 一次性可能发送多条数据,分摊到本系统多台机器处理
场景: 一个商品对应多条供应商数据,存入数据库后插入redis缓存 缓存的key值为商品,value值是供应商的JsonList string。外围过来两条数据,分别分摊到了两台机器处理,每个机器按照
开启数据库事务--->插入数据--->补偿缓存-->事务提交 逻辑处理
在并发的情况下可能出现 同时进入数据库事务 各自插入数据后 由于事务的隔离型 在未提交是无法看到另一个事务插入的数据的 所以各自查询插入缓存 最终缓存里面供应商只有一条记录
数据库模拟(mysql+dbvisual)
1. 建立实验表
create table cmmdty_supplier ( id int auto_increment primary key, cmmdty_code varchar(100),--商品编码 supplier_code varchar(100) --供应商编码 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. 打开dbvisual一个窗口 向表中插入商品0001的A供应商数据
set autocommit=0; --手工控制事务提交 insert into cmmdty_supplier(cmmdty_code,supplier_code) values ('0001','A');
再打开另一个dbvisual窗口 向表中插入商品0001的B供应商数据
set autocommit=0; insert into cmmdty_supplier(cmmdty_code,supplier_code) values ('0001','B');
在各自窗口查询表中数据 只能看到各自插入的数据,各自commit后方可看到。
解决方案1:
使用selelct for update 的方式锁住需要处理的数据 经过试验发现只能锁住已有的数据 即更新或者删除表数据,无法锁住新增的数据
解决方案2:
由于redis基于单线程 且setnx命令实现如果value不存在才能设置成功,因此使用redis的setnx功能实现分布锁的功能,具体实现流程
相关推荐
分布式架构是现代软件系统设计的核心概念,特别是在大数据处理、云计算以及高并发应用场景中。这份"分布式架构面试题汇总.zip"包含的资源很可能是为准备分布式系统相关面试的求职者提供的。接下来,我们将深入探讨...
分布式存储系统的设计和实现涉及的知识点非常广泛,需要考虑到系统架构、硬件资源、数据模型、事务管理、并发控制、故障恢复、数据分布、复制、容错、可扩展性、分布式协议、跨机房部署等众多方面。随着大数据和...
1. **分布式架构**:系统由多个独立的组件构成,每个组件都在自己的进程中运行,可能分布在不同的物理机器上。这些组件通过网络通信,实现数据共享和任务协同。 2. **一致性与复制**:为了保证数据的一致性,分布式...
分布式系统是一种将计算任务分布在多个物理机器上协同完成的计算模型,其优势在于能够应对大数据量的存储和处理需求,实现资源的高效利用。分布式键值系统是分布式系统中的一个特定类别,它专注于存储半结构化数据,...
1. **资源管理器**:在分布式系统中,资源管理器负责调度和分配分布在不同节点上的硬件资源,如CPU、内存和存储空间,确保各节点间的公平和高效利用。 2. **通信机制**:分布式系统中的节点间通信通常依赖于消息...
分布式文件系统是一种允许分布在不同物理位置的多台计算机进行协同工作并共享文件存储的系统。在铁路信息系统中的应用展示了这种技术如何能够满足特定行业的需求,特别是在处理大量数据和确保数据高可靠性方面。 ...
在传统数据库架构中,数据集中存储在单一服务器上,这不仅会导致数据访问速度慢,而且在系统出现故障时,会导致整体的服务不可用,同时硬件成本和维护成本也相应较高。随着数据量的持续增长,传统集中式数据库架构...
5. **分布式算法**:如选举算法(如Paxos、Raft)、分布式一致性算法(如Gossip协议、Chubby锁服务)等,都是分布式计算中的核心算法。 6. **容错与恢复**:通过备份、冗余和故障检测机制,分布式系统能应对硬件...
根据给定文件的内容,本知识点将专注于分布式系统中的Paxos算法,高可用性、一致性问题以及分布式锁服务系统的设计与实现。 1. 分布式系统与Paxos算法:分布式系统由多个分布在网络中的节点组成,它们通过通信和...
分布式开发是一种将应用程序的组件分布在多个网络连接的计算设备上,以提高性能、可扩展性和容错性的软件设计模式。在C#中进行分布式开发,我们可以利用.NET框架提供的丰富的类库和工具,如WCF(Windows ...
分布式爬虫系统是为了解决大规模数据抓取需求而设计的爬虫系统,它克服了传统单机爬虫系统效率低下的问题,通过分布在不同主机上的多个爬虫实例共同工作来提高数据抓取的效率和规模。在设计分布式爬虫系统时,URL...
1. 分布式架构:分布式架构是系统的基础,它允许数据和应用程序在多台机器上分布,从而提高系统的可用性和性能。这种架构可以实现负载均衡,当某一部分出现问题时,其他部分仍能继续工作。 2. 数据库管理:由于销售...
分布式系统的核心是将任务分解并分布到多个节点上,以便于协同工作。在温控领域,这意味着每个温控设备都可以独立地监控和调节其负责区域的温度,并通过网络与其他设备进行通信,以达到整体的温度均衡。这种架构的...
分布式文件系统在实践中有着广泛的应用,以下是一些典型的分布式文件系统案例: - **GPFS**: IBM开发的高性能并行文件系统,常用于大型集群环境中。 - **Lustre**: 广泛应用于高性能计算领域的并行文件系统。 - **...
在分布式架构中,确保数据一致性是一项至关重要的任务。...学习资料如本文档“分布式架构下如何保证数据的一致性”会深入探讨这些概念和技术,帮助开发者更好地理解和应对分布式系统中的数据一致性挑战。
总的来说,GFS是为大规模、高性能的数据处理而设计的分布式文件系统,其核心在于通过简单的架构和精细的管理策略,实现对硬件故障的容忍、高效的文件操作和大数据的可靠存储。它在Google的众多服务中起到了关键作用...
在分布式系统中,Java的特性如多线程、网络通信和内存管理等都非常适合处理并发请求和实现分布式通信。 分布式数据库在旅行预订系统中的应用主要体现在以下几个方面: 1. 数据一致性:为了确保用户在不同节点上...
分布式系统是计算机科学中的一个重要领域,它涉及到多个独立计算节点通过网络进行协同工作,以解决单个计算机无法处理的大规模问题。在电子科技大学的2020年期末考试中,这个主题显然成为了考察的重点。这份回忆版...