gpt4 book ai didi

python - 使用 IPC、Twisted 或 ZeroMQ 的架构方法?

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:04 27 4
gpt4 key购买 nike

我正在使用 twisted 从互联网连接的传感器获取消息,以便将其存储到数据库中。
我想检查这些消息而不干扰这些过程,因为我需要将每条消息与一些基值进行比较db,如果一些匹配我需要为此触发警报,并且这个想法不会阻止任何进程......

我的想法是创建一个新进程来检查和警报,但我需要在第一个进程存储消息后,它将消息发送到新进程以便在需要时进行检查和警报。
< br/>为此我需要 IPC,并且我在考虑使用 ZeroMQ,但也扭曲了使用 IPC 的方法,我认为如果我使用 ZeroMQ,但也许它会弄巧成拙...

您觉得我的方法怎么样?也许我完全错了?

欢迎任何建议..谢谢

PD:此进程将在专用服务器上运行,预期负载为 6000 msg/hour,每个 1Kb

最佳答案

所有这些方法都是可行的。我只能抽象地说,因为我不知道你的应用程序的精确轮廓。

如果您已经有一个可以正常工作的应用程序,但它的速度不足以处理您向其发送的消息数量,那么请确定瓶颈。您的滞留的两个可能原因是数据库访问或警报触发,因为其中任何一个都可能是同步 IO 操作。

你如何处理这个取决于你的工作量:

  1. 如果您的消息速率很高且恒定,那么您需要确保您的数据库能够处理此速率。如果您的数据库无法处理它,那么再多的非阻塞消息传递也无济于事!按此顺序:
    1. 尝试调整您的数据库。
    2. 尝试将您的数据库放在具有更多内存的更大计算机上。
    3. 尝试在多台机器上分割您的数据库以分配工作量。一旦您知道您的数据库可以处理消息速率,您就可以使用其他形式的并行处理其他瓶颈。
  2. 如果您的消息速率是突发的,那么您可以使用队列来处理突发。按此顺序:
    1. 在消息处理器集群之前放置一个负载平衡器。这个平衡器应该做的就是将传感器消息重新分发到不同的机器以进行检查和警报处理。这种方法的优点是您可能不需要更改现有应用程序,只需在更多机器上运行它即可。如果您的负载均衡器不需要等待响应,只需转发消息,这种方法效果最好。
    2. 如果您的通信需求更复杂或者是双向的,您可以使用消息总线(例如 ZeroMQ)作为消息处理器、警报发送器和数据库检查器之间的通信层。这个想法是通过总线进行非阻塞通信并让总线上的每个节点只做一件事来增加并行性。然后,您可以根据消息处理的每个阶段花费的时间来更改节点类型的比率。 (即使整个消息处理过程中的队列深度相等。)

关于python - 使用 IPC、Twisted 或 ZeroMQ 的架构方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14755187/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com