【问题标题】:Fastest way of communication between multiple EC2 instances in pythonpython中多个EC2实例之间的最快通信方式
【发布时间】:2021-11-12 11:39:42
【问题描述】:

我正在寻找从一个 t2.nano 类型的多个 EC2 实例提交短字符串的绝对最快方法。示例:实例 1 上发生了一些事情,实例 2、3、4 应该(几乎)立即知道它。目标是

到目前为止我所看到的:

  • instance1 可以删除数据而其余实例可以检查数据的共享驱动器 -> 不可能,因为此实例类型不支持共享驱动器
  • Redis -> 我在本地对此进行了测试,实际上它非常慢,至少 XXms,有时 XXXms 用于一次读取和一次写入(仅适用于 测试)。

任何想法如何解决这个问题?

【问题讨论】:

  • 您是否考虑过使用某种消息队列并采用扇出架构?
  • 我考虑过通过套接字将数据从实例 1 推送到专用实例。 socket 并让其他实例检查该专用实例的数据。但是,不确定这种方法是否可行,我还没有测试它。

标签: python amazon-web-services performance networking amazon-ec2


【解决方案1】:

你可以试试 AWS EFS

多个计算实例,包括 Amazon EC2、Amazon ECS 和 AWS Lambda,可以同时访问一个 Amazon EFS 文件系统,为在多个计算实例或服务器上运行的工作负载和应用程序提供一个通用数据源。

https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html

【讨论】:

  • 非常感谢这个建议,这是我选择的。性能相当不错。
【解决方案2】:

考虑在您的客户端之间为Publish/Subscribe 使用 Twisted,客户端可以看到其他客户端发布的所有消息。

或者,考虑Autobahn,它在 Twisted 上构建抽象层,包括基于 WebSocket 的 pub/sub 和 WAMP。

【讨论】:

  • 非常感谢您的建议,我去了他们的聊天室并开始阅读文档。我确信这两种方法都是可能的,但它们非常复杂,而且似乎有一个陡峭的学习曲线。我最终只使用了 Amazon EFS,它速度很快,而且使用起来非常简单。
  • 出于兴趣,您的客户如何检测 EFS 上共享状态的变化,以及从项目更改到所有客户都注意到它的时间,您看到什么样的延迟?
猜你喜欢
  • 2014-03-18
  • 1970-01-01
  • 2011-06-16
  • 2013-09-09
  • 1970-01-01
  • 1970-01-01
  • 2017-10-13
  • 1970-01-01
  • 2021-02-03
相关资源
最近更新 更多