websocket在同一AWS可用区中的两个附近服务器之间是否具有合适的最低延迟和强大的实时通信协议?

问题描述 投票:2回答:1

我知道的适用技术:

  • Websockets
  • Zeromq

如果其他人更适合我的问题,请提出建议。

对于此用例,我只有两台机器,即发送方和接收方,请注意,它们彼此相邻,固定在一起,因为它们将位于AWS的同一可用区中。可能与跨大范围互联网传递消息有关的答案不一定适用。还要注意,接收方服务器不会将它们作为任务排队,它只是通过WebSocket将选择的消息源转发给网站访问者。发送服务器会进行大量预处理并整理邮件。

解决方案需要:

  1. 吞吐量非常高。目前,发送服务器每秒处理大约10,000条消息(用Rust编写),不费吹灰之力。突发流量可能会将其增加到20,000或更多。我知道zeromq可以处理这个问题。

  2. 稳健。通讯管道每年365/24/7每天开放。在将计算机群集设置为故障转移方面,我的预算非常有限,因此我必须尽力做到两台计算机的最佳状态。

  3. 不需要消息持久性,也不必担心,接收服务器不需要存储任何东西,它只需要所有数据。发送方服务器异步将5秒钟的持久数据摘要写入数据库和缓存。

  4. 消息必须保留它们的发送顺序。

  5. 低延迟。这[,因为数据需要尽可能地实时。

一个websocket似乎可以完成1到4个工作。我不知道websocket对于每周7天,每天24小时的通信有多么强大。我观察到Websocket连接通常会掉线(当然,我会编写重新连接代码,如果需要的话,也可以编写心跳监视程序,但这仍然让我担心)。我也想知道websocket的高吞吐量是否过高。

我在这种问题上的经验为零,但是我有一个很好的websocket库,可以轻松使用。我排除了Apache Kafka,因为获得高吞吐量似乎很昂贵,使用dev ops(zookeeper)进行管理比较棘手,并且由于我不需要持久性并且仅是两台机器之间的通信而显得过于刻板。所以我希望有一个简单的解决方案。

amazon-web-services websocket zeromq messaging lan
1个回答
0
投票
听起来您似乎在解释EC2

cluster展示位置组提供了什么:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-placementgroup.html编辑:您应该能够使用2台机器创建展示位置组,以支付您有限的预算。根据您的预算,使用更大的实例还将支持更高的网络吞吐量。

尽管第4点看起来像SQS FIFO将支持它,尽管事实是SQS FIFO队列每秒最多只能支持3,000条消息。

像Kinesis Data Streams这样的托管流解决方案肯定会在规模上涵盖您的用例,比原始Web套接字要好得多。使用Kinesis Client Libraries,您可以编写您的使用者以从流中读取。

AWS还具有Managed Kafka服务,以排除开销和对必要组件的管理,例如Apache ZK:https://aws.amazon.com/msk/

© www.soinside.com 2019 - 2024. All rights reserved.