【问题标题】:How to read in file paths into a queue that is in a Kubernetes cluster?如何将文件路径读入 Kubernetes 集群中的队列?
【发布时间】:2021-10-08 00:04:16
【问题描述】:

我想从持久卷中读取文件路径并将这些文件路径存储到各种持久队列中。这可能会通过包含在 pod 中的应用程序来完成。此持久卷将使用新文件不断更新。这意味着我需要使用新的文件路径不断更新队列。如果这个正在向队列添加项目的应用程序崩溃了怎么办? Kubernetes 将能够重新启动应用程序,但我不想添加已经在队列中的文件路径。至少我认为,在添加文件之前,该应用程序需要知道队列中存在什么。我一直在使用 RabbitMQ,但显然您无法使用此工具在队列中搜索特定项目。我能做些什么来解决这个问题?我在 Google Kubernetes Engine 上运行这个集群,所以这将在 Google Cloud Platform 上。

【问题讨论】:

  • 请提供您使用的 kubernetes 版本以及在哪里,是本地还是特定的云提供商?
  • 对不起。刚刚编辑了我的帖子以包含我正在使用 Google Kubernetes Engine。
  • @WytrzymałyWiktor 是的,他们做到了!对不起!
  • @AdrianoMatos,您能否将答案标记为已接受?

标签: kubernetes google-kubernetes-engine


【解决方案1】:

如果这个正在向队列添加项目的应用程序崩溃了怎么办? Kubernetes 将能够重新启动应用程序,但我不希望 添加已经在队列中的文件路径。该应用程序需要 在添加文件之前知道队列中存在什么

如果您正在寻找搜索选项,我也建议您使用 Redis 而不是 Queue 在 K8s 上运行 rabbitMQ 我在扩展和弹性方面有很好的经验但是有 HA helm chart of RabbitMQ 你可以使用它。

我建议检查 Redis 并将其用作后端来存储数据,如果您仍然希望创建队列,您可以使用 Bull:https://github.com/OptimalBits/bull

它使用 Redis 作为后台存储数据,您可以使用此库创建队列。

与在 Redis 中一样,您将每隔一秒左右进行一次连续转储...!丢失数据的可能性较小,但是在 RabbitMQ 中,您可以保持持久消息传递,并且它提供了确认和所有选项。

这是关于您要实现的实际需求。如果您的应用程序想要在列表中订购,那么您不能使用 Redis,在这种情况下 RabbitMQ 是最好的。

【讨论】:

    【解决方案2】:

    你听说过KubeMQ吗?有a KubeMQ community,你可以参考那里的指南和帮助。

    作为替代解决方案,您可以在使用 Redis 创建工作队列时找到有用的 guide on official Kubernetes documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-27
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      相关资源
      最近更新 更多