物联网环境下的大吞吐量下讯息服务集群设计
1、基于IBM MQ产品来实施JMS技术的消息服务应用服务器。
2、物联网消息采用MQTT协议,WebSphere MQ Telemetry Transport (MQTT) 是一项专为受限设备和受限网络设计的异步消息通信协议,以轻量、精简、开放和易于实现为主要特点。
3、MQTT 规范是开放并且免版税使用的,这有助于更好地推广。提供开源的实现,在 http://eclipse.org/paho/上有各种客户端的开源实现
4、发布 - 订阅的消息通信协议,允许一条消息只发布一次,便可被多个消费端(应用程序 / 设备)所接收
5、提供多种消息服务质量,包括 MQ 的黄金准则 -- 保证传递且仅有一次传递
- 0 :消息最多被传递一次
- 1 :消息会被传递但可能会重复传递
- 2 :消息保证传递且仅有一次传递
- 预期客户端应用程序 / 设备有可能仅具备非常有限的处理能力和资源
- 占用空间极小的 MQTT 客户端 ( 和服务器 ) 类库
- 简单的动词集合,包括 connect, publish, subscribe 和 disconnect
- 内建结构支持处理客户端和服务器之间的连接丢失
- 如果客户端意外掉线,使用“遗愿和遗嘱”发布一条消息
9、在传统的开放平台 WebSphere MQ 应用架构中,每个队列管理器都是独立的。当一个 QM 给另一个 QM 发送消息时,需要定义一个传输队列(transmission queue), 一个连接到目的端 QM 的通道,并且需要在发送消息的客户端上定义远程队列定义(remote queue definition)。为了简化 MQ 系统配置,可以通过 MQ 集群的使用,减少队列管理器上的对象数量,使得不同的 QM 可以互相通信而不需要定义众多的传输队列、通道以及远程队列定义。当集群中含有一个以上的同一队列实例时,WebSphere® MQ 会根据负载均衡算法选择最佳的队列进行消息路由。
10、MQ 集群中的完全存储仓库存储集群中队列管理器的元数据信息,一个集群不建议使用超过两个完全存储仓库
11、完全存储仓库建议不做业务应用,具体业务应用使用不完全存储仓库
12、在 MQ 集群中使用 MQTT Telemetry 服务时,只需要在集群中建立集群主题(Cluster Topic),并且只需要在集群中的一个队列管理器创建,不需要创建共享队列,默认使用 SYSTEM.MQTT.TRANSMIT.QUEUE
13、使用 MQ Telemetry 不需要手动创建订阅对象(Subscriptions),MQXR 服务默认使用 client ID :topic string 为名字自动创建订阅对象
14、完整的MQTT协议规范pdf下载:http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/MQTT_V3.1_Protocol_Specific.pdf
15、 java -Xms50M -Xmx50M -Djava.ext.dirs=/root/mq/lib -cp mqttperf.jar SingleTopicSub -b 9.119.154.235 -c 1000 -m 50000 -t TestTopic -s 1 即一共创建了 1000 个订阅者,无差错情况下会接收到 50000 条消息。命令中参数 -Xms 指程序的初始化内存大小,-Xmx 指程序占用的最大内存,-Djava.ext.dirs 指引用包路径,该路径文件夹中应该包含有 org.eclipse.paho.client.mqttv3.jar。注意:其中 -m 参数主要用来标记所有客户端应该收到的消息总数,其值为所有客户端数与发布程序发布的消息数之乘积,用来和实际接收到的消息总数做比较,判断所有消息是否被可靠传输。
版权声明:本文为博主原创文章,未经博主允许不得转载。