【问题标题】:Connect between two AWS EC2 Instances to share data from one EC2 instance to other EC2 instance连接两个 AWS EC2 实例以将数据从一个 EC2 实例共享到另一个 EC2 实例
【发布时间】:2020-05-01 10:30:38
【问题描述】:

我有一个特定的功能需求,需要将所有等待消息从 SQS 累积到我的 apache camel 组件并在其中编写业务逻辑。

我正在使用两个带有单个负载均衡器的 ec2 实例。

假设如果我向队列发送 100 条消息。在 100 条消息中,x 条消息将发送到实例 A,并且 (100-x) 条消息将发送到实例 B。因此,我无法在单个实例中累积所有 100 条消息。

有什么办法,我可以将 SQS 消息发送到特定的 EC2 仅实例

我可以将消息从一个 EC2 发送到另一个 EC2 实例。注意:两者 EC2 实例在同一个端口上运行。

【问题讨论】:

  • 两个实例都在获取消息?如果只有一次实例应该读取它们,为什么第二个实例也会拉它们?
  • 另一个实例正在拉取 100 条消息中的其他消息。
  • 这不是一个很好的设计。你能放一个 lambda 来隔离队列吗?所有消息都会发送到 lambda,而 lambda 只会将消息发送到实例 1 的新队列,而其他消息只会发送到第二个实例的新队列。
  • 好的。那么你的意思是我们可以为实例 1 分配一个队列吗?
  • 如果可能的话,这值得考虑。在这种情况下,原始 SQS 队列被 lambda “拆分”为两个新的 SQS 队列。 lambda 会将消息转发到第一个或第二个新队列。这样每个实例都有自己的队列,只有它应该处理的消息。

标签: java amazon-web-services amazon-ec2 apache-camel amazon-sqs


【解决方案1】:

您可以使用 SNS-SQS 扇出方案将消息从一个来源传递到多个队列。这样每个实例都可以从自己的单独队列中提取消息。

我不确定整个架构,但这不是重点。

https://aws.amazon.com/getting-started/hands-on/send-fanout-event-notifications/

【讨论】:

  • 我刚刚检查了扇出场景。由于有两个 EC2 实例正在运行,我们如何将一个 SQS 队列与单个 EC2 实例连接,以便该 SQS 队列中的所有消息仅发送到单个 EC2 实例,请提供一些详细信息。
  • @Arindam 我不明白你的问题
  • 我的意思是应用程序在两个具有相同端口的 EC2 实例中运行,并且在两个实例中运行的两个消费者都从单个队列中消费。这里我们有一种方法可以仅将一个队列附加到一个实例。所以其他实例消费者不能同时从该队列消费。
  • @Arindam 这就是我对整个架构有疑问的​​原因。您需要能够在应用程序的基础上自定义 SQS URL 等参数,您不能使用相同的设置启动相同应用程序的相同副本并期望它们执行不同的任务。
  • 在我看来,我们可以在多个 EC2 实例中运行类似的应用程序。现在根据设计,我们正面临这个问题。现在试图找到一些方法来解决它。如果我们将单个服务作为微服务并在单独的单个 EC2 实例中运行,它将完美运行。但是,如果我们能够在不创建单独的 EC2 实例的情况下使其工作,我们正在尝试获得一些想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 2015-10-26
  • 1970-01-01
相关资源
最近更新 更多