【发布时间】:2020-08-11 21:17:51
【问题描述】:
在kubernetes中使用redis作为sidecar的优缺点是什么?在每个app pod中添加redis容器时是否可以有持久化缓存?这会影响缓存的可用性和可扩展性吗?
【问题讨论】:
标签: caching kubernetes redis persistent-storage sidecar
在kubernetes中使用redis作为sidecar的优缺点是什么?在每个app pod中添加redis容器时是否可以有持久化缓存?这会影响缓存的可用性和可扩展性吗?
【问题讨论】:
标签: caching kubernetes redis persistent-storage sidecar
我很难想到将 Redis 作为 sidecar 运行有什么好处。我总是将它作为一个单独的部署(或如果启用持久性,则为有状态集)和单独的服务运行。
如果 Redis 在它自己的 pod 中,那么:
鉴于 Redis 的整体功能(主要是内存存储,有限的数据类型支持),简单地将这些缓存数据存储在应用程序中的单例对象中将或多或少等同于将 Redis 作为 sidecar 运行(缓存的一个副本每个 pod 的数据,删除 pod 时数据会丢失)。
【讨论】:
我同意 David Maze 的回答。在这个操作中,REDIS 是一个通常的长期缓存。所有 pod 都进入同一个缓存,因此它们可以重复使用它并且它具有一致的输出。
另一方面,我也在评估用于 redis 缓存的 sidecar 模型,简而言之,这完全取决于您对一致性的需求。
这个 sidecar redis 意味着每个微服务 pod 都有自己的 redis。所以当每个微服务进入数据库时,它会将对象存储在自己的redis中。每当读取相同的对象时,微服务都会转到 redis,而不是数据库。这样可以节省大量数据库读数,但会降低一致性。它为我节省了云数据库读数的美元。
在我的情况下,缓存将在 1 分钟左右过期,因此在我的情况下,两者之间缺乏一致性是可以的。
在可扩展性和可用性的情况下,我什至会说它可以提高它,因为您可以轻松地运行许多 pod。即使在 redis pod 上设置了最大内存,当达到限制(150mb?)时,您也可以轻松地重新启动它。
【讨论】: