欢迎来到天天文库
浏览记录
ID:31431111
大小:106.00 KB
页数:5页
时间:2019-01-09
《基于websphere mq搭建高可用消息传输队列》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于WebsphereMQ搭建高可用消息传输队列 摘要:WebspereMq是IBM研发的一款优秀的消息中间件产品。该产品基于消息队列的存储转发机制,为不同应用的整合通信,信息交换提供稳定的桥梁。在实际应用中,底层产品如存储器等对中间件整体可用性有很大影响。该文在如何提高消息中间件可用性方面进行了探索。 关键词:WebsphereMQ;消息队列;高可用;负载均衡 中图分类号:TP31文献标识码:A文章编号:1009-3044(2015)19-0076-02 消息队列技术是分布式应用间交换信息的一种技术,在异步化分布式系统中,应用可以通过消
2、息队列进行数据传输,指令交换或者文件传递等。消息队列对外规约一致的存取接口,内部屏蔽了底层实现细节和协议的差异性,在解除了应用耦合的同时,使得应用可以专注于业务细节而非通信管控。 IBM公司研发的WebspereMQ就是一款典型的消息队列产品,在消息存储转发机制基础上,更好的原语设计,更强的通信协议适配以及定制性更好的安全策略等,都使得该系列在业界应用十分广泛,成为了不同操作系统,不同网络环境之间应用通信的桥梁。5 在很多关键性领域中如金融,交通管控等,往往对于消息可靠性要求较高。要做到消息不丢,不重,不错,即保证队列管理器能够同时实现数据和
3、服务的高可用,仅仅凭借MQ无法实现,需要从底层产品人手,同时对MQ自身的参数调配,搭建高可用的消息队列。 1基础知识介绍 应用程序把消息放进队列里,然后发往另外一个队列管理器中的队列,或者等待其他的应用程序把消息读走,由于其良好的适配性,常被用于不同主机间的进程间异步化通信。它有几个重要的概念: 1)队列管理器 MQ的基础设备,作为顶级单元,它往往被用于维护和管理其他通信中使用的对象,并完成同其他队列管理器的通信。 2)消息 队列管理器使用的基本通信单元被称为消息。它分为消息头和消息主体两部分。消息头存放了消息描述符(MessageD
4、escriptor),这些内容供MQ本身使用,消息主体里面存放应用数据(ApplicationData),由取用消息的应用程序解析使用。 3)队列 用于存放消息,是存储转发机制实现的核心。常用的队列有本地队列,远程队列,传输队列和别名队列等。远程队列指向另一个队列管理器的本地队列。在被放人消息后,会将消息通过传输队列传递到远程的队列管理器中去。 4)通道 队列管理器之间以及同应用程序间的通信都需要使用通道。特别地,分别在两台队列管理器A和B上面建立同名的发送通道和接收通道,即可完成从A到B的通信,反向亦然。5 5)监听器 监听器需要被
5、单独定义并启动,用来监听对应端口的消息。这些消息可能是应用数据,也可能是管理请求。 图1是一般基于MQ的通信环境拓扑示意图。 图1的方案可以满足基本的通信需求,但是由于存在着诸如单点故障等隐患,因而无法保证通信链路的高可用性。 为了解决单点故障,MQ提出了多实例队列管理器的概念。定义多实例队列管理器,并在共享存储上队列管理器数据和日志,然后将这个信息分发给另外的挂载该存储的MQ服务器,就实现了多实例队列管理器。应用strmqm-x[QM_NAME]可以以多实例的主机方式启动队列管理器。后启动的一台将以standby方式运行,当主机宕机或者出
6、现故障,其加在存储上的锁会被释放,备用机接管并启动,成为主机。一套多实例队列管理器最多同时支持两台实例同时运行。其他实例只能在有运行实例宕机后手动启动。 2高可用队列管理器总体设计方案 该方案设计拓扑结构如图3所示,本方案主要从3个层次解决单点故障问题。首先,通过多实例队列管理器来保证应用层的服务可用性。这样,在一台MQ主机宕机后,备用实例自动运行起来,继续为客户端应用程序提供服务。5 其次,在存储层,应用GlusterFS服务器作为共享存储,GlusterFS采用堆栈式结构组织,封装了多台服务器的写磁盘操作为一个原子写入操作,所有写入挂载
7、目录的请求会被转化为网络通信后写入多台服务器中,同时成功即返回成功。单台存储主机宕机后,另外的主机会根据一定的算法踢出不可用的服务器,重新组织结构并继续对外提供数据存储服务。通过这种多机冗余和强同步机制,实现了存储服务的高可用性和极高的数据一致性。 最后,在客户端应用和队列管理器之间,使用lvs和keepal-ived搭建了vip,在队列管理器完成切换后,vip会自动实现漂移和迁转,这个过程对应用几乎透明。总体方案有效地提高了服务在线率和可用度。 3方案可靠性验证实验 设计了三组实验来验证这套方案的可用性。首先部署实验环境如下: 机器A上
8、运行应用通过vip向队列管理器TESTQMA中的远程队列MSG_REMOTE发送消息。MSGIN_REMOTE收到消息后会通过传输队列X
此文档下载收益归作者所有