我正在使用DDS进行消息传递的分布式应用程序。网络的某些部分由数据二极管分开,数据二极管仅允许单向数据流(即数据可以来自A => B而不是B => A)。这对DDS来说是个问题所以我们正在考虑在任何一方建立代理Java应用程序:
/-----------\ =>=>=>=>=> PROXY #2 /-----------\
¦ MESSAGE ¦ => PROXY #1 => => DATA => => Receives TCP, => ¦ MESSAGE ¦
¦ PUBLISHER ¦ Receives message => DIODE=> converts to message ¦ SUBSCRIBER¦
\-----------/ & converts to TCP =>=>=>=>=> and republishes \-----------/
我对UDP不是很熟悉,但我目前的理解是固定的数据包大小(例如512 bytes)是可取的。因此,任何大于此的消息都需要分成多个数据报,并由PROXY#2以它们到达的顺序拼接在一起 - 并且只有在重新组装所有部分时才会发送消息。
这里的问题是如何重新发布消息?对车轮改造有点警惕,例如:发明自定义协议或算法(如果它已经存在)。