Caching kubernetes中的Redis-sidecar还是客户机-服务器模式?

Caching kubernetes中的Redis-sidecar还是客户机-服务器模式?,caching,kubernetes,redis,persistent-storage,sidecar,Caching,Kubernetes,Redis,Persistent Storage,Sidecar,使用redis作为kubernetes中的侧车有什么优点和缺点?在每个应用程序pod中添加redis容器时,是否可能有持久性缓存?这会影响缓存的可用性和可伸缩性吗?我很难想象将Redis作为一个辅助工具运行有什么好处。我总是将它作为一个单独的部署(如果启用了持久性,则为有状态集)和一个单独的服务来运行 如果Redis在自己的pod中,则: 如果应用程序有多个副本,它们将共享同一个Redis 当您重新部署应用程序时,它不会终止并重新启动Redis 若为Redis启用了持久性,那个么就不需要为应用

使用redis作为kubernetes中的侧车有什么优点和缺点?在每个应用程序pod中添加redis容器时,是否可能有持久性缓存?这会影响缓存的可用性和可伸缩性吗?

我很难想象将Redis作为一个辅助工具运行有什么好处。我总是将它作为一个单独的部署(如果启用了持久性,则为有状态集)和一个单独的服务来运行

如果Redis在自己的pod中,则:

  • 如果应用程序有多个副本,它们将共享同一个Redis
  • 当您重新部署应用程序时,它不会终止并重新启动Redis
  • 若为Redis启用了持久性,那个么就不需要为应用程序吊舱配置持久性存储

考虑到Redis的整体功能(主要是内存存储,有限的数据类型支持),在应用程序中简单地将此缓存数据存储在单例对象中或多或少相当于将Redis作为一个侧车运行(每个pod一个缓存数据副本,删除pod时数据丢失).

我很难想象将Redis作为一个侧车运行有什么好处。我总是将它作为一个单独的部署(如果启用了持久性,则为有状态集)和一个单独的服务来运行

如果Redis在自己的pod中,则:

  • 如果应用程序有多个副本,它们将共享同一个Redis
  • 当您重新部署应用程序时,它不会终止并重新启动Redis
  • 若为Redis启用了持久性,那个么就不需要为应用程序吊舱配置持久性存储

考虑到Redis的整体功能(主要是内存存储,有限的数据类型支持),在应用程序中简单地将此缓存数据存储在单例对象中或多或少相当于将Redis作为一个侧车运行(每个吊舱一份缓存数据,删除吊舱时数据丢失)。

我同意David Maze的回答。在这个op中,REDIS是一个长期缓存,这是常见的。所有的pod都进入同一个缓存,因此它们可以重用它,并且它有一个一致的输出

另一方面,我也在评估redis缓存的sidecar模型,简而言之,这完全取决于您对一致性的需求

这个侧车redis意味着每个微服务吊舱都有自己的redis。因此,当每个微服务进入数据库时,它会将对象存储在自己的redis中。每当读取同一对象时,微服务都会转到redis,而不是数据库。这会节省大量数据库读数,但会影响一致性。它还为我节省了$$的云数据库读数

在我的例子中,缓存将在1分钟左右过期,因此在我的例子中,两者之间缺乏一致性是可以的


在可伸缩性和可用性方面,我甚至可以说它可以提高可伸缩性和可用性,因为您可以轻松地运行许多pod。即使在redis pod上放置一个最大内存,当达到限制(150mb?)时,您也可以轻松地重新启动它。

我同意David Maze的答案。在这个op中,REDIS是一个长期缓存,这是常见的。所有的pod都进入同一个缓存,因此它们可以重用它,并且它有一个一致的输出

另一方面,我也在评估redis缓存的sidecar模型,简而言之,这完全取决于您对一致性的需求

这个侧车redis意味着每个微服务吊舱都有自己的redis。因此,当每个微服务进入数据库时,它会将对象存储在自己的redis中。每当读取同一对象时,微服务都会转到redis,而不是数据库。这会节省大量数据库读数,但会影响一致性。它还为我节省了$$的云数据库读数

在我的例子中,缓存将在1分钟左右过期,因此在我的例子中,两者之间缺乏一致性是可以的


在可伸缩性和可用性方面,我甚至可以说它可以提高可伸缩性和可用性,因为您可以轻松地运行许多pod。即使在redis pod上放置一个最大内存,当达到限制(150mb?)时,您也可以轻松地重新启动它。

谢谢。但是,我们可以提到由所有redis sidecar容器共享的持久性存储吗?这样,当没有调用外部redis pod时,数据库调用的延迟会减少吗?如果您进行测量,这是应用程序的一个重要问题,您可以重新访问它。复制和数据生存期问题可能比每次调用节省一小部分秒更重要。Kubernetes中的大多数东西都是跨网络的,这通常不是什么大问题。谢谢..但是我们可以提到所有redis sidecar容器共享的持久存储吗?这样,当没有调用外部redis pod时,数据库调用的延迟会减少吗?如果你测量一下,这是应用程序的一个重要问题,您可以重新访问它。复制和数据生存期问题可能比每次调用节省一小部分秒更重要。Kubernetes的大多数东西都是跨网络的,这通常不是什么大问题。