该段落描述了发现服务器(Discovery Server)机制的工作原理,它重用了RTPS(实时发布-订阅)发现消息的结构,以及标准DDS(数据分发服务)中的数据写入器(DataWriters)和数据读取器(DataReaders)。以下是对文本内容的逐步解释:
角色区分:
- 服务器与客户端:在发现服务器中,参与者可以是客户端或服务器。它们之间的主要区别在于如何处理发现流量。无论是哪个角色,用户流量都是独立于角色的。
- 服务器:接收客户端及可能其他服务器发送的发现信息,并将这些信息重新分发给已知的客户端和服务器。
信息 redistributing:
- 服务器还会向其已知的服务器通告新服务器的存在。这使得一个新服务器只需知道一个现有服务器,就能够连接到网络中的所有其他现有服务器。
- Redistributed 的发现信息可能来自直接连接到该服务器的客户端,也可能来自另一个正在重定向其客户端的数据的服务器。
已知的信息传递:
- 已知的服务器将收到所有直接连接到它们已知客户的信息以及其他所通知的新服务器的信息。
- 已知客户仅接收建立通信所需的信息,即关于他们匹配的数据参与者、数据写入器和数据读取器的信息。这个过程需要通过运行“匹配”算法来确定每个客户所需的信息。
备份服务器:
- 备份服务器是一种将其发现数据库持久化到文件中的类型。这种类型可以在启动时从文件加载网络图,而无需接收任何客户信息。
- 它可以用于在不同运行之间保存对网络状态的知识,以确保在意外关闭情况下安全保存重要信息。然而,使用这种类型的服务时,会导致较长的发现时间,因为定期写入文件是一项昂贵操作。
客户端与超级客户端:
- 客户端:连接到一个或多个服务并仅接收建立与匹配端点通信所需的信息。客户需要事先了解想要链接到哪些服务,包括监听地址(IP地址和端口)。
- 超级客户端:一种特殊类型的客户端,与普通客户相比,可以接收由其连接到的服务所知道的所有发现信息。但注意,超级客户端并不作为一个独立功能,它不会去连接其他服务或重新分发收到的信息。
信息确认机制:
- 客户端在规定间隔内向服务发送发现消息直到确认收到回复,从而让服务了解到这个新的客户并通知相关的重要发现信息。同样适用的是当一个服务连接到另一个服务时也会遵循相同原则。
总体而言,这段文字解释了如何通过多个层级和角色实现有效且灵活的数据分布和参与者之间的信息共享,同时考虑到了系统恢复、性能等多方面因素。
内容由零声教学AI助手提供,问题来源于学员提问