像Git这样的“分布式版本控制系统”中“分布式”一词的含义是什么?

时间:2018-11-05 06:41:25

标签: git distributed-system

我已经阅读了问题Distributed Version Control System来找到答案,但是这个问题有所不同,并且是在将“分布式版本控制系统”与其他“分布式系统”进行比较时出现的。

当我看到“分布式”一词用其他术语表示时,例如“分布式数据库”,“分布式缓存”和“分布式计算”,那么我发现数据或计算实际上是通过网络分布的。此处的“分布式”一词的意思是“划分(相等并不总是)”。例如,在Hazelcast的“分布式缓存系统”中,密钥实际上是在提供的节点之间分配的。但是我在“分布式版本控制系统”中找不到这种相似性。

  1. 分布式意味着在“分布式版本控制系统”中划分了吗?
  2. 如果是,那么分布是什么(因为我在代码或提交历史记录中看不到该划分)?

1 个答案:

答案 0 :(得分:1)

对于版本控制系统,“分布式”只是“集中式”的反义词。集中式版本控制系统具有单个中央或主服务器。它可能有也可能没有其他服务器,但是如果 有其他服务器,并且如果这些服务器与指定的中央服务器不同,则这些服务器是错误的:中央服务器是真理的源头在分布式版本控制系统中,没有这样的服务器:至少从设计的角度来看,所有存储库都是对等的。当然,任何具有分布式设计的系统都可以像集中使用一样使用。通过将其中一个Git存储库指定为更新的主要存储库,可以以此方式使用 Git。

  

当我看到“分布式”一词用其他术语表示时,例如“分布式数据库”,“分布式缓存”和“分布式计算”,那么我发现数据或计算实际上是通过网络分布的。在此,“分布式”一词的意思是“划分(并非总是如此)”。例如,在Hazelcast的“分布式缓存系统”中,密钥实际上是在提供的节点之间分配的。但是我在“分布式版本控制系统”中找不到这种相似性。

具有复制功能的分布式数据库不必划分其存储。例如,etcd使用quorum system选举领导者;仲裁的所有成员都尝试保持其数据副本为最新。多处理器系统中的高速缓存行为通常也通常是分布式存储的一种形式,尽管通常紧密得多。参见例如Wikipedia entry for cache coherence。具有复制功能的分布式系统通常可以通过consistency models进行分类。

(快速搜索表明,Hazelcast具有处理节点故障的备份,因此它们也必须使用某种一致性模型。如果分布式系统中的某些数据子集仅存储在单个节点上,则这些数据将变得不可用如果节点发生故障,由于故障的可能性通常会随着节点数量的增加而增加,因此通常不可接受。)