基于Primeton ESB的高可用MQ集群配置

来源:互联网 发布:sql注入防范 编辑:程序博客网 时间:2024/06/13 10:53

查看原文

Primeton ESB中内置ActiveMQ 5.10.1。在实施ESB项目过程中,不少客户提出对于消息服务的请求,以实现异步的消息通信机制。

在基于现在ESB平台的基础上,通过适当配置,即可实现MQ的不同类型的高可用,从而支持业务系统的连续性。

原生的ActiveMQ支持基于文件系统的Master-slave集群、基于数据库的Master-slava集群以及基于共享Broker的集群模式。

  1. 基于Master-slave的集群配置:
    1. 优势:主从集群的优势在于其业务的连续性,发生单点故障时,不会造成消息的中断,同时生产者已发送的消息会自动由另一个节点读取,并等待消费,满足完全的高可用。
    2. 劣势:由于采用了共享的文件,为保证文件的独占性,因此首次读取了文件的服务器会成为主机,并对共享文件加锁,后续的服务器无法获取共享文件锁,从而切换到standby状态,直接主机发生故障释放锁,同一时期只有一台服务器对外提供服务,无法实现负载均衡,仅可满足高可用性。共享文件系统需要依赖NFS实现,对于NFS的稳定性要求较高
    3. 配置方式:所有主从服务器需要设备共享文件系统,在配置存储路径时如下:

       

      共享文件系统的集群配置
      <persistenceAdapter><kahaDB directory="/data/mqdata/kahadb" enableIndexWriteAsync="true"  enableJournalDiskSyncs="false"/></persistenceAdapter>

       

      所有节点的存储路径指定同一目录

  2. 基于数据库Master-slave集群配置:
    1. 优势:将数据存储至数据库,由数据库保证其数据的稳定性,同时具备共享文件系统的集群的优势。
    2. 劣势:额外增加数据库配置,维护工作量增加
    3. 配置方式:与共享文件系统大致相同,其不同之处在于持久化配置方式由文件系统转为数据库内,

       

      共享数据库的集群配置
      <persistence><jdbcPersistence dataSourceRef="mysql-ds"/></persistence>
  3. 基于共享Broker的集群模式配置
    1. 优势:集群中的所有节点都可以提供服务,在满足高可用的同时,可提供负载均衡。在集群所有节点生产运行,发送至任一节占的消息,都可以通其它任一节点消费,共享的borker可被视为消息池。
    2. 劣势:由于集群采用共享逻辑的broker,因此在访问过程中,当生产者发送至其中任一节点时,当该节点正好发生故障,其未被消费的消息将无法读取,直接故障节点恢复正常,从而造成消息队列中的消息顺序发生偏移。
    3. 配置方式:各节点通过网络间的互联实现消息broker的共享

       

      共享Broker的集群配置
      <networkConnectors><networkConnector uri="static:(tcp://localhost:7777)"name="bridge"                           dynamicOnly="false" conduitSubscriptions="true"                         decreaseNetworkConsumerPriority="false">                    </networkConnector</networkConnectors>
0 0