20.11.3. 发现组

广播组用于在网络上广播连接器。而另一方面,发现组(Discovery Group)定义如何从广播端点(UDP 或 JGroups 广播组)获取连接器信息。发现组维护一个连接器对的列表 - 每个条目都对应不同服务器的广播。
当发现组接收到来自某个服务器的广播端点上的广播,它会相应地更新列表里的连接器对条目。如果长时间没有从某个服务器接收广播,它会将这个服务器的条目从列表里删除。
群集连接和 JMS 客户使用发现组主要是获取初始连接信息以下载所需的拓扑结构。

注意

您必须为每个发现组配置一个合适的匹配其对应的广播组(UDP 或 JGroups)的广播端点。

20.11.3.1. 配置服务器上的 UDP 发现组

下面的例子定义了一个 UDP 发现组(Discovery Group):
<discovery-groups>
   <discovery-group name="my-discovery-group">
      <local-bind-address>172.16.9.7</local-bind-address>
      <group-address>231.7.7.7</group-address>
      <group-port>9876</group-port>
      <refresh-timeout>10000</refresh-timeout>
   </discovery-group>
</discovery-groups>

注意

在上面的配置示例里,属性"local-bind-address"、"group-address" 和 "group-port" 都已舍弃不用。您可以选择使用 "socket-binding" 属性。
下面的例子定义了一个 UDP 发现组,它用属性 "socket-binding" 替换了所有已舍弃不用的属性。
<discovery-groups>
   <discovery-group name="my-discovery-group">
      <socket-binding>messaging-group</socket-binding>
      <refresh-timeout>10000</refresh-timeout>
   </discovery-group>
</discovery-groups>

下表描述了上例里使用的常用来定义 UDP 发现组的重要参数:

表 20.12. UDP 发现组参数

属性 描述
name
这个属性表示发现组的名称。对于每个服务器,每个发现名称都必须是唯一的。
local-bind-address
[已舍弃] 这是一个可选的 UDP 专有属性。在相同主机的多个接口时,它用于配置侦听专有接口的发现组。
group-address
[已舍弃] 这是一个强制的 UDP 专有属性。它用于配置侦听组的多点传送 ID 地址的发现组。这个属性的值必须匹配您要侦听的广播组的 group-address 属性。
group-port
[已舍弃] 这是一个强制的 UDP 专有属性。它用于配置多点传送组的 UDP 端口。这个属性的值必须匹配您要侦听的多点传送组的 group-port 属性。
socket-binding
它表示发现组的套接字绑定
refresh-timeout
这是一个可选的 UDP 专有属性。它用于配置发现组从某个服务器接收到最后一次广播后从列表里删除该服务器的连接器对条目前等待的时间(单位为毫秒)。refresh-timeout 的值必须比广播组的 broadcast-period 的值高很多以防止在广播进程仍在时过早地删除服务器条目。这个属性的默认值是 10,000 毫秒。