服务发现通信行为
启动行为
服务发现将根据服务实例处于以下三个阶段之一:
• 初始等待阶段
• 重复阶段
• 主要阶段
一旦系统启动并且用于服务实例的接口连接已建立,服务发现将进入该服务实例的初始等待阶段。
在进入初始等待阶段并在发送第一条服务实例的消息之前,服务发现实现应根据初始延迟(INITIAL_DELAY)进行等待。
初始延迟(INITIAL_DELAY)应定义为最小延迟和最大延迟。
等待时间应通过在最小延迟和最大延迟之间选择一个随机值来确定。
为了将不同类型的多个条目合并为较少的消息数,服务发现应使用相同的随机值。
在发送第一条消息之后,进入该服务实例/这些服务实例的重复阶段。
服务发现实现应根据 REPETITIONS_BASE_DELAY 在重复阶段进行等待。
在重复阶段发送的消息之间的延迟会加倍。
在重复阶段期间,服务发现应仅发送 REPETITIONS_MAX 个数据包。
如果 REPETITIONS_MAX 设置为0,则应跳过重复阶段,并在初始等待阶段后进入服务实例的主要阶段。
在重复阶段之后,将进入服务实例的主要阶段。
在重复阶段,如果配置了 CYCLIC_OFFER_DELAY,则应周期性地发送Offer Messages和Publish Messages。
在进入主要阶段后,等待1*CYCLIC_OFFER_DELAY时间后再发送第一条消息。
在发送特定服务实例的消息后,服务发现会在发送下一条服务实例的消息之前等待1*CYCLIC_OFFER_DELAY时间。
对于请求/订阅,应使用参数CYCLIC_REQUEST_DELAY实现与Offer相同的周期行为,而不是