etcd 可以用作可靠的数据库替代品吗?由于它是分布式的,并以持久化方式存储键/值对,因此它将是一个很好的替代nosql数据库的选择。另外,它还有一个很棒的API。有人能解释一下为什么这不是一个事情吗?
etcd 可以用作可靠的数据库替代品吗?由于它是分布式的,并以持久化方式存储键/值对,因此它将是一个很好的替代nosql数据库的选择。另外,它还有一个很棒的API。有人能解释一下为什么这不是一个事情吗?
etcd
nosql数据库
目前有超过255个NoSQL数据库,可以广泛分类为基于键值、列、文档和图形的。将etcd视为键值存储,让我们看看可用的NoSQL键值数据存储。
Redis、memcached和memcacheDB是流行的键值存储。这些是通用的分布式内存缓存系统,通常用于通过在内存中缓存数据和对象来加速动态数据库驱动的网站。
为什么etcd不是替代方案
etcd无法存储在内存(ram)中,只能持久化到磁盘存储,而Redis可以在内存中缓存,也可以持久化到磁盘。
etcd没有各种数据类型。它只能用于存储Kubernetes对象。但是Redis和其他键值存储具有数据类型的灵活性。
etcd仅保证高可用性,但不提供快速查询和索引。所有NoSQL键值存储都是为了快速查询和搜索而构建的。
尽管很明显etcd不能作为替代NoSQL数据库的选择,但我认为上述解释将证明它不能成为合适的替代品。
来自ETCD.IO
网站:
etcd是一个强一致的分布式键值存储,提供了一种可靠的方式来存储需要被分布式系统或机群访问的数据。它在网络分区期间优雅地处理领导者选举,并能容忍机器故障,即使在领导节点中也是如此。
它使用http和json具有简单的界面。它不仅仅适用于Kubernetes。Kubernetes只是使用它的一个关键应用程序示例。
你是对的,它应该成为一种事物。一个好用的、可靠的数据存储,有一种易于使用的API并且可以使用raft协议告诉您何时发生变化。这对于特性切换和其他需要所有内容都知道的项目非常有用,比如将触发器放入SQL数据库中并让其向外部应用程序发送事件,或者使用非常糟糕的轮询。
因此,如果您正在编写类似于kubernetes用例的东西,则是完美的分布式应用程序的经过充分验证的存储。
如果您正在编写与kubernetes用例非常不同的东西,那么您正在与所有其他NoSQL数据库进行比较。但它与mongodb之类的东西非常不同,因此如果mongodb或类似软件无法满足您的需求,则可能更好。
其他示例用户
M3是由Uber创建的大型Prometheus指标平台,使用etcd存储规则和其他功能
一致性 Jepson进行了NOSQL数据库一致性的良好比较,请参见https://jepsen.io/analyses
ETCD在https://etcd.io/blog/jepsen-343-results/总结了他们的结果
etcd
与更全面的数据库相比的限制清单,看看它是否适合您: