为什么要使用etcd?我可以使用redis来实现配置管理/服务发现等吗?

eri*_*983 5 redis etcd

学了几个小时的etcd,突然想到一个问题。我发现redis完全可以覆盖etcd拥有的功能,比如key/value CRUD && watch,redis使用起来非常简单。为什么人们选择 etcd 而不是 redis?为什么?我用谷歌搜索了一些帖子,但没有帖子告诉我原因。

谢谢!

wil*_*des 5

Redis 将数据存储在内存中,这使得它的性能非常高,但不太耐用。如果redis服务器挂掉了,很容易丢失数据。Etcd 将数据存储在磁盘上的文件中,并在解析之前跨多个节点执行 fsync 以保证一致性,这使得它非常耐用但性能不佳。

对于 kubernetes 来说这是一个很好的权衡,它使用 etcd 来存储集群状态和配置,而不是用户数据。对于您可能在应用程序中使用 redis 的用户会话数据之类的数据来说,这不是一个好的权衡,因为您需要极快的响应时间,并且可以容忍一些数据丢失或不一致。

  • 鉴于 redis 可以配置为记录每次写入磁盘并在重新启动时重播日志(https://redis.io/docs/management/persistence/),这个答案是否有效?这种日志模式解决了持久性问题,但没有解决一致性问题。在我看来,最初的问题仍然没有得到解答……为什么人们使用 etcd 而不是 redis?我面临同样的主题,并且我对这两种解决方案都不熟悉。 (3认同)