我们正在组装一个系统,该系统通过模数转换器卡读取约 32 个电压信号,对它们进行一些初步处理,并将结果(仍分为 32 个 channel )作为 UDP 数据包传递到网络,在那里它们被另一台计算机拾取并以各种方式 (a) 显示,(b) 进一步处理,(c) 搜索改变采集系统状态的标准,或 (d) AC 的某种组合。同时,GUI 进程在执行后面这些进程的计算机(vis 计算机)上运行,它通过 UDP 分组命令消息更改数据生成计算机和 vis 计算机的多个进程中的状态。
我是网络编程的新手,正在努力选择网络拓扑。对于不需要灵活传递数据、命令和命令确认的相对较小的应用程序,是否有任何关于网络拓扑的启发式方法(或书籍章节、论文)?
系统详情:
我们正在考虑的五种可能性:
如果您已经尝试在少数机器上的多个进程之间传递数据,并且对哪些策略是稳健的有一些智慧或经验法则,我将非常感谢您的建议! (欢迎在图片中要求澄清)
最佳答案
我没有足够的代表将这个问题移到programmers.stackexhange.com,所以我会在这里回答。
首先,我将向您抛出相当多的技术,每个技术您都需要看一看。
既然我已经向您介绍了一些技术,我将解释我将要做什么。
创建一个允许您创建 N 个连接器的系统。这些连接器可以处理图中的数据/命令 N,其中 N 是特定信号。意思是如果你有 32 个信号,你可以用 32 个连接器设置你的系统来“连接”。这些连接器可以处理双向通信。因此您的接收/命令问题。单个连接器将其数据发布到特定于该信号的主题的 Kafka 之类的东西。
使用发布/订阅系统。基本上发生的事情是连接器将其结果发布到指定的主题。这个话题是你选择的。然后处理器,UI、业务逻辑等监听特定主题。这些都是任意的,您可以根据需要进行设置。
============ ============= ===== ============ =============
= Signal 1= < --- > = Connector = < -- = K = --> = "signal 1" ---> = Processor =
============ ============= = a = ============ =============
= f =
============ ============= = k = ============ =============
= Signal 2= < --- > = Connector = < -- = a = --> = "signal 2" ---> = Processor =
============ ============= = = ============ | =============
= = |
============ ============= = = ============ |
= Signal 3= < --- > = Connector = < -- = = --> = "signal 3" ---
============ ============= ===== ============
在此示例中,第一个连接器将其结果“发布”到主题“信号 1”,其中第一个处理器正在监听该主题。发送到该主题的任何数据都会发送到第一个处理器。第二个处理器正在监听“信号 2”和“信号 3”数据。这表示类似于同时检索不同信号的用户界面。
要记住的一件事是,这可能发生在您选择的任何主题中。如果您认为重要,“处理器”可以收听所有主题。
关于c++ - 这个小型数据/命令广播应用程序的建议网络拓扑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7128843/