4.21.2. 用于地址联合的常见拓扑
下面介绍了一些常用的地址联合拓扑。
- 对称拓扑
在对称拓扑中,生产者和使用者连接到每个代理。队列及其消费者可以接收由任一制作者发布的消息。对称拓扑的示例如下所示:
图 4.1. 对称拓扑中的问题进行联合
在为对称拓扑配置地址联合时,务必要将 address 策略的
max-hops
属性的值设置为1
。这样可确保 只复制一次 消息,从而避免了 cyclic 复制。如果此属性设置为较大的值,则消费者将收到同一消息的多个副本。- 完整网格拓扑
完整网格拓扑与对称设置类似。三个或者多个对称的代理相互联合,创建一个完整的网格。在这个设置中,生产者和使用者连接到各个代理。队列及其消费者可以接收由任何制作者发布的消息。该拓扑示例如下所示。
图 4.2. 完整网格拓扑中的问题
与对称设置一样,在为完整的网格拓扑配置地址联合时,务必要将 address 策略的
max-hops
属性的值设置为1
。这样可确保 只复制一次 消息,从而避免了 cyclic 复制。- Ring 拓扑
在 ring 的 ring 中,每个联合地址都是上游的。该拓扑示例如下所示。
图 4.3. 环拓扑中的地址联合
当您为环形拓扑配置联合时,为了避免 cyclic 复制,务必要将 address 策略的
max-hops
属性设置为n-1
的值,其中 n 是环中的节点数。例如,在上方显示的 ring 拓扑中,max-hops
的值设置为5
。这可确保环中的每个地址分别看到 一次消息。环拓扑的一个优点是,在您需要进行的物理连接数量的情况下,设置得很便宜。但是,这种拓扑的缺陷在于,如果单个代理出现故障,整个环将会失败。
- fan-out 拓扑
在 fan-out 拓扑中,一个 master 地址通过联合地址树链接到一起。发布到主地址的任何消息都可由连接到树中的任何代理的任何消费者接收。树形可以配置为任何深度。还可以扩展树,无需重新配置树中的现有代理。该拓扑示例如下所示。
图 4.4. 在 fan-out 拓扑中解决了问题
当您为 fan-out 拓扑配置联合时,请确保将地址策略的
max-hops
属性设置为n-1
的值,其中 n 是树中的级别数。例如,在上方显示的 fan-out 拓扑中,max-hops
的值设置为2
。这样可保证树中的每个地址都会 精确看到消息一次。