6.3 共享存储主从模式
允许多个代理共享存储,但任意时刻只有一个是活动的。这种情况下,当主节点失效时,无需人工干预来维护应用的完整性。另外一个好处就是没有从节点数的限制。
有如下两种模式。
6.3.1 基于数据库
它会获取一个表上的排它锁,以确保没有其他 ActiveMQ 代理可以同时访问数据库。其他未获得锁的代理则处于轮询状态,就会被当做是从节点,不会开启传输也不会接受连接。
6.3.2 基于文件系统
需要获取分布式共享文件锁,linux 系统下推荐用 GFS2。
7. 网络连接 7.1
代理网络
支持将 ActiveMQ 消息代理链接到不同拓扑,这就是被人们熟知的代理网络。 ActiveMQ 网络使用存储和转发的概念,其中消息总是存储在本地代理中,然后通过网络转发到另一个代理。
当连接建立后,远程代理将把包含其所有持久和活动消费者目的地的信息传递给本地代理,本地代理根据信息决定远程代理感兴趣的 Message 并将它发送给远程代理。
如果希望网络是双向的,您可以使用网络连接器将远程代理配置为指向本地代理,或将网络连接器配置为双工,以便双向发送消息。
1. 网络连接——需要在消息存储前建立好连接,对应 networkConnectors 元素 2. 消息存储——需要在传输前配置好,对应 persistenceAdapter 元素 3. 消息传输——最后配置,对应 transportConnectors 元素
7.2 网络发现
1. 动态发现
使用多播来支持网络动态发现。配置如下:
静态发现接受代理 URI 列表,并将尝试按列表中确定的顺序连接到远程代理。
间的时延,仅在 useExponentialBackOff 启用时生效。
? useExponentialBackOff:默认值 true,如果启用,表示每次失败后增加
重建连接的时延。
? backOffMultiplier:默认值2,表示启用 useExponentialBackOff 后每
次的时延增量需要注意的是,网络连接将始终尝试建立到远程代理的连接。 需要注意的是,网络连接将始终尝试建立到远程代理的连接。 3. 多连接场景
当网络负载高时,使用多连接很有意义。但是你需要确保不会重复传递消息,
这可以通过过滤器来实现。
太简单,不做实例分析。
9. 性能调优
ActiveMQ需要关注的性能有三个方面:
? 消息从磁盘中写入和读取(仅限与持久消息) ? 消息的编组和基于收集的传递 ? 基于多线程的高低文切换