TongLINKQ(1):TongLINKQ概述

本文详细介绍了TongLinkQ,一款支持多语言、协议和平台的消息中间件,其核心功能在于实现实时消息传输,强调了其系统架构、特点和队列管理机制,包括QCU的组成与工作原理,以及消息的结构、类型和常用属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 TongLINKQ简介

TongLinkQ 是面向分布式应用的消息中间件产品,主要功能是在应用程序之间进行实时、高效和可靠的传递消息,使得消息在不同的网络协议、不同的计算机系统和不同的应用软件之间进行网络传输。

TongLinkQ 应用程序可灵活地运行在多平台的多节点上。当应用程序之间要传送消息时,应用程序只需 将消息目的地、消息的属性和内容以及消息的控制信息通过 API 接口传递给 TongLinkQ ,TongLinkQ 根据应用提供 的信息对消息进行处理,并且利用 TongLinkQ  的节点组成的虚拟网,将消息传送到消息接收者所在节点上, 最后提交给消息的接收者。

2 TongLINKQ主要特点

支持开发语言:C/C++/C#,JAVA,JMS。

支持协议:支持 TCP/IP 协议,支持SSL 安全传输协议。

支持多种网络底层环境:

如:租用线 (Leased line)、拨号线、分组交换网(X..25)、DDN , 帧中继 (Frame Relay) 、

卫星网络等(以太网,广域网,拨号上网,DDB专线卫星网)

支持多运行平台:

Windwos系列,Linux系列,AIX系列,Solaris系列

如 HP-UX 、IBM AIX、Linux、SUN solaris、Windows NT、Windows2000/XP 等,

Linux 中支持国产 Linux 操作系统,如中标麒麟,银河麒麟,浪潮,芯片类型中支持国产的飞腾芯片。

3 系统架构

3.1 系统整体架构

(1)每个节点由一个或多个 QCU、一个节点监控进程、一个远程管理进程和一个JNDI代理进程组成。下面分别进行说明每个进程都负责的功能:

  • 节点监控进程(TL_MONI)负责节点上各核心进程,应用进程的运行监控。
  • 远程管理进程(TL_RMT)负责处理控制台Web服务器的请求,如启动/停止,配置管理,监控等。
  • JNDI 代理进程(TL_JNDIBROKER)负责与JNDI客户端交互,进行连接工厂、队列信息的查找。

(2)每个传输进程(包括发送、接收和客户代理)只能跟一个QCU进行交互。

(3)每个QCU包括QCU监控进程、QCU管理进程、发布订阅代理进程、发送进程、接收进程和 普通客户端代理进程、JMS客户端代理进程组成, 但QCU监控进程、QCU管理进程及发布订阅代理进程只能有一个,发送进程、接收进程、JMS客户端代理进程和客户端代理进程可以有一个或多个。下面分别进行说明每个进程都负责的功能:

  • QCU 负责所管辖范围内的队列及消息的管理和操作。
  • 发送进程(TL_SND)

        负责从 QCU 的发送队列中取消息,并进行网络发送。

  • 接收进程(TL_RCV)

        负责从网络接收消息,并放入到 QCU 的本地队列中。

  • 客户端代理进程(TL_CLIBROKER)

        负责与普通客户端进行交互,进行对队列中消息的操作。

  • JMS 客户端代理进程(TL_JMSBROKER)

        负责与 JMS 客户端进行交互,进行消息的发送接收操作。

  • 发布订阅代理进程(TL_PSBROKER)

        负责发布、订阅操作的处理。

  • QCU 监控进程(TL_QMONI)

        负责监控队列中的消息,根据情况向队列管理进程发出信号,以便队列管理进程对某些消息进行特殊操作,如消息生命周期到、应用读取消息的超时时间。

  • QCU 管理进程(TL_QMNG)

        负责将发送缓冲区中的消息发送到发送队列、将本地队列中的消息放入到接收缓冲区,同时负责对队列中的消息进行操作,如删除等。

3.2 QCU的结构

QCU 主要由发送缓冲区、接收缓冲区、管理进程、监控进程和多个队列(发送队列和本地队列)构成。

管理进程负责将发送缓冲区中的消息发送到发送队列,将本地队列中的消息放入到接收缓冲区;同时负责对队列的管理操作,如恢复、创建、删除和属性修改,对队列中消息的操作,如读取、删除等。

监控进程负责监控队列中的消息,根据情况向队列管理进程发出信号,以便队列管理进程对某些消息进行特殊操作,如消息生命周期到。

3.3 应用相关架构

3.3.1 发送消息到队列

应用进程发送消息到队列,消息首先被发送到发送缓冲区中,然后 QCU 的管理进程会从发送缓冲区中读取消息,并放入到相应的队列中。消息发送的目的地可以是远程队列、发送队列和本地队列。发送到远程队列中的消息,会放入远程队列对应的发送队列中。

3.3.2 应用从本地队列接收消息

应用进程接收消息时,首先是向 QCU 发送一个接收消息的命令,管理进程会根据接收条件找到符合条件的消息并放入到接收缓冲区中,然后应用从接收缓冲区接收到消息。

4 消息

4.1 消息的概念

在应用进程之间或一个应用内部交换的数据单位。

4.2 消息的结构

TLQ的消息分为三部分:

  1. 消息描述:消息描述给出消息的特定属性,包含消息类型、长度、优先级等。
  2. 自定义属性:提供给用户,用以对消息进行更详细的描述。
  3. 应用数据:应用程序数据的内容和结构由用户的用户程序来定义,格式、内容不限;字符编码需提前商定。

4.3 消息的类型

按构成消息的数据类型,可分为:

  1. BUFFER消息:应用数据为内存中的一段数据。
  2. FILE消息:应用数据为文件名。(注意:文件不能重名)
  3. EVENT消息:TLQ事件功能产生的消息。

4.4 消息组成部分

消息由三部分组成:

消息描述(必需)+用户自定义属性(可选)+消息内容

4.5 消息常用属性

(1)消息类型:分为BUF消息、FILE消息、EVENT消息、死信消息。

(2)持久性: 持久消息存储于磁盘,非持久消息存储于内存。

(3)优先级

  •  TLQ支持10个优先级,0-9。
  •  优先级9为独占优先级,当队列中有优先级为9的消息时,其他消息没有机会发送
  •  优先级0为等待优先级,当队列中有优先级大于0的消息存在时,此优先级的消息没有机会发送,即只有其他优先级的消息发送完毕后才有机会发送。
  •  对于优先级8到1,相同机会发送,发送速度由快到慢。

  (3)生命周期

消息的生命周期是消息所具有的属性之一,它用来控制一个消息从开始发送到最终被用户接收所允许的最长时间。一旦消息超过生命周期,核心将自动丢弃消息。

消息的生命周期单位为秒。

5 节点

节点是一套完整的TLQ运行环境(实例)的集合。对TLQ系统的监控和管理是以节点为单位的。

TLQ节点分为服务端和客户端两种类型

(1)TLQ服务端节点

服务端中包括运行的TLQ系统核心进程、系统内存资源、日志系统、数据存储和应用进程。

(2)TLQ客户端

客户端可与服务端安装在同一台机器上,也可安装在不同机器上。

客户端应用程序调用客户端以动态库或jar包形式提供的API,通过网络的方式,与一个或多个正在运行的TLQ服务端进行交互。

系统的监控和管理是以节点为单位的。

6 队列控制单元

6.1 队列控制单元概念

队列控制单元(Queue Control Unit,简称QCU)

QCU为(服务端)节点内相对独立的运行单元。功能主要是对隶属于本QCU的队列以及队列内的消息进行监控和管理 。

6.2 队列控制单元的组成

QCU 是队列和消息的管理单元, 运行中的QCU会创建数据缓冲区(发送/接收缓冲区)、队列,以及一组工作进程。此外QCU还包括运行时需要使用的目录、配置文件和环境变量。

6.3 队列控制单元与节点的关系

一个(服务端)节点内可以包含多个队列控制单元,各个队列控制单元各自独立工作,互不相干。

6.4 队列控制单元与进程的关系

一个 QCU 可对应多个发送进程和接收进程。

一个节点配置的 QCU 个数是由License决定,且一个应用进程同时打开的QCU不能超过 32 个。

6.5 队列控制单元的工作进程

队列控制单元包含以下工作进程:

  1. QCU管理进程tl_qmng:负责将发送缓冲区中的消息发送到发送队列、将本地队列中的消息放入到接收缓冲区,同 时负责对队列中的消息进行操作,如删除等
  2. QCU监控进程tl_qmoni:负责监控队列中的消息,根据情况向队列管理进程发出信号,以便队列管理进程对某些消 息进行特殊操作,如消息生命周期到、应用读取消息的超时时间。
  3. 发送进程tl_snd:负责从 QCU 的发送队列中取消息,并进行网络发送。
  4. 接收进程tl_rcv:负责从网络接收消息,并放入到 QCU 的本地队列中。
  5. 客户端代理进程tl_clibroker:负责与普通客户端进行交互,进行对队列中消息的操作。
  6. 发布订阅进程tl_psborker:负责发布、订阅操作的处理。       
  7. JMS代理进程tl_jmsbroker:负责与 JMS 客户端进行交互,进行消息的发送接收操作。

其中,除QCU管理进程tl_qmng和QCU监控进程tl_qmoni在QCU运行时必须存在外,其它工作进程根据依据对QCU的配置决定启动与否。

7 队列

7.1 队列的概念

队列是TLQ用于存储消息的数据结构,队列对于使用它们的应用程序来说是独立存在的。存在于主存储器、磁盘或相似的存储器。

7.2 队列的类型

(1)按照功能划分,队列可分为:本地队列、发送队列、远程队列、集群队列

(2)按照是否开辟实际物理存储空间划分,队列可分为:物理队列、逻辑队列

(3)按照队列创建的时间,队列可分为:永久队列、临时队列

7.3 队列与qcu的关系

      每个队列都隶属于一个QCU,由QCU负责创建、维护。一个QCU可以包含多个队列。

7.4 本地队列

本地队列是建立在本地节点的物理队列,用于存放远端网络传输过来的消息、本地应用发送的消息、系统产生的事件消息、系统内部管理信息等。应用既可向本地队列发送消息,也可从本地队列接收消息。

本地队列中消息的排列方式有:先进先出和消息优先级(消息按优先级从高到低存放)。

  1. 若为先进先出时,则接收消息时,首先接收符合条件的第一条消息;
  2. 若为优先级时,则高优先级的先被处理;
  3. 当系统恢复时,若消息的排列方式被改变,则恢复后消息的排列方式按照新的组织类型。

7.5 远程队列

远程队列为远方节点的一个本地队列在本地节点的一个逻辑映射,本身不占用物理空间。

远程队列必须和本地的一个发送队列关联。并指向对方的一个本地队列或者远程队列或者集群队列多个远程队列可共享一个发送队列。

7.6 集群队列

集群队列为一种特殊的队列,为一个包含多个远程队列或本地队列的列表。当消息发送到集群队列时,消息实际上被按比例分发到某个远程队列或本地队列上

7.7 队列命名规范

系统队列:TLQ.SYS.为前缀的为系统队列,普通队列不能使用此前缀。

普通队列:队列名为英文字母、数字、下划线、点构成,第一个字符必须为英文字母,最后一个字 符不能为点。要求一个 QCU 内的所有队列不能有重名的情况。不同的 QCU 之间,队列名可以重名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不死鸟.亚历山大.狼崽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值