JBoss企业级应用服务平台群集指南(八)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

1.6 集群的JMS服务

    JBoss AS 3.2.4 和更高的版本支持高可用性的 all 服务器配置里的 JMSHA-JMS)服务。在 JBoss AS 当前的发布版本里,HA-JMS 服务用一个群集的 singleton fail-over 服务来实现。
注意 
    如果你希望自己来配置 HA-JMS,你可以在以前的 JBoss AS 版本里让它运行。我们有一个客户成功地在 JBoss AS 3.0.7 里使用 HA-JMS。如果你有更多问题的话,请联系 JBoss 支持部门。
 

1.6.1      高可用性的Singleton Fail-over

    JBoss HA-JMS  服务(也就是消息队列和主题)任何给定时间都只在群集里的单节点运行(主节点)。如果这个节点崩溃了,群集系统简单地选取另外一节点来运行  JMS  服务( fail-over )。这种设置提供了针对服务器瘫痪的冗余措施,但并没有降低  JMS  服务器节点的负载。
注意 
    虽然你不能够对 HA-JMS 队列进行负载平衡(只有一个运行这个队列的主节点),但是你可以平衡处理队列里信息的 MDBs 的负载(参考章节 6.1.3, “负载均衡的HA-JMS MDBs”).
 

1.6.1.1        服务器端配置

     为了使用  singleton fail-over HA-JMS  服务,你必须在群集里的所有节点上配置相同的  JMS  服务。这包括所有和  JMS  相关的  MBeans  以及部署的  JMS  应用程序。
    JMS  服务器被设置成在  DefaultDS  里持久化它的数据。在缺省的情况下,那就是内含的  HSQLDB 。然而,在大部分群集环境里,所有节点都需要把数据持久化到一个共享数据库里。因此,在你启动群集  JMS  之前要做的第一件事就是建立一个共享数据库。你需要做如下的事情:
   配置 DefaultDS 来指向你选择的数据库服务器。就是用 docs/examples/jca  目录下的 xxx-ds.xml 文件代替 deploy/hsqlsb-ds.xml 文件,其中 xxx 是目标共享数据库的名字(例如, mysql-ds.xml  )。
  server/all/deploy-hasingleton/jms  目录下的 hsqldb-jdbc2-service.xml 文件用特定数据库的文件代替。例如, MySQL 的文件就是 mysql-jdbc2-service.xml JBoss AS  发行版本捆绑了一些  RDBMS  的配置文件。它们可以在 docs/examples/jms 下找到。
注意 
    你不需要替换server/all/deploy-hasingleton/jms 目录下的hsqldb-jdbc-state-service.xml 文件。尽管它的名字里包含 hsql,它适用于所有兼容 SQL92 的数据库,包括 HSQL,MySQL,SQL Server 和更多数据库。象我们上面配置的那样,它自动使用 DefaultDS 来存放数据。 
虽然你不能够对 HA-JMS 队列进行负载平衡(只有一个运行这个队列的主节点),但是你可以平衡处理队列里信息的 MDBs 的负载(参考章节 6.1.3, “负载均衡的HA-JMS MDBs”).
 

1.6.1.2        HA-JMS客户端

     客户和常规的  JMS  客户在两个方面有所不同。 .
  The HA-JMS  客户必须获得  HA-JNDI  里的  JMS connection factories (缺省端口是 1100 )。
   客户连接必须监控服务器异常( exceptions )。当群集系统  fail-over  到另外一个主节点时,所有在当前连接上的的客户端操作都会失败并产生异常( exceptions )。客户端必须知道该重新连接。
注意 
   虽然 HA-JMS 连接工厂(connection factory)知道运行 JMS 服务的当前主节点,但并不存在智能的客户端拦截器(client side interceptor)。客户端 stub 只知道固定的主节点,它不能够依服务器拓扑结构的变化而调整。

1.6.1.3        负载平衡的HA-JMS MDBs

     虽然  HA-JMS  队列( queues )和主题( topics )在同一时间只在单节点上运行,但其他节点上的  MDBs  也能够接收和处理  HA-JMS  主节点上的信息。这种竞争的情况导致  MDBs  的平衡负载行为。为了启用  MDBs  的平衡负载,你可以指定队列的  receiver 。这个  receiver  记录哪个节点正在等待信息和信息该按什么样的顺序来处理。 JBoss  提供三个  receiver  的实现( implementations )。
  The org.jboss.mq.server.ReceiversImpl  HashSet  的缺省实现( implementation )。
  The org.jboss.mq.server.ReceiversImplArrayList   ArrayList  的实现。
  The org.jboss.mq.server.ReceiversImplLinkedList   LinkedList  的实现。
     你可以指定  receiver  实现的类名作为在每个节点上定义永久  JMS Queue   DestinationManager   MBean  的一个属性。为了获得最好的负载平衡性能,我们建议你使用  ReceiversImplArrayList   ReceiversImplArrayList  实现,因为  JVM  里的  HashSet  的实现不是很好。


本文转自xudayu 51CTO博客,原文链接:http://blog.51cto.com/xudayu/68585,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
缓存 负载均衡 应用服务中间件
|
Java 应用服务中间件 Linux
|
负载均衡 算法 应用服务中间件
|
负载均衡 应用服务中间件 容器