独立设备上最干净的程序间通信方法
Cleanest method of inter-program communication on separate devices
我需要确定分布在多台机器上的多个程序之间的通信方法。数据本身相当简单,由带有一些元数据描述符的可变长度向量组成。
每个程序“类型”都会向其他 1 个程序类型发送数据,并希望看到它的回复。
给定程序的连接数随时间变化,可以随时添加或删除程序。
程序可能分布在多个处理器上,这些处理器可能使用不同的操作系统,也可能是微处理器。
我以前没有真正解决过这样的相互通信难题,我不确定最干净的方法是什么。我听说 ROS 可能有用,但它可能不适合 Windows 环境并且学习曲线陡峭。我可以想象在节点之间创建一个数据库,充当一种黑板,但这感觉效率可能非常低。如果使用套接字可以解决效率问题,那么如何管理/维护连接?
我目前的主要开发环境是 Julia,但我可以将数据移植到 C++ 或 Python 而不会有太多不适。
我对想法和学习新事物持开放态度,但我不知道该走哪条路。任何智慧的金块将不胜感激。
根据评论中的要求,这里有一些附加信息:
- 数据:数据是浮点数的向量,其大小可以在 1 到 1000 的值之间变化(可能更多取决于项目的其他方面,但我将其限制为原型制作目的).元数据采用 json 格式,提供数组总长度和一些标识符(均为整数)等信息。
- 可靠性:我可以处理一些遗漏的消息。不过,我需要按发送顺序排列的数据。因此,如果一个数据包在更新的数据包之后到达,它将被忽略。 (如果您指的是数据完整性,则数据在传输过程中不得损坏)。
- 延迟:尽可能少,否则程序可能会开始引入错误。话虽这么说,出于原型设计的目的,我可以坚持平均 10 毫秒和不规则的 100 毫秒。不过,我非常想保留下来。
- 标准 IP 设施:您可以假设所有设备都有这些,是的。
也许看看一些成熟的东西(因此应该能够连接到你最终使用的任何一个 language/s)比如 Redis 或 RabbitMQ 是明智的,因为你需要能够通过网络与许多不同的设备进行通信。无论哪种方式,都建议使用某种形式的中央集线器来处理其他设备之间的通信。
我需要确定分布在多台机器上的多个程序之间的通信方法。数据本身相当简单,由带有一些元数据描述符的可变长度向量组成。
每个程序“类型”都会向其他 1 个程序类型发送数据,并希望看到它的回复。
给定程序的连接数随时间变化,可以随时添加或删除程序。
程序可能分布在多个处理器上,这些处理器可能使用不同的操作系统,也可能是微处理器。
我以前没有真正解决过这样的相互通信难题,我不确定最干净的方法是什么。我听说 ROS 可能有用,但它可能不适合 Windows 环境并且学习曲线陡峭。我可以想象在节点之间创建一个数据库,充当一种黑板,但这感觉效率可能非常低。如果使用套接字可以解决效率问题,那么如何管理/维护连接?
我目前的主要开发环境是 Julia,但我可以将数据移植到 C++ 或 Python 而不会有太多不适。
我对想法和学习新事物持开放态度,但我不知道该走哪条路。任何智慧的金块将不胜感激。
根据评论中的要求,这里有一些附加信息:
- 数据:数据是浮点数的向量,其大小可以在 1 到 1000 的值之间变化(可能更多取决于项目的其他方面,但我将其限制为原型制作目的).元数据采用 json 格式,提供数组总长度和一些标识符(均为整数)等信息。
- 可靠性:我可以处理一些遗漏的消息。不过,我需要按发送顺序排列的数据。因此,如果一个数据包在更新的数据包之后到达,它将被忽略。 (如果您指的是数据完整性,则数据在传输过程中不得损坏)。
- 延迟:尽可能少,否则程序可能会开始引入错误。话虽这么说,出于原型设计的目的,我可以坚持平均 10 毫秒和不规则的 100 毫秒。不过,我非常想保留下来。
- 标准 IP 设施:您可以假设所有设备都有这些,是的。
也许看看一些成熟的东西(因此应该能够连接到你最终使用的任何一个 language/s)比如 Redis 或 RabbitMQ 是明智的,因为你需要能够通过网络与许多不同的设备进行通信。无论哪种方式,都建议使用某种形式的中央集线器来处理其他设备之间的通信。