15.3. Well Known Network Deployments
在工业部署中,例如生产线,整个网络拓扑(主机、IP地址等)往往是事先已知的。这种场景非常适合使用Fast DDS的静态发现机制,它大幅减少了中间件的设置时间(即所有实体准备好进行信息交换所需的时间),同时限制了仅必要的连接。
了解完整的网络拓扑可以实现以下目的:
- 最小化PDP元流量,并避免与点对点参与者发现阶段的多播通信。
- 完全避免使用带有静态端点发现阶段的EDP。
15.3.1. Peer-to-Peer Participant Discovery Phase
简单的PDP发现阶段包括域参与者通过多播发送定期的PDP公告,并对从远程域参与者接收到的公告做出回应。因此,随着域参与者数量的增加,PDP连接数量呈平方增长,从而导致网络上产生大量元流量。
然而,如果所有域参与者都是事先已知的,则可以将它们配置为仅向其同伴的一对一地址发送公告。这可以通过指定同伴地址列表并禁用参与者多播公告来实现。额外优点是,通过这种方法,仅配置在列表中的同伴会被域参与者所知,从而能够安排哪些参与者将与哪些进行通信。如果并非所有域参与者都需要了解网络中其他所有远程参与者,这样可以减少元流量。
用例“Fast DDS over WIFI”详细解释了如何为此类情况配置Fast DDS。
15.3.2. STATIC Endpoint Discovery Phase
用户可以手动配置哪个发布者和订阅者彼此匹配,从而使它们能够立即开始共享用户数据,避免EDP阶段。
该功能的完整描述可在“STATIC Discovery Settings”中找到。此外,还有一个完全功能性的“Hello World”示例,在examples/cpp/static_edp_discovery
文件夹中实现了静态EDP。
以下子节展示了一个示例配置,其中来自DomainParticipant HelloWorldPublisher的话题HelloWorldTopic中的发布者与来自DomainParticipant HelloWorldSubscriber的订阅者相匹配。
15.3.2.1. Create STATIC discovery XML files
HelloWorldPublisher.xml
<staticdiscovery>
<participant>
<name>HelloWorldPublisher</name>
<writer>
<userId>1</userId>
<entityID>2</entityID>
<topicName>HelloWorldTopic</topicName>
<topicDataType>HelloWorld</topicDataType>
</writer>
</participant>
</staticdiscovery>
HelloWorldSubscriber.xml
<staticdiscovery>
<participant>
<name>HelloWorldSubscriber</name>
<reader>
<userId>3</userId>
<entityID>4</entityID>
<topicName>HelloWorldTopic</topicName>
<topicDataType>HelloWorld</topicDataType>
</reader>
</participant>
</staticdiscovery>
这些XML文件定义了发布者和订阅者之间如何通过静态发现机制建立连接。
内容由零声教学AI助手提供,问题来源于学员提问