我很难抓住etcd(在CoreOS中)真正做到的,因为所有那些“分布式键值存储”对我来说似乎是无形的。进一步阅读到etcd,它深入研究了Raft一致性算法,然后理解它变得非常混乱。
如果集群系统没有etcd ,我们会说会发生什么?
感谢您的时间和精力!
答案 0 :(得分:10)
作为没有CoreOS使用etcd构建分布式系统的人,我想我可以对此有所了解。
etcd的想法是提供一些非常基本的原语,适用于构建各种分布式系统。原因是分布式系统从根本上来说很难。大多数程序员并没有真正解决这些困难,因为有更多机会了解单系统程序;自从云计算使分布式系统廉价构建和试验以来,这在过去的5年里才开始发生变化。即便如此,there's a lot to learn。
分布式系统中最大的问题之一是共识。换句话说,保证系统中的所有节点都同意特定值。现在,如果硬件和网络100%可靠,那么这将很容易,但当然这是不可能的。设计一种算法来为共识提供一些有意义的保证是一个非常困难的问题,也是许多聪明人投入大量时间的问题。 Paxos是以前最先进的算法,但很难理解。 Raft试图提供类似的保证,但对普通程序员来说更容易接近。然而,正如您所发现的那样,理解它的操作细节和应用程序是非常重要的。
就CoreOS中特别使用的etcd而言,我无法告诉您。但我可以肯定地说,任何需要由集群中所有机器共享和同意的数据都应存储在etcd中。相反,节点(或节点子集)可以自己处理的任何内容都应该强调不存储在etcd中(因为它会产生在所有节点上进行通信和存储的开销)。
使用etcd,可以让大量相同的机器自动协调,选出领导者,并保证其键值存储中的数据历史相同,以便:
x
,任何数量的计算机> x/2
都可以继续运行并接受写入,即使其他计算机死亡或丢失连接也是如此。键值存储本身非常简单,没有什么特别有趣的,但是这些属性允许构建能够抵抗单个组件故障的分布式系统,并且可以提供合理的正确性保证。
答案 1 :(得分:2)
etcd是集群范围协调和状态管理的可靠系统。它建立在Raft之上。
Raft为etcd提供了跨分布式etcd节点系统的事件的总排序。这有许多优点和缺点:
优点包括:
etcd的用户可以构建分布式系统,而无需ad-hoc,buggy,自行开发的解决方案
例如:您将使用etcd协调新Postgres主服务器的自动选举,以便群集中只剩下一个主服务器。
缺点包括: