IBM分布式队列实验
- 格式:doc
- 大小:390.00 KB
- 文档页数:3
IBM Websphere MQ原理及在民航气象数据库中的应用米永胜【摘要】文章阐述了IBM Websphere MQ的通信原理和互联通信的实现方法,结合实例重点阐述了MQ在民航气象数据库系统中的应用及维护,旨在加深对MQ的理解与运用.【期刊名称】《气象水文海洋仪器》【年(卷),期】2014(031)004【总页数】5页(P63-67)【关键词】中间件;消息队列;民航气象数据库系统;应用实例;维修实例【作者】米永胜【作者单位】民航新疆空中交通管理局气象中心,乌鲁木齐市830016【正文语种】中文【中图分类】TP399消息中间件是位于操作系统和应用程序之间的一种软件,其典型产品是IBM Websphere MQ(MQ是Message Queue的缩写,即消息队列,以下简称MQ)。
简言之,MQ是一种应用程序与应用程序之间的通信方法,通过读出和写入列队中的针对应用程序的数据(消息)来通信,依靠消息传递和消息排队技术,使应用程序能在不同组件(诸如:处理器、子系统、操作系统)以及不同通信协议的网络间彼此通信,实现了跨平台的数据可靠通信传输。
[1-3]民航气象数据库系统从2004年二期升级改造开始,充分利用MQ的跨平台、跨网络的特性,及其先进的传输机制,做到不丢失、不复传,通信可靠性大大提高。
1.1 MQ的通信原理相互通信的应用程序可以在不同的时间运行(即所谓异步通信),如图1所示。
程序A和B不在网络上直接相互通话,而是间接地将消息放入消息队列,因为程序间没有直接的联系,所以它们不必同时运行。
如果A、B之间的通信线路不通,或程序B没有运行,消息就会留在传输队列中,直到最后被成功地传送,这就是MQ最基本而最重要的技术—消息的可靠传输;而且MQ还能够防止消息重复传送,确保消息1次且仅1次(once-and-only-once)传递。
通信以及对通信错误的恢复都是由队列管理器完成的。
1.2 MQ的互连通信的实现图2是一个不同操作系统平台之间的双向MQ通信传输示例。
ibm mq原理
IBM MQ是一种消息传递中间件,用于在分布式系统中传递消息。
它提供可靠的、高性能的消息传递机制,确保消息能够按照指定的顺序和时效性被发送和接收。
IBM MQ的工作原理基于消息队列的概念。
在这个概念中,消息发送者将消息发送到一个中央队列中,然后消息接收者从队列中获取消息进行处理。
这种解耦的方式使得发送者和接收者能够独立地进行开发和维护,提高了系统的可扩展性和灵活性。
IBM MQ通过使用消息队列管理器(MQM)来实现消息的存
储和处理。
MQM负责接收发送者的消息,并将其保存到队列中。
接收者会连接到MQM,从队列中获取消息并进行处理。
这种模式确保了消息不会丢失,并且发送者和接收者之间不需要直接通信。
除了消息队列,IBM MQ还提供了一些其他的特性,如消息的持久化和事务支持。
持久化意味着即使在消息发送或接收过程中发生故障,消息也不会丢失。
事务支持则可以确保消息的一致性和完整性,即发送者要么完全发送消息,要么不发送。
在实际的应用中,IBM MQ可以用于各种不同的场景,如企业应用集成、分布式系统之间的通信、异步消息处理等。
它具有高可用性、可靠性和性能优势,被广泛应用于金融、制造、电信等行业。
总之,IBM MQ通过使用消息队列和消息队列管理器,实现了
可靠的、高性能的消息传递机制。
它的工作原理简单而有效,可以满足各种不同场景下的需求。
®挑战SUPPLIERSCUSTOMERSENTERPRISESUNHPDECICLIBMDEC VAXDECTCP/IP OS/2LANOSILU6.2RISC SYSTEM 6000EDIVAXNOVELLDECNETRISC SYSTEM 6000Bull如何连接孤岛系统?•扩展业务•提高效率•利用现有投资•减少投资WebSphere MQ 是一种经济的消息传递方式"单一的API,支持近30 种不同的平台"应用集成中间软件,支持多种网络协议如:SNA ,TCP/IP ,SPX ,NetBios "确保消息传递"更快的应用开发"支持同步和异步的事务处理,与数据库协调工作"支持多种开发工具和编程语言包括面向对象的Java, C++Queue 1Queue 2ABQueue 1Queue 2主要用途:"整合已有的应用"e-Business应用"数据复制"OLTP交易处理/EDI调用"文件传输WMQ 是一种消息中间件应用业务逻辑Queue integrity Time independent deliveryCommunications Assured deliveryMQSeries FamilyMessage prioritization Workflow technology TriggersInteroperabilityApplication environmentse.g. Native UNIX. . .e.g. AIX, MVS, OS/2, HP-UX, VMS, Guardian, VSE,Solaris, OS/400...e.g. RS/6000, ES/9000, DEC VAX, Tandem, AS/400,SPARC. . .操作系统硬件层MQIShield from network中间件WMQ是一种消息传递软件Websphere MQ为应用开发人员提供了一种直接、简单的手段,以实现商业应用系统在不同操作系统平台之间传递,交换重要的商业数据和信息。
IBM MQ队列通道创建配置图示一:发送方服务器配置1.1:创建建队列管理器选定队列管理器:点击右键――新建――队列管理器输入:队列管理器名称:L01(可任意定义)点击下一步,下一步,日志路径可以更改在侦听端口处输入端口号:1422(可任意定义)** 输入的时候要记住这个端口号(继续看下去,你就知道这个端口号有很大作用)点击完成,创建成功后,刷新队列管理器,看到新建的队列名称L01 1.2:创建本地队列点击L01--队列-右键-新建-本地队列输入本地队列名称,选择“缺省持久性:持久,作用域:队列管理器”在触发器属性页处,选择:触发器控制:打开,绑定触发器名称点击确定,新建好:本地队列LQ 011.3:创建本地传输队列:点击TQ01--队列-右键-新建-本地队列输入本地队列名称,选择“缺省持久性:持久,作用域:队列管理器”用法下拉框中选择:传输在触发器属性页处,选择:触发器控制:打开,绑定触发器名称点击确定,新建好,传输队列TQ011.4:创建远程队列:点击TQ01--队列-右键-新建-远程队列定义输入远程队列名称:RQ01选择“缺省持久性:持久,作用域:队列管理器”远程队列名称处:输入将要接收的远程队列管理器的本地队列名称)(LQ02)远程队列管理器名称:输入将要接收的远程队列管理器的名称(R01)传输队列名称:选择本地刚才新建的传输队列名称:TQ011.5:创建发送通道:点击TQ01--高级-通道-发送方通道输入发送方通道名称,LD01连接名称处:输入:将要接收的远程队列所在的服务器的IP及端口传输队列绑定:本地的传输队列(TQ01),点击确定,创建好发送通道LD011.6:创建接收通道点击TQ01--高级-通道-接收方通道,输入接收方通道名称就OK到这里:发送方服务器配置就Ok了。
二:接收方服务器配置---------------------------------------------------------2.1 创建队列管理器队列管理器名称:R01(可任意定义)点击下一步,下一步,日志路径可以更改在侦听端口处输入端口号:1422(可任意定义)输入的时候要记住这个端口号,点击完成2.2 创建本地队列点击R01--队列-右键-新建-本地队列输入本地队列名称,选择“缺省持久性:持久,作用域:队列管理器”在触发器属性页处,选择:触发器控制:打开,绑定触发器名称点击确定,新建好:本地队列LQ 02到这里接收方的服务器配置就OK好了。
IBMMQ消息头详细介绍细看 MQ 消息头(MQMD)的功能 MQMD 是每个消息都带有的消息头信息,它由若⼲字段组成,这些字段都是 MQ 设计⼈员根据总结的应⽤需求⽽设置的。
应⽤程序构建消息时应该对这些字段填⼊恰当的值,对于没有填⼊的字段,MQ会⽤默认值填充。
开发应⽤程序时,充分理解并利⽤这些字段是⼗分必要的,这⾥逐⼀为⼤家进⾏介绍,并针对每个字段指明它在实际编程中⼀般会⽤来实现什么样的功能: StrucId:消息头结构名,固定为"MQMD"四个字符。
根据这个字段,我们就能够在应⽤程序数据包中识别出MQMD的位置。
Version :MQMD 版本号。
Report:消息的报告选项,默认值为 MQRO_NONE。
发送⽅程序通过设置此字段值以指定在消息传递出现意外、消息超时、消息到达、消息递出事件时是否需要报告消息和报告消息要包含什么内容。
对于需要消息报告的程序,需要对这个字段与下⾯介绍的 ReplyToQ 和ReplyToQMgr 字段⼀起进⾏设置,以对这些消息事件作出反应。
Expiry:超时字段,单位是 0.1 秒,默认值是 MQEI_UNLIMITED,表⽰永不过期。
消息放到⽬标队列⾥以后,如果超过这个指定时间还没有被程序读⾛,MQ 系统就会丢弃这个消息。
如果这个消息设置了 Report 字段要求超时报告,系统会按照Report字段指定的⽅式返回⼀个超时报告。
应⽤中通常要进⾏必要的消息超时机制设计,⽐如实现SOA框架下为保持交易⼀致性⽽⼴泛使⽤的 Compensation 机制,就可以⽤超时处理实现。
Feedback:反馈字段,此字段与 Report 字段⼀起使⽤以指⽰报告的性质。
Encoding:消息中数值数据(binary integer、packed-decimal integers、floating-point numbers等)的编码⽅式,默认值是MQENC_NATIVE,因平台⽽异,此值不适⽤于 MQMD 结构本⾝的数字数据。
分布式文件系统设计与实现实验报告引言:分布式文件系统是指将存储在不同物理位置的文件以一种透明、统一的方式组织起来,使用户能够像访问本地文件一样方便地对其进行存取。
本实验旨在设计和实现一个分布式文件系统,通过研究其原理和算法,探索其在分布式计算环境下的性能和可扩展性。
设计与实现:1. 架构设计1.1 主从架构1.2 对等架构1.3 混合架构2. 文件分配算法2.1 随机分配算法2.2 基于哈希的分配算法2.3 基于一致性哈希的分配算法3. 数据一致性管理3.1 副本机制3.2 一致性协议4. 容错与恢复4.1 容错机制4.2 数据恢复算法5. 性能优化5.1 负载均衡策略5.2 数据缓存技术实验过程与结果:在实验中,我们选取了对等架构作为设计的基础。
首先,我们搭建了一个由多台计算机组成的分布式系统,并在其上安装了相应的操作系统和软件环境。
然后,我们根据设计与实现的要求,编写了相应的代码,并进行了测试和优化。
实验结果表明,我们设计与实现的分布式文件系统具有较好的性能和可扩展性。
通过合理的文件分配算法和一致性管理策略,我们实现了文件的快速存取和数据的一致性维护。
同时,通过容错与恢复机制,我们提高了系统的可靠性和稳定性。
此外,我们还采用了负载均衡和数据缓存等技术,有效地优化了系统的性能。
结论:本实验的设计与实现进一步深化了对分布式文件系统的理解,并验证了相关算法和策略的可行性和有效性。
通过实验过程中遇到的问题和得到的经验,我们对分布式系统的设计与实现有了更深入的认识。
未来,我们将进一步改进和扩展分布式文件系统的功能,以适应更复杂的分布式计算环境。
参考文献:[1] Tanenbaum, A. S., & Van Steen, M. (2002). Distributed systems: principles and paradigms. Pearson Education.[2] Ghemawat, S., Gobioff, H., & Leung, S. T. (2003). The Google file system. ACM SIGOPS Operating Systems Review, 37(5), 29-43.[3] DeCandia, G., Hastorun, D., Jampani, M., Kakulapati, G., Lakshman,A., Pilchin, A., ... & Vosshall, P. (2007). Dynamo: Amazon’s highly available key-value store. ACM SIGOPS Operating Systems Review, 41(6), 205-220.。
IBM MQ队列通道创建配置图示一:发送方服务器配置1.1:创建建队列管理器选定队列管理器:点击右键――新建――队列管理器输入:队列管理器名称:L01(可任意定义)点击下一步,下一步,日志路径可以更改在侦听端口处输入端口号:1422(可任意定义)** 输入的时候要记住这个端口号(继续看下去,你就知道这个端口号有很大作用)点击完成,创建成功后,刷新队列管理器,看到新建的队列名称L01 1.2:创建本地队列点击L01--队列-右键-新建-本地队列输入本地队列名称,选择“缺省持久性:持久,作用域:队列管理器”在触发器属性页处,选择:触发器控制:打开,绑定触发器名称点击确定,新建好:本地队列LQ 011.3:创建本地传输队列:点击TQ01--队列-右键-新建-本地队列输入本地队列名称,选择“缺省持久性:持久,作用域:队列管理器”用法下拉框中选择:传输在触发器属性页处,选择:触发器控制:打开,绑定触发器名称点击确定,新建好,传输队列TQ011.4:创建远程队列:点击TQ01--队列-右键-新建-远程队列定义输入远程队列名称:RQ01选择“缺省持久性:持久,作用域:队列管理器”远程队列名称处:输入将要接收的远程队列管理器的本地队列名称)(LQ02)远程队列管理器名称:输入将要接收的远程队列管理器的名称(R01)传输队列名称:选择本地刚才新建的传输队列名称:TQ011.5:创建发送通道:点击TQ01--高级-通道-发送方通道输入发送方通道名称,LD01连接名称处:输入:将要接收的远程队列所在的服务器的IP及端口传输队列绑定:本地的传输队列(TQ01),点击确定,创建好发送通道LD011.6:创建接收通道点击TQ01--高级-通道-接收方通道,输入接收方通道名称就OK到这里:发送方服务器配置就Ok了。
二:接收方服务器配置---------------------------------------------------------2.1 创建队列管理器队列管理器名称:R01(可任意定义)点击下一步,下一步,日志路径可以更改在侦听端口处输入端口号:1422(可任意定义)输入的时候要记住这个端口号,点击完成2.2 创建本地队列点击R01--队列-右键-新建-本地队列输入本地队列名称,选择“缺省持久性:持久,作用域:队列管理器”在触发器属性页处,选择:触发器控制:打开,绑定触发器名称点击确定,新建好:本地队列LQ 02到这里接收方的服务器配置就OK好了。
WAS整理——侯泰浩一、WAS是什么IBM WAS的全称是IBM WebSphere Application Server,和Weblogic一样,是当前主流的 App Server (应用服务器)之一1.1术语WAS: IBM Websphere Aplication Server, 中间件应用服务程序;IHS: IBM HTTP SERVERDM: Deployment Manager, WAS中的集群管理节点;ND: NodeAgent, WAS中的节点监听程序;JVM: Java Virtual Machine, Java虚拟机;GC: Gabage Collection, 自动垃圾回收1.2W AS ND集群基本概念及体系结构WAS集群由一组应用服务器组成,每个服务器上部署了同样的应用程序。
通过集群可以实现可扩展性(服务更多客户,提高吞吐量),负载均衡(平衡负载资源,使资源得以有效利用),高可用性(提供故障恢复和补偿机制,在关键性业务中提供容错功能)。
下图是ND分布式环境的体系结构,包括单元、节点、服务器等基本概念。
WAS群集是为了实现集中管理和负载均衡同时可以实现故障转移,一个2节点的群集拓扑如下:其中,DeploymentManager通过每个节点上的NodeAgent完成对AppServer的配置修改、应用发布以及启动和停止,实现集中管理。
如果安装多个IHS,并实现负载均衡和分发,可以使用防火墙的负载分发功能。
每个节点上的AppServer可以是多个的。
二、WAS基本参数配置三、WAS的调优思路3.1基本思路部署在WAS上的应用程序,其性能是由多个因素决定的。
例如网络、数据库、内存分配、WAS服务器的配置以及应用程序的设计。
对于一个标准的 J2EE应用,一个请求到来时,往往需要经过多次转发:网络 > Web服务器Web容器 > EJB容器 > 数据库。
而每一次转发,都可能造成请求处理的瓶颈,使得应用程序整体性能下降。
一、实验题目:分布式队列
二、实验目的:实现Websphere MQ之间的互连,把消息从一个队列管理器发送到另一个队列管理器
三、分布式队列组件:
1.使用MQCONN调用连接到队列管理器
2.使用MQOPEN打开一个队列,以便可以把消息放到队列中
3.队列管理器可以定义属于自己的队列,也可以定义属于其他队列管理器的队列,这些队列叫做远程队列定义
4.如果消息要发送到远程队列管理器中,本地队列管理器把消息存放到传输队列中,直到它的消息发送到远程队列管理器
5.消息通过通道来实现队列管理器之间的传输,通道是一条两个队列管理器之间的通信链路,它可以把队列中的所有消息发送到远程队列管理器
6.如果消息不能被发送到正确的目的地,那么消息将被发送到死信队列
四、实验步骤:
1.在A、B两台电脑上分别创建QM1和QM2,并进入脚本模式
2.创建发送通道sender channel.分别在A机上创建QM1.QM2,在B机上创建QM2.QM1. 定义中要指出通道性质CHLTYPE、传输队列名XMITQ(对方队列管理器名)、目标系统连接名CONNAME(对方机器的IP地址和端口号)和通信协议TRPTYPE
3.在每台机上创建一个本地队列作为传输队列,以便存放将被发送到远程队列管理器的消息,队列名和对方队列管理器名相同
4.在每台机上创建一个本地队列DLQ,并将队列管理器使用它为死信队列
5.创建接收通道receive channel.分别在A机上创建QM2.QM1,在B机上创建QM1.QM2.接收通道和对方的发送通道应该同名,定义中要指出通道性质CHLTYPE和传输协议TRPTYPE
6.退出脚本模式,启动监听器runmqlsr -t TCP -p 端口号-m 队列管理器名。
另打开一个cmd窗口,运行runmqsc,分别使用PING CHL(QM1.QM2) 和PING CHL(QM2.QM1)来检查通道的连通性
7.分别启动Channel,START CHL(QM1.QM2) 和START CHL(QM2.QM1)
8.定义应用队列,在B机上定义QL.B,在A机上定义指向QL.B的远程队列QRMT2
9.向B机的QL.B中传递消息,则在A机上的QRMT2中输入消息amqsput QRMT2 QM1,在B计的QL.B中取出消息amqsget QL.B QM2
结果截图:
Put: ASD
Get: ASD
五、遇到的问题
1.由于在虚拟机环境下每台电脑的IP地址相同,这样会导致无法实现远程队列传输,所以通过上网了解,我们对虚拟环境进行了设置,将NAT连网方式转换为桥接。
这样每台电脑的IP地址就不同了
2.第一次ping channel时没有ping通,发现是因为没有启动listener
A机ping QM1.QM2这个channel时无法ping通,显示’not available, retry later’
B机启动listener后发现complete。