CN110071873A - 一种发送数据的方法、装置及相关设备 - Google Patents
一种发送数据的方法、装置及相关设备 Download PDFInfo
- Publication number
- CN110071873A CN110071873A CN201910282768.5A CN201910282768A CN110071873A CN 110071873 A CN110071873 A CN 110071873A CN 201910282768 A CN201910282768 A CN 201910282768A CN 110071873 A CN110071873 A CN 110071873A
- Authority
- CN
- China
- Prior art keywords
- message queue
- message
- queue client
- data
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
Abstract
本申请提供一种发送数据的方法、装置及相关设备。其中,该方法包括:消息处理装置获取数据,并根据该数据中包括的标识信息从消息队列客户端池中确定与消息队列集群匹配的消息队列客户端;将数据发送到匹配的消息队列客户端,该消息队列客户端与消息队列集群建立有数据连接,该数据从匹配的消息队列客户端发送到该消息队列集群。上述方法能够将不同的数据发往消息队列系统中的不同消息队列,减少数据接收端接收到大量无用的数据,提高数据的安全可靠性。
Description
技术领域
本发明涉及信息技术领域,尤其涉及一种发送数据的方法、装置及相关设备。
背景技术
分布式发布订阅消息系统(kafka)具备良好的功能特性,它通过磁盘结构提供消息的持久化,可以保持长时间的稳定性能,具备高吞吐量,能够支持每秒数百万的消息,而且可以支持并行数据加载,所以kafka一般用于处理应用服务系统或人工智能(artificialintelligence,AI)平台产生的海量流数据。Kafka也称为分布式消息队列系统,包含多个kafka集群,一个kafka集群可以同时包含多个消息队列。日志收集系统(flume)是一个分布式、高可靠和高可用的海量日志采集、聚合和传输的系统,flume支持在日志系统中定制各类数据发送方,用于收集数据,同时flume提供对数据进行简单处理,并写到各种数据接收方的能力。
当前一般使用kafka+flume组合的方案实现数据的转发。参见图1,如图1所示,flume获取数据源的数据,并将获取到的数据转发给kafka集群1和kafka集群2。但是flume在转发数据的过程中,不能根据数据接收端的kafka集群对数据进行区分,所以kafka集群1接收到的数据与kafka集群2接收到的数据一样。
现有的数据转发方案只能将数据进行无差别的转发,flume将数据源的数据在发往kafka集群1时必然会将该数据发送到kafka集群2,导致数据接收端的各个kafka集群接收到大量无用数据,浪费内存资源,降低了CPU性能且存在安全隐患,如何避免对数据进行无差别转发是目前亟待解决的技术问题。
发明内容
本发明实施例公开了一种发送数据的方法、装置及相关设备,能够避免对数据进行无差异转发,减少无用数据的产生,提高安全可靠性。
第一方面,本申请提供一种发送数据的方法,所述方法包括:消息处理装置获取数据,所述数据包括标识信息,所述标识信息用于关联消息队列系统中用于处理所述数据的消息队列集群,所述消息队列集群包括至少一个消息队列;所述消息处理装置根据所述标识信息,确定与所述标识信息匹配的消息队列客户端,其中,所述消息队列客户端与所述消息队列集群匹配;所述消息处理装置将所述数据发送至所述消息队列客户端,其中,所述数据从所述消息队列客户端发送至所述消息队列集群。
在本申请实施例中,为了将至少两条数据中的每条数据发送至匹配的消息队列集群,消息处理装置根据至少两条数据中携带的不同的标识信息,确定每条数据的标识信息匹配的消息队列客户端,通过匹配的消息队列客户端完成数据的发送,至少两条数据匹配的至少两个消息队列集群各不相同。本申请的实施例实现将不同的数据发往消息队列系统中的不同消息队列,减少数据接收端接收到大量无用的数据,此外,还可以控制不同消息队列集群的对数据源中的数据的权限管理,将不同标识信息的数据发往不同的消息集群,尤其是当消息队列系统中的不同消息集群属于不同的租户,或者数据来自不同的数据源时,避免传送数据时数据源中的所有数据均发往所有的消息队列系统,提高数据的安全可靠性。
在一种可能的实现方式中,所述标识信息包括租户的标识,所述消息队列集群位于所述租户的实例上。
在一种可能的实现方式中,所述消息处理装置根据所述租户的标识,查询路由表,所述路由表包括所述租户的标识以及消息队列客户端参数;所述消息处理装置从所述路由表中获取所述消息队列客户端参数;所述消息处理装置根据所述消息队列客户端参数,确定所述消息队列客户端,其中,所述消息队列客户端参数为所述消息队列客户端的配置参数。
在本申请实施例中,消息处理装置通过租户的标识从路由表中获取到消息队列客户端参数,进而确定消息队列客户端,实现简单,且租户的标识具有唯一识别性,所以能够保证匹配的消息队列客户端的准确性和唯一性。
在一种可能的实现方式中,所述标识信息包括数据源的标识;所述消息处理装置获取数据,包括:所述消息处理装置从所述数据源获取所述数据。
在一种可能的实现方式中,所述消息处理装置根据所述数据源的标识,查询路由表,所述路由表包括所述数据源的标识以及消息队列客户端参数;所述消息处理装置从所述路由表中获取所述消息队列客户端参数;所述消息处理装置根据所述消息队列客户端参数,确定所述消息队列客户端,其中,所述消息队列客户端参数为所述消息队列客户端的配置参数。
在本申请实施例中,消息处理装置通过数据源的标识从路由表中获取到消息队列客户端参数,进而确定消息队列客户端,实现过程简单,且数据源的标识具有唯一识别性,所以能够保证匹配的消息队列客户端的准确性和唯一性。
在一种可能的实现方式中,所述消息处理装置根据所述消息队列客户端参数,在消息队列客户端池中查询配置有所述消息队列客户端参数的消息队列客户端;当不存在配置有所述消息队列客户端参数的消息队列客户端,所述消息处理装置根据所述消息队列客户端参数创建所述消息队列客户端;
当存在配置有所述消息队列客户端参数的消息队列客户端,所述消息处理装置将配置有所述消息队列客户端参数的消息队列客户端作为所述消息队列客户端。
在本申请实施例中,消息处理装置通过对消息队列客户端参数与消息队列客户端的配置参数进行比较,判断消息队列客户端池中是否存在匹配的消息队列客户端,而且在不存在的情况下,利用消息队列客户端参数创建匹配的消息队列客户端,保证一定能够得到唯一一个匹配的消息队列客户端进行数据发送。在这种方式中,不需要在消息处理装置发送数据源中的数据之前,预先为消息队列系统中的每个消息队列集群创建消息队列客户端,因而避免提前占用过多的计算资源,提高运行效率。
在一种可能的实现方式中,所述消息队列客户端参数包括所述消息队列集群的地址;所述消息处理装置将所述数据发送至所述消息队列客户端之后,所述消息队列客户端根据所述消息队列客户端参数获取所述消息队列集群的地址;所述消息队列客户端根据所述消息队列集群的地址将所述数据转发至所述消息队列集群。
在一种可能的实现方式中,所述消息队列客户端根据所述消息队列客户端参数中的所述消息队列集群的地址,获取所述消息队列集群的元数据;所述匹配的消息队列客户端根据所述元数据,计算得到所述数据对应的分区;所述匹配的消息队列客户端将所述数据发送到所述分区,其中,所述消息队列集群包括至少一个分区。
在一种可能的实现方式中,所述消息队列客户端将所述数据发送至所述消息队列集群之后,所述消息处理装置将所述消息队列客户端的状态设置为空闲状态。
在本申请实施例中,消息处理装置在消息队列客户端成功发送数据之后,将该消息队列客户端的状态设置为空闲状态,可以及时的表明该消息队列客户端已经完成数据的发送,可以重新被选用,从而发送数据。
在一种可能的实现方式中,若所述消息队列客户端向所述消息队列集群发送所述数据的失败次数超过第一阈值,所述消息处理装置将与所述消息队列客户端匹配的所述消息队列客户端参数的状态设置为无效状态。
在本申请实施例中,消息队列客户端向消息队列集群发送数据的失败次数超过第一阈值后,消息处理装置通过将该消息队列客户端匹配的消息队列客户端参数的状态设置为无效状态,从而避免继续进行无效的发送,减少传输资源的浪费,避免消耗处理器性能。
在一种可能的实现方式中,所述消息队列客户端将所述数据发送至所述消息队列集群之后,所述消息处理装置将所述消息队列客户端向所述消息队列集群发送所述数据的失败次数进行清零。
在本申请实施例中,消息处理装置在消息队列客户端成功的发送数据之后,将之前累积的发送失败次数进行清零,可以实现良好的容错能力,能够兼容消息队列集群故障和网络波动对数据转发的影响。
在一种可能的实现方式中,若所述消息队列客户端处于所述空闲状态时长超过第二阈值,所述消息处理装置将从所述消息队列客户端池中去除所述消息队列客户端。
在本申请实施例中,在消息队列客户端处于空闲状态时长超过第二阈值的情况下,消息处理装置将该消息队列客户端从消息队列客户端池中进行去除释放,可以避免浪费内存资源。
第二方面,本申请提供一种数据传送系统,包括:消息处理装置和消息队列客户端,所述消息处理装置具体用于:获取数据,所述数据包括标识信息,所述标识信息用于关联消息队列系统中用于处理所述数据的消息队列集群,所述消息队列集群包括至少一个消息队列;根据所述标识信息,确定与所述标识信息匹配的消息队列客户端,其中,所述消息队列客户端与所述消息队列集群匹配;将所述数据发送至所述消息队列客户端;所述消息队列客户端,用于将所述数据发送至所述消息队列集群。
在一种可能的实现方式中,所述标识信息包括租户的标识,所述消息队列位于所述租户的实例上。
在一种可能的实现方式中,所述消息处理装置具体用于:根据所述租户的标识,查询路由表,所述路由表包括所述租户的标识以及消息队列客户端参数;从所述路由表中获取所述消息队列客户端参数;根据所述消息队列客户端参数,确定所述消息队列客户端,其中,所述消息队列客户端参数为所述消息队列客户端的配置参数。
在一种可能的实现方式中,所述标识信息包括数据源的标识;所述消息处理装置从所述数据源获取所述数据。
在一种可能的实现方式中,所述消息处理装置具体用于:根据所述数据源的标识,查询路由表,所述路由表包括所述数据源的标识以及消息队列客户端参数;从所述路由表中获取所述消息队列客户端参数;根据所述消息队列客户端参数,确定所述消息队列客户端,其中,所述消息队列客户端参数为所述消息队列客户端的配置参数。
在一种可能的实现方式中,所述消息处理装置具体用于:根据所述消息队列客户端参数,在消息队列客户端池中查询配置有所述消息队列客户端参数的消息队列客户端;当不存在配置有所述消息队列客户端参数的消息队列客户端,所述消息处理装置根据所述消息队列客户端参数创建所述消息队列客户端;
当存在配置有所述消息队列客户端参数的消息队列客户端,所述消息处理装置将配置有所述消息队列客户端参数的消息队列客户端作为所述消息队列客户端。
在一种可能的实现方式中,所述消息队列客户端参数包括所述消息队列集群的地址;所述消息处理装置将所述数据发送至所述消息队列客户端之后,所述消息队列客户端具体用于:根据所述消息队列客户端参数获取所述消息队列集群的地址;根据所述消息队列集群的地址将所述数据转发至所述消息队列集群。
在一种可能的实现方式中,所述消息队列客户端具体用于:根据所述消息队列客户端参数中的所述消息队列集群的地址,获取所述消息队列集群的元数据;根据所述元数据,计算得到所述数据对应的分区;将所述数据发送到所述分区,其中,所述消息队列集群包括至少一个分区。
在一种可能的实现方式中,所述消息队列客户端将所述数据发送至所述消息队列集群之后,所述消息处理装置还用于,将所述消息对列客户端的状态设置为空闲状态。
在一种可能的实现方式中,若所述消息队列客户端向所述消息队列集群发送所述数据的失败次数超过第一阈值,所述消息处理装置还用于,将与所述消息队列客户端匹配的所述消息队列客户端参数的状态设置为无效状态。
在一种可能的实现方式中,所述消息队列客户端将所述数据发送至所述消息队列集群之后,所述消息处理装置还用于,将所述消息队列客户端向所述消息队列集群发送所述数据的失败次数进行清零。
在一种可能的实现方式中,若所述消息队列客户端处于所述空闲状态的时长超过第二阈值,所述消息处理装置还用于,从所述消息队列客户端池中去除所述消息队列客户端。
第三方面,本申请提供了一种计算设备,所述计算设备包括至少一个存储单元和至少一个处理器,所述至少一个存储单元用于存储至少一条指令,所述至少一个处理器执行所述至少一条指令时,所述至少一条指令使得所述处理器执行第一方面以及结合上述第一方面中的任意一种实现方式的方法。
第四方面,本申请提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,当该计算机程序被处理器执行时,可以实现上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的发送数据方法的流程。
第五方面,本申请提供了一种计算机程序产品,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的发送数据发送的流程。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种kafka+flume的数据转发的示意图;
图2是本申请实施例提供的数据转发的场景示意图;
图3是本申请实施例提供的又一种数据转发的场景示意图;
图4是本申请实施例提供的一种发送数据的方法的流程示意图;
图5是本申请实施例提供的又一种数据转发的场景示意图;
图6是本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面结合附图对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
首先,结合附图对本申请中所涉及的部分用语和相关技术进行解释说明,以便于本领域技术人员理解。
数据源产生数据,在实际应用中,数据源可以是各种应用或者服务,各种应用和服务产生大量的数据,例如订单数据、前端万维网(world wide web,Web)数据、安全设备数据、网流数据以及后台日志数据等,这些数据产生或者存在于数据源,数据源通常部署在至少一个数据中心用于提供各个服务的各实例上。
数据传送系统可以实现数据路由和转发功能,如果在数据源和目标系统间实现数据的传递,且目标系统使用的是消息队列系统,如分布式消息队列系统kafka,那么数据传送系统就要完成向kafka消息队列集群发送数据的工作。
数据传送系统包括消息处理装置和消息队列客户端池,消息处理装置获取数据,并根据数据中的标识信息从消息队列客户端池中确定匹配的消息队列客户端,再将数据发送给匹配的消息队列客户端。消息队列客户端池包括至少一个消息队列客户端,其中每个消息队列客户端与消息队列系统中的一个消息队列集群匹配,且消息队列客户端与消息队列集群建立有数据连接,消息队列客户端可以将数据发送至消息队列集群。特别的,如图2所示,消息队列客户端池可以部署在消息处理装置的内部,如图3所示,消息队列客户端池也可以部署在消息处理装置的外部。在本申请实施例中,可选地,消息处理装置开始转发来自数据源的数据之前,消息队列客户端池中不包括消息队列客户端,随着消息处理装置开始向不同的消息队列集群发送数据,数据传送过程中,逐步在消息队列客户端池中创建消息队列客户端。可选地,消息处理装置开始转发来自数据源的数据之后,若消息队列客户端池中的消息队列客户端处于空闲状态的时间超过第二阈值,消息队列客户端将被去除,此时消息队列客户端池中不存在消息队列客户端,直到消息处理装置再转发下一条来自数据源的数据的过程中重新开始在创建消息队列客户端池中创建消息队列客户端。这一具体实现方式在下文中具体介绍。
消息队列系统用于获取来自数据源的数据,消息队列系统获取的数据可供应用或者服务使用。可选地,消息队列系统可以是分布式消息队列系统Kafka。如图2或图3所示,消息队列系统包括至少一个消息队列集群,消息队列集群包括至少一个消息队列。消息队列系统通常部署在数据中心的实例上。至少一个消息队列集群可以部署在同一实例,也可以部署在不同的实例上,类似地,每个消息队列集群的消息队列可以部署在同一实例,也可以部署在不同的实例上。此外,可选地,消息队列系统中的不同消息队列集群可以属于同一租户,也可以属于不同租户,属于不同租户的消息队列集群用于给不同的租户提供来自数据源中的数据。
参见图2,图2是本申请实施例提供的一种数据转发的场景示意图。如图2所示,消息处理装置获取数据源中的数据,可以是从一个数据源或多个数据源中获取数据,消息处理装置在获取到数据源中的数据之后,通过对数据进行解析后确定需要转发到哪个租户中的哪个消息队列集群,然后从消息队列客户端池中选择与该消息队列集群匹配的消息队列客户端将数据转发给该消息队列集群。例如,若确定数据需要转发到租户1中的消息队列集群1中的消息队列1,则从消息处理装置中的消息队列客户端池中选择与消息队列1匹配的消息队列客户端将数据发送给消息队列1,若确定数据需要转发到租户2中的消息队列集群2中的消息队列2’,则从消息处理装置中的消息队列客户端池中选择与消息队列2’匹配的消息队列客户端将数据发送给消息队列2’。可以看出,图2所示的场景中,消息队列客户端池是部署在消息处理装置内部的,当然,消息队列客户端池还可以部署在消息处理装置外部,如图3所示,这里不再赘述。
消息队列系统例如上述kafka系统,包含一个或多个消息队列集群,未在图2所示的场景中绘制出来。消息队列集群接收消息队列客户端发送的数据并进行存储,以便于其它应用使用,可选的,消息队列集群可以部署在租户的实例上。
需要说明的是,上述数据源、数据传送系统(消息处理装置和消息队列客户端池)和消息队列集群可以部署在一个或者多个数据中心的实例上,实例包括虚拟机、容器和物理机,也可以部署在不同数据中心的实例上,本申请对此不作限定。
本申请提供了一种发送数据的方法、装置及相关设备,能够从数据所包含的标识信息确定目标消息队列集群,并通过与目标消息队列集群匹配的消息队列客户端将数据转发给目标消息队列集群。可以避免对数据的无差异转发,减少无用数据的产生,提高安全可靠性。
基于上述,下面对本申请实施例提供的发送数据的方法、装置及相关设备进行描述。参见图4,图4为本申请实施例提供的一种发送数据的方法的流程示意图。如图4所示,该方法包括但不限于以下步骤:
S410:消息处理装置获取数据。
具体地,消息处理装置通过接收专用协议包装的数据包,从而获取到其中携带的数据。例如在kafka系统中,消息处理装置通过接收kafka使用的kafka专门的协议包装的数据包,从而获取到其中包含的数据。该数据包中不仅包括比特流,还包含偏移量(offset)、时间戳等其它信息。
进一步的,消息处理装置对获取到的数据进行解析,得到其中包含的标识信息,该标识信息用于关联消息队列系统中用于处理数据的消息队列集群,该消息队列集群中包括至少一个消息队列。
在一种可能的实现方式中,所述标识信息包括租户的标识,所述消息队列位于所述租户的实例上。
示例性的,消息处理装置获取的数据中包含租户标识(identification,ID)字段,例如“tenant1-01”字段,标记该数据需要发送至租户1的消息队列集群。
在一种可能的实现方式中,所述标识信息包括数据源的标识,所述消息处理装置从所述数据源获取数据。
示例性的,消息处理装置获取到的数据中包含应用标识字段,例如“web-01”字段,标记该数据来源于网络服务器(web service)集群的第一个实例,即消息处理装置从该实例中获取数据,则该数据应转发到用户行为分析的消息队列集群中。
S420:消息处理装置根据所述标识信息,确定与所述标识信息匹配的消息队列客户端。
具体地,所述消息队列客户端池包括至少两个消息队列客户端,每个消息队列客户端与消息队列系统中的一个消息队列集群匹配。
进一步的,消息队列客户端池中的消息队列客户端与消息队列系统中的消息队列集群是一一匹配的。换句话说,消息队列客户端池中的一个消息队列客户端在消息队列系统中存在唯一一个消息队列集群与之匹配,消息处理装置若需要向消息队列集群转发数据,则只能通过消息队列客户端池中与该消息队列集群唯一匹配的消息队列客户端进行转发。示例性的,若消息队列客户端池中存在消息队列客户端A和消息队列客户端B,消息队列系统中存在消息队列集群1和消息队列集群2,其中,消息队列客户端A与消息队列集群1匹配,消息队列客户端B与消息队列集群2匹配,若消息处理装置需要向消息队列集群1转发数据,则只能从消息队列客户端池中选择消息队列客户端A进行数据转发,不能选择消息队列客户端B进行数据转发。
在一种可能的实现方式中,消息处理装置根据所述租户的标识,查询路由表,所述路由表包括所述租户的标识以及与所述租户的标识匹配的消息队列客户端参数;消息处理装置从所述路由表中获取所述消息队列客户端参数;消息处理装置根据所述消息队列客户端参数,从所述消息队列客户端池中确定匹配的消息队列客户端,其中,所述消息队列客户端参数为所述匹配的消息队列客户端的配置参数。
在一种可能的实现方式中,消息处理装置根据所述数据源的标识,查询路由表,所述路由表包括所述数据源的标识以及与所述数据源的标识匹配的消息队列客户端参数;消息处理装置从所述路由表中获取所述消息队列客户端参数;消息处理装置根据所述消息队列客户端参数,从所述消息队列客户端池中确定匹配的消息队列客户端,其中,所述消息队列客户端参数为所述匹配的消息队列客户端的配置参数。
可以理解,路由表中存储的标识可以是租户的标识,也可以是数据源的标识,不管是租户的标识还是数据源的标识,其作用都是与消息队列客户端参数进行匹配,从而可以进一步从消息队列客户端池中确定匹配的消息队列客户端。
可选的,可以针对该路由表设置刷新周期来定时进行刷新,例如,可以将周期设置为1小时,即每隔1个小时刷新一次路由表,特别的,若刷新失败了,可以使用上一个周期获取的结果继续转发,并发送告警消息。
进一步的,路由表记录了租户或数据源的标识与消息队列客户端参数的映射关系,该消息队列客户端参数可以是匹配的消息队列客户端的全部配置参数,也可以是匹配的消息队列客户端的部分配置参数。应理解,消息队列客户端较为复杂,其在构造的时候需要使用29个配置参数,某些情况下,为了实现更复杂的功能,其可能还会使用更多的配置参数,甚至达到50个。可选的,多数配置参数都可以使用默认值,但是有两个配置参数是必须要明确的,即数据匹配的目标消息队列集群的地址及协议和数据对应的目标主题(topic),主题就是一个数据流的名称,其按照分区(partition)来分布,一个主题可以有多个分区。此外,如果在构造过程中使用的是安全套接层(secure sockets layer,SSL)协议,则还需要额外提供3个证书认证相关的配置参数,如果使用的是简单认证和安全(simpleauthentication and security layer SSL,SASL_SSL)协议,则需要提供更多的配置参数。
可选的,路由表中与租户或数据源的标识匹配的消息队列客户端参数一般可以仅包含目标消息队列集群的引导地址和主题,如果启用SSL通道并要求客户端提供认证,还会包含证书的密钥库(keystore)存储位置、密钥库的密码和私钥密码,可以理解,通过路由表中的消息队列客户端参数,可以唯一确定一个匹配的消息队列客户端,进而唯一确定一个消息队列集群。
值得说明的是,路由表中所维护的消息队列客户端参数对应的状态包括工作状态(enable)和无效状态(disable)。消息处理装置在解析得到标识信息之后,需要向路由表请求与标识信息匹配的消息队列客户端参数,若与该标识信息匹配的消息队列客户端参数的状态为无效状态,则路由表不会向消息处理装置返回消息队列客户端参数,消息处理装置也就不能向消息队列客户端池请求消息队列客户端或者构造新的消息队列客户端。
在一种可能的实现方式中,消息处理装置根据所述消息队列客户端参数,在所述消息队列客户端池中查询配置参数包括所述消息队列客户端参数的消息队列客户端;若不存在所述配置参数包括所述消息队列客户端参数的消息队列客户端,所述消息处理装置根据所述消息队列客户端参数创建所述匹配的消息队列客户端。
具体地,消息处理装置在查询路由表获取到与标识信息匹配的消息队列客户端参数后,在消息队列客户端池中进行查询,将该消息队列客户端参数与消息队列客户端池中各个消息队列客户端的配置参数进行一一比对。若每一个消息队列客户端的配置参数都不包括该消息队列客户端参数,则说明在消息队列客户端池中不存在与该消息队列客户端参数相匹配的消息队列客户端,则需要根据该消息队列客户端参数在消息队列客户端池中重新创建一个与该消息队列客户端参数对应匹配的消息队列客户端;若存在一个消息队列客户端的配置参数完全包括该消息队列客户端参数,则进一步查询该消息队列客户端的状态,若与该消息队列客户端参数匹配的消息队列客户端的状态是空闲状态(idle),则说明可以利用这个消息队列客户端发送数据,若该消息队列客户端的状态不是空闲状态,例如是工作状态,则不可以利用这个消息队列客户端发送数据。可选的,可以是根据该消息队列客户端参数在消息队列客户端池中再重新创建一个与该消息队列客户端参数匹配,且状态为空闲状态的消息队列客户端。
当消息处理装置首次转发来自数据源的数据,此时消息队列客户端池中不存在消息队列客户端,消息处理装置即根据该数据携带的标识信息,查询路由表获取消息队列客户端参数,根据获取的消息队列客户端参数创建消息队列客户端,该创建的消息队列客户端为第一个消息队列客户端池中的第一个消息队列客户端。
应理解,在将消息队列客户端参数与各个消息队列客户端的配置参数进行比对时,是通过判断消息队列客户端的配置参数是否包含所有的消息队列客户端参数来确定是否包括该消息队列客户端参数,若消息队列客户端的配置参数仅包括一部分消息队列客户端参数,而不是全部,也表示消息队列客户端的配置参数不包括该消息队列客户端参数。示例性的,若消息队列客户端参数只有1个,且每个消息队列客户端的配置参数中都不包含这一个参数,则表示每个消息队列客户端的配置参数均不包括该消息队列客户端参数;若消息队列客户端参数有n个,n为大于1的正整数,每个消息队列客户端的配置参数都不完全包含这全部n个参数,但是可能存在某一个或某几个消息队列客户端的配置参数包括这n个参数中的m个,m为小于n的正整数,则也表示每个消息队列客户端的配置参数均不包括该消息队列客户端参数。
在一种可能的实现方式中,消息处理装置对所述消息队列客户端池中的消息队列客户端的生命周期参数进行配置,所述配置用于对所述消息队列客户端池中的消息队列客户端的生命周期管理,所述配置可以包括最大闲置时间配置、最大数量配置、最大闲置对象配置和最大等待时长配置。
具体地,消息处理装置可以针对消息队列客户端池中的消息队列客户端设置最大闲置时间,即消息队列客户端在空闲状态下,在消息队列客户端池中可以存在的最大时间,例如可以将最大闲置时间设置为10分钟,表示若某个消息队列客户端在空闲状态下的时间达到十分钟时,该消息队列客户端将会被释放以避免浪费内存资源。可选的,消息处理装置还可以设置最大消息队列客户端数量个数,例如设置为10个,则表示消息队列客户端池最多只允许存在10个消息队列客户端,避免同时存在过多的消息队列客户端,占用过多的内存资源,影响性能;数据传送装置还可以设置单个标识信息对应的最大消息队列客户端个数,即一个消息队列集群最多可以有多少个消息队列客户端在客户端池内,该值可以配置为10,表示一个消息队列集群最多可以有10个对应的消息队列客户端在消息队列客户端池内;消息处理装置还可以设置单个标识信息对应的消息队列客户端最大闲置个数,由于消息队列客户端发送数据的过程主要是异步过程,所以该值不需要设置过大,一般设置为1;消息处理装置还可以设置最大等待时长,若消息处理装置向消息队列客户端池请求消息队列客户端时,等待的时长超过该最大等待时长,则说明存在异常,并发送异常消息告警。
可以理解,通过对消息队列客户端池中的消息队列客户端的生命周期参数进行配置可以实现对消息队列客户端池中的大量消息队列客户端的生命周期管理,能够克服现有方案中只能支持单一或少量消息队列客户端的不足,且能减少内存资源的浪费。
S430:消息处理装置将所述数据发送至所述消息队列客户端。
可选的,所述消息队列客户端参数中可以包括消息队列集群的地址,消息处理装置将所述数据发送至匹配的消息队列客户端之后,该匹配的消息队列客户端根据所述消息队列客户端参数获取所述消息队列集群的地址,再根据所述消息队列集群的地址将所述数据转发至所述消息队列集群。
S440:所述消息队列客户端将所述数据发送到所述消息队列集群。
具体地,所述匹配的消息队列客户端与所述消息队列集群建立有数据连接,消息队列客户端在向消息队列集群发送数据时,数据是异步发送的,而且在发送完毕后将发送结果反馈给路由表,发送结果包括发送成功或发送失败。
在一种可能的实现方式中,所述匹配的消息队列客户端根据所述消息队列客户端参数中包括的所述消息队列集群的地址,获取所述消息队列集群的元数据;根据所述元数据,计算得到所述数据对应的分区;将数据发送到所述对应的分区,其中,所述消息队列集群包括至少一个分区。
具体地,元数据记录的是主题的详细信息,例如主题分区的主节点、复制节点等映射关系,而且在数据发送的过程中,元数据决定了数据具体需要发送到消息队列集群中的哪个节点,所以在首次进行发送数据的时候一定要先获取元数据,元数据和具体一个消息队列集群强相关,因此一个消息队列客户端只能向一个消息队列集群中的一个消息队列(即主题)发送数据。此外,元数据可以周期性进行更新,可以通过设置周期进行元数据的更新,也可以使用默认周期实现元数据的更新。
进一步的,消息队列客户端发送数据前可以先判断其保存的元数据是否可用,若不可用,则使用消息队列客户端参数中包括的消息队列集群的地址来获取元数据。消息队列客户端在获取到元数据之后,根据元数据提供的信息,计算得到数据对应的分区,然后将数据写入到消息缓冲区,最后消息队列客户端的发送(sender)线程将缓冲区的数据发送到计算得到的分区中。值得说明的是,一个消息队列集群可以包括多个消息队列,即多个主题,而一个主题可以包括多个分区。
可选的,消息队列客户端在成功完成发送数据之后,消息处理装置将会把消息队列客户端的状态从工作状态设置为空闲状态,以表明该消息队列客户端目前已经完成数据发送,可以重新被选用,从而继续发送数据。
在一种可能的实现方式中,若消息队列客户端向消息队列集群发送数据的失败次数超过第一阈值,消息处理装置将与消息队列客户端匹配的消息队列客户端参数的状态设置为无效状态。
具体地,消息队列客户端在发送数据时,每失败一次,将失败结果反馈给路由表,路由表则会在记录的该消息队列客户端对应的消息队列客户端参数发送失败次数上增加一次。若该消息队列客户端参数对应的消息队列客户端发送数据的失败次数达到第一阈值,则将该消息队列客户端参数对应的状态设置为无效状态。例如,第一阈值为8,则失败次数达到8次,则就会将消息队列客户端参数对应的状态设置为无效状态,并且发送告警消息。在这种情况下,表示消息队列集群不可用,即消息队列集群不能成功接收数据,消息队列客户端将会停止发送数据到该消息队列集群,在停止期间,所有匹配该消息队列集群的数据都将会被过滤掉。
可选的,消息队列客户端成功的将数据发送至消息队列集群之后,将成功结果反馈给路由表,消息处理装置将之前累积的发送失败次数清零,且保持路由表中存储的消息队列客户端参数对应的状态为工作状态。
具体地,若消息队列客户端参数对应的消息队列客户端在经过若干次发送失败后,成功的将数据发送到目标消息队列集群且失败次数未超过第一阈值,例如,消息队列客户端在经过4次发送失败后,在第5次发送的时候成功的将数据发送到目标消息队列集群,这时对应的失败次数小于预设值8次,则会将已记录的该消息队列客户端对应的消息队列客户端参数发送失败次数进行清零,即这时会将之前失败的4次进行清零,并且保持该消息队列客户端参数对应的状态为工作状态。
值得说明的是,路由表刷新后,其存储的消息队列客户端参数对应的状态也会进行刷新,所有消息队列客户端参数对应的状态都会被刷新到工作状态。例如,在刷新之前,若某个消息队列客户端参数对应的状态为无效状态,则在刷新之后,其状态将变为工作状态,针对该消息队列客户端参数匹配的消息队列集群的数据转发得到恢复。
可以看出,通过对路由表存储的消息队列客户端参数的状态的维护和管理,可以实现良好的容错能力,能够兼容目标消息队列集群故障和网络波动对数据转发的影响,而且还提供了故障恢复场景(即通过刷新状态表来进行恢复)。
为了更好的理解本申请实施例,下面将以数据传送系统为flume为例,进行进一步的阐述说明。
参见图5,图5是本申请实施例提供的又一种数据转发的场景示意图。如图5所示,数据传送系统包括数据源处理逻辑单元510、通道逻辑单元520、消息处理装置530、消息队列客户端池540。此外,数据传送系统还存储有路由表550。具体地,数据源处理逻辑单元510可以是flume中的source插件,通道逻辑单元520可以是channel插件,消息处理装置530即前述图2中的消息处理装置,消息队列客户端池540即前述图2中的消息队列客户端池。数据源处理单元510对接数据源的数据输出组件,从数据源获取数据,在获取到数据之后将数据写入通道逻辑单元520,通道逻辑单元520本质上是一个数据缓冲逻辑单元,是为了在数据源处理单元510和消息处理装置530之间建立缓冲,以适应数据源处理单元510和消息处理装置530处理数据速度不相等的情况,通道逻辑单元520一般包括内存型通道逻辑单元和文件型通道逻辑单元,内存型通道逻辑单元读写数据较快,但是易缺失,不能长久保存,文件型通道逻辑单元读写数据较慢,但是可以长久保存,不容易缺失。消息处理装置530从通道逻辑单元520中获取数据,进行解析,根据解析得到数据中包含的标识信息,消息处理装置530查询路由表550,路由表550中存储有标识信息与消息队列客户端参数的映射关系,获取路由表550中存储的与标识信息匹配的且状态为工作状态的消息队列客户端参数。消息处理装置530在获取到工作状态的消息队列客户端参数之后,向消息队列客户端池540请求与消息队列客户端参数匹配的消息队列客户端。消息队列客户端池540查询其中是否存在配置参数包括消息队列客户端参数的消息队列客户端,若存在,消息队列客户端池540向消息处理装置630返回匹配的消息队列客户端,若不存在,消息队列客户端池540根据消息队列客户端参数,创建一个新的消息队列客户端,并将该新的消息队列客户端加入消息队列客户端池540中,然后向消息处理装置630返回新创建的消息队列客户端。值得说明的是,消息队列客户端池540可以对其中的消息队列客户端的生命周期进行管理,避免内存资源的浪费。消息处理装置530使用消息队列客户端池540返回的消息队列客户端向消息队列集群发送数据,若成功发送到消息队列集群,且发送失败的次数小于第一阈值,则将之前记录的发送失败的次数清零,并保持路由表550中存储的与消息队列客户端匹配的消息队列客户端参数的状态为工作状态,若发送失败的次数达到或超过第一阈值,消息处理装置530停止向该消息队列集群发送数据,并将路由表550中存储的与消息队列客户端匹配的消息队列客户端参数的状态设置为无效状态。需要说明的是,路由表550会定时进行刷新,路由表550刷新后,其存储的所有消息队列客户端参数的状态都会被刷新为使能态,消息处理装置530可以恢复向之前已经停止发送数据的消息队列集群发送数据。消息处理装置530在完成数据发送之后,将消息队列客户端的状态设置为空闲状态,以表明该消息队列客户端目前已经完成数据发送,可以重新被选用,从而继续发送数据。
具体地,关于数据转发的具体过程可以参照上述图1至图4的描述,在此不再赘述。
应理解,上述数据传送系统的结构以及针对数据源的数据的转发过程仅仅作为一种示例,不应构成具体的限定,可以根据需要对数据传送系统中的各个单元进行增加、减少或合并。此外,数据传送系统中的各个单元的操作和/或功能分别为了实现图1至图4中的方法的相应流程。
上述详细阐述了本申请实施例的方法,为了便于更好的实施本申请实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关设备。
本申请提供了一种数据传送系统,包括:消息处理装置和消息队列客户端池,所述消息处理装置具体用于:获取数据,所述数据包括标识信息,所述标识信息用于关联消息队列系统中用于处理数据的消息队列集群,所述消息队列集群包括至少一个消息队列;根据所述标识信息,从消息队列客户端池中确定匹配的消息队列客户端,其中,所述消息队列客户端池包括至少两个消息队列客户端,每个消息队列客户端与所述消息队列系统中的一个消息队列集群匹配;将所述数据发送至匹配的消息队列客户端;所述消息队列客户端池,用于存储所述消息队列客户端,所述消息队列客户端与所述消息队列集群建立有数据连接,所述匹配的消息队列客户端将所述数据发送至所述消息队列集群。
在一种可能的实现方式中,所述标识信息包括租户的标识,所述消息队列位于所述租户的实例上。
在一种可能的实现方式中,所述消息处理装置根据所述租户的标识,查询路由表,所述路由表包括所述租户的标识以及消息队列客户端参数;所述消息处理装置从所述路由表中获取所述消息队列客户端参数;所述消息处理装置根据所述消息队列客户端参数,从所述消息队列客户端池中确定所述匹配的消息队列客户端,其中,所述消息队列客户端参数为所述匹配的消息队列客户端的配置参数。
在一种可能的实现方式中,所述标识信息包括数据源的标识;所述消息处理装置获取数据,包括:所述消息处理装置从所述数据源获取所述数据。
在一种可能的实现方式中,所述消息处理装置根据所述数据源的标识,查询路由表,所述路由表包括所述数据源的标识以及消息队列客户端参数;所述消息处理装置从所述路由表中获取所述消息队列客户端参数;所述消息处理装置根据所述消息队列客户端参数,从所述消息队列客户端池中确定所述匹配的消息队列客户端,其中,所述消息队列客户端参数为所述匹配的消息队列客户端的配置参数。
在一种可能的实现方式中,所述消息处理装置根据所述消息队列客户端参数,在所述消息队列客户端池中查询配置参数包括所述消息队列客户端参数的消息队列客户端;若不存在所述配置参数包括所述消息队列客户端参数的消息队列客户端,所述消息处理装置根据所述消息队列客户端参数创建所述匹配的消息队列客户端。
在一种可能的实现方式中,所述消息队列客户端参数包括所述消息队列集群的地址;所述消息处理装置将所述数据发送至匹配的消息队列客户端之后,所述匹配的消息队列客户端具体用于:根据所述消息队列客户端参数获取所述消息队列集群的地址;根据所述消息队列集群的地址将所述数据转发至所述消息队列集群。
在一种可能的实现方式中,所述匹配的消息队列客户端根据所述消息队列客户端参数中包括的所述消息队列集群的地址,获取所述消息队列集群的元数据;所述匹配的消息队列客户端根据所述元数据,计算得到所述数据对应的分区;所述匹配的消息队列客户端将所述数据发送到所述对应的分区,其中,所述消息队列集群包括至少一个分区。
在一种可能的实现方式中,所述匹配的消息队列客户端将所述数据发送至所述消息队列集群之后,所述消息处理装置还用于,将所述匹配的消息对列客户端的状态设置为空闲状态。
在一种可能的实现方式中,若所述匹配的消息队列客户端向所述消息队列集群发送所述数据的失败次数超过第一阈值,所述消息处理装置还用于,将与所述匹配的消息队列客户端匹配的所述消息队列客户端参数的状态设置为无效状态。
在一种可能的实现方式中,所述匹配的消息队列客户端将所述数据发送至所述消息队列集群之后,所述消息处理装置还用于,将所述匹配的消息队列客户端向所述消息队列集群发送所述数据的失败次数进行清零。
在一种可能的实现方式中,若所述匹配的消息队列客户端处于所述空闲状态的时长超过第二阈值,所述消息处理装置还用于,从所述消息队列客户端池中去除所述匹配的消息队列客户端。
可以理解,在本申请实施例中,为了将至少两条数据中的每条数据发送至匹配的消息队列集群,消息处理装置根据至少两条数据中携带的不同的标识信息,确定每条数据的标识信息匹配的消息队列客户端,通过匹配的消息队列客户端完成数据的发送,至少两条数据匹配的至少两个消息队列集群各不相同。本申请的实施例实现将不同的数据发往消息队列系统中的不同消息队列,减少数据接收端接收到大量无用的数据,此外,还可以控制不同消息队列集群的对数据源中的数据的权限管理,将不同标识信息的数据发往不同的消息集群,尤其是当消息队列系统中的不同消息集群属于不同的租户,或者数据来自不同的数据源时,避免传送数据时数据源中的所有数据均发往所有的消息队列系统,提高数据的安全可靠性。
参见图6,图6是本申请实施例提供的一种计算设备的结构示意图。如图6所示,计算设备可以包括处理单元710和通信接口720,处理单元710用于执行计算设备上运行的操作系统以及各种软件程序所定义的功能,例如,上述图2、图3、或者图5中所示出的数据传送系统上各种组件的功能,具体地,例如,处理单元710用于实现消息处理装置的功能,或者用于实现消息队列客户端池的功能。值得说明的是,消息处理装置和消息队列客户端池可以同时部署在一个计算设备上,也可以部署在不同的计算设备上,消息处理装置或消息队列客户端池也可以单独部署在多个计算设备上。即可以是一个计算设备上的处理单元实现消息处理装置的功能,另一个计算设备上的处理单元实现消息队列客户端池的功能,或者是,多个计算设备上的处理单元实现消息处理装置或消息队列客户端池的功能。通信接口720用于与其他设备进行通信交互,其他设备可以是其它计算设备,具体地,通信接口720可以是网络适配卡。可选地,该计算设备还可以包括输入/输出接口730,输入/输出接口730连接有输入/输出设备,用于接收输入的信息,输出操作结果。输入/输出接口730可以为鼠标、键盘、显示器、或者光驱等。可选地,该计算设备还可以包括辅助存储器740,一般也称为外存,辅助存储器740的存储介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如光盘)、或者半导体介质(例如固态硬盘)等。处理单元710可以有多种具体实现形式,例如处理单元710可以包括处理器711和存储单元,存储单元可以是内存712,处理器711根据内存712中存储的程序单元执行相关的操作,程序单元可以是指令,或称计算机指令,处理器711可以为中央处理器(CPU)或图像处理器(graphics processing unit,GPU),处理器711可以是单核处理器或多核处理器。处理单元710也可以单独采用内置处理逻辑的逻辑器件来实现,例如现场可编程门阵列(field programmable gate array,FPGA)或数字信号处理器(digitalsignal processor,DSP)等。此外,计算设备可能包含相比于图6展示的更多或者更少的组件,或者有不同的组件配置方式。
应理解,上述图6所示的计算设备针对数据的转发过程可以参照上述图1至图5的相关描述,为了简洁,在此不再赘述。
本申请还提供一种计算机存储介质,其中,所述计算机存储介质存储有计算机程序,当该计算机程序被处理器执行时,可以实现上述方法实施例中记载的任意一种的部分或全部步骤。
本发明实施例还提供一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行任意一种发送数据的方法的部分或全部步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
Claims (26)
1.一种发送数据的方法,其特征在于,包括:
消息处理装置获取数据,所述数据包括标识信息,所述标识信息用于关联消息队列系统中用于处理所述数据的消息队列集群,所述消息队列集群包括至少一个消息队列;
所述消息处理装置根据所述标识信息,确定与所述标识信息匹配的消息队列客户端,其中,所述消息队列客户端与所述消息队列集群匹配;
所述消息处理装置将所述数据发送至所述消息队列客户端,其中,所述数据从所述消息队列客户端发送至所述消息队列集群。
2.如权利要求1所述的方法,其特征在于,所述标识信息包括租户的标识,所述消息队列集群位于所述租户的实例上。
3.如权利要求2所述的方法,其特征在于,所述消息处理装置根据所述标识信息,确定所述消息队列客户端,包括:
所述消息处理装置根据所述租户的标识,查询路由表,所述路由表包括所述租户的标识以及消息队列客户端参数;
所述消息处理装置从所述路由表中获取所述消息队列客户端参数;
所述消息处理装置根据所述消息队列客户端参数,确定所述消息队列客户端,其中,所述消息队列客户端参数为所述消息队列客户端的配置参数。
4.如权利要求1所述的方法,其特征在于,所述标识信息包括数据源的标识;所述消息处理装置获取数据,包括:所述消息处理装置从所述数据源获取所述数据。
5.如权利要求4所述的方法,其特征在于,所述消息处理装置根据所述标识信息,确定所述消息队列客户端,包括:
所述消息处理装置根据所述数据源的标识,查询路由表,所述路由表包括所述数据源的标识以及消息队列客户端参数;
所述消息处理装置从所述路由表中获取所述消息队列客户端参数;
所述消息处理装置根据所述消息队列客户端参数,确定所述消息队列客户端,其中,所述消息队列客户端参数为所述消息队列客户端的配置参数。
6.如权利要求3或5所述的方法,其特征在于,所述消息处理装置根据所述消息队列客户端参数,确定所述消息队列客户端,包括:
所述消息处理装置根据所述消息队列客户端参数,在消息队列客户端池中查询配置有所述消息队列客户端参数的消息队列客户端;
当不存在配置有所述消息队列客户端参数的消息队列客户端,所述消息处理装置根据所述消息队列客户端参数创建所述消息队列客户端;
当存在配置有所述消息队列客户端参数的消息队列客户端,所述消息处理装置将配置有所述消息队列客户端参数的消息队列客户端作为所述消息队列客户端。
7.如权利要求3、5或6所述的方法,其特征在于,所述消息队列客户端参数包括所述消息队列集群的地址;所述消息处理装置将所述数据发送至所述消息队列客户端之后,所述方法还包括:
所述消息队列客户端根据所述消息队列客户端参数获取所述消息队列集群的地址;
所述消息队列客户端根据所述消息队列集群的地址将所述数据转发至所述消息队列集群。
8.如权利要求7所述的方法,其特征在于,所述消息队列客户端根据所述消息队列集群的地址将所述数据转发至所述消息队列集群,包括:
所述匹配的消息队列客户端根据所述消息队列客户端参数中的所述消息队列集群的地址,获取所述消息队列集群的元数据;
所述匹配的消息队列客户端根据所述元数据,计算得到所述数据对应的分区;
所述匹配的消息队列客户端将所述数据发送到所述分区,其中,所述消息队列集群包括至少一个分区。
9.如权利要求3、5或6-8任一项所述的方法,其特征在于,所述消息队列客户端将所述数据发送至所述消息队列集群之后,所述方法还包括:
所述消息处理装置将所述消息队列客户端的状态设置为空闲状态。
10.如权利要求3、5或6-8任一项所述的方法,其特征在于,若所述消息队列客户端向所述消息队列集群发送所述数据的失败次数超过第一阈值,所述消息处理装置将与所述消息队列客户端匹配的所述消息队列客户端参数的状态设置为无效状态。
11.如权利要求9所述的方法,其特征在于,所述消息队列客户端将所述数据发送至所述消息队列集群之后,所述方法还包括:
所述消息处理装置将所述消息队列客户端向所述消息队列集群发送所述数据的失败次数进行清零。
12.如权利要求9-11任一项所述的方法,其特征在于,所述方法还包括:
若所述消息队列客户端处于所述空闲状态时长超过第二阈值,所述消息处理装置将从所述消息队列客户端池中去除所述消息队列客户端。
13.一种数据传送系统,其特征在于,包括:消息处理装置和消息队列客户端,
所述消息处理装置具体用于:
获取数据,所述数据包括标识信息,所述标识信息用于关联消息队列系统中用于处理所述数据的消息队列集群,所述消息队列集群包括至少一个消息队列;
根据所述标识信息,确定与所述标识信息匹配的消息队列客户端,其中,所述消息队列客户端与所述消息队列集群匹配;
将所述数据发送至所述消息队列客户端;
所述消息队列客户端,用于将所述数据发送至所述消息队列集群。
14.如权利要求13所述的数据传送系统,其特征在于,所述标识信息包括租户的标识,所述消息队列位于所述租户的实例上。
15.如权利要求14所述的数据传送系统,其特征在于,所述消息处理装置具体用于:
根据所述租户的标识,查询路由表,所述路由表包括所述租户的标识以及消息队列客户端参数;
从所述路由表中获取所述消息队列客户端参数;
根据所述消息队列客户端参数,确定所述消息队列客户端,其中,所述消息队列客户端参数为所述消息队列客户端的配置参数。
16.如权利要求13所述的数据传送系统,其特征在于,所述标识信息包括数据源的标识;所述消息处理装置从所述数据源获取所述数据。
17.如权利要求16所述的数据传送系统,其特征在于,所述消息处理装置具体用于:
根据所述数据源的标识,查询路由表,所述路由表包括所述数据源的标识以及消息队列客户端参数;
从所述路由表中获取所述消息队列客户端参数;
根据所述消息队列客户端参数,确定所述消息队列客户端,其中,所述消息队列客户端参数为所述消息队列客户端的配置参数。
18.如权利要求15或17所述的数据传送系统,其特征在于,所述消息处理装置具体用于:
根据所述消息队列客户端参数,在消息队列客户端池中查询配置有所述消息队列客户端参数的消息队列客户端;
当不存在配置有所述消息队列客户端参数的消息队列客户端,所述消息处理装置根据所述消息队列客户端参数创建所述消息队列客户端;
当存在配置有所述消息队列客户端参数的消息队列客户端,所述消息处理装置将配置有所述消息队列客户端参数的消息队列客户端作为所述消息队列客户端。
19.如权利要求15、17或18所述的数据传送系统,其特征在于,所述消息队列客户端参数包括所述消息队列集群的地址;所述消息处理装置将所述数据发送至所述消息队列客户端之后,所述消息队列客户端具体用于:
根据所述消息队列客户端参数获取所述消息队列集群的地址;
根据所述消息队列集群的地址将所述数据转发至所述消息队列集群。
20.如权利要求19所述的数据传送系统,其特征在于,所述消息队列客户端具体用于:
根据所述消息队列客户端参数中的所述消息队列集群的地址,获取所述消息队列集群的元数据;
根据所述元数据,计算得到所述数据对应的分区;
将所述数据发送到所述分区,其中,所述消息队列集群包括至少一个分区。
21.如权利要求13、17或18-20任一项所述的数据传送系统,其特征在于,所述消息队列客户端将所述数据发送至所述消息队列集群之后,所述消息处理装置还用于,将所述消息对列客户端的状态设置为空闲状态。
22.如权利要求13、17或18-20任一项所述的数据传送系统,其特征在于,若所述消息队列客户端向所述消息队列集群发送所述数据的失败次数超过第一阈值,所述消息处理装置还用于,将与所述消息队列客户端匹配的所述消息队列客户端参数的状态设置为无效状态。
23.如权利要求21所述的数据传送系统,其特征在于,所述消息队列客户端将所述数据发送至所述消息队列集群之后,所述消息处理装置还用于,将所述消息队列客户端向所述消息队列集群发送所述数据的失败次数进行清零。
24.如权利要求21至23任一项所述的数据传送系统,其特征在于,若所述消息队列客户端处于所述空闲状态的时长超过第二阈值,所述消息处理装置还用于,从所述消息队列客户端池中去除所述消息队列客户端。
25.一种计算设备,其特征在于,所述计算设备包括至少一个存储单元和至少一个处理器,所述至少一个存储单元用于存储至少一条指令,所述至少一个处理器执行所述至少一条指令时,所述至少一条指令使得所述处理器执行权利要求1-12任一项所述的方法。
26.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,当所述计算机程序被处理器执行时实现权力要求1-12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910282768.5A CN110071873A (zh) | 2019-04-09 | 2019-04-09 | 一种发送数据的方法、装置及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910282768.5A CN110071873A (zh) | 2019-04-09 | 2019-04-09 | 一种发送数据的方法、装置及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110071873A true CN110071873A (zh) | 2019-07-30 |
Family
ID=67367342
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910282768.5A Pending CN110071873A (zh) | 2019-04-09 | 2019-04-09 | 一种发送数据的方法、装置及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110071873A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110417898A (zh) * | 2019-07-31 | 2019-11-05 | 拉扎斯网络科技(上海)有限公司 | 一种数据传输方法、装置、客户端、电子设备及存储介质 |
CN110505162A (zh) * | 2019-08-08 | 2019-11-26 | 腾讯科技(深圳)有限公司 | 消息传输方法、装置及电子设备 |
CN110891032A (zh) * | 2019-11-27 | 2020-03-17 | 佛山市蠢材科技有限公司 | 一种人脸数据并行下发方法、装置及电子设备 |
CN110912808A (zh) * | 2019-11-29 | 2020-03-24 | 三一重工股份有限公司 | 消息订阅方法、装置、系统、设备终端和可读存储介质 |
CN110928491A (zh) * | 2019-10-30 | 2020-03-27 | 平安科技(深圳)有限公司 | 存储分区动态选择方法、系统、计算机设备及存储介质 |
CN111556128A (zh) * | 2020-04-24 | 2020-08-18 | 深圳警翼软件技术有限公司 | 一种数据传输方法和系统 |
CN112307487A (zh) * | 2019-08-02 | 2021-02-02 | 中国电信股份有限公司 | 消息处理方法和装置、消息集群服务器 |
CN113067883A (zh) * | 2021-03-31 | 2021-07-02 | 建信金融科技有限责任公司 | 数据传输方法、装置、计算机设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140172991A1 (en) * | 2012-12-14 | 2014-06-19 | International Business Machines Corporation | Low latency messaging chat server |
CN106055630A (zh) * | 2016-05-27 | 2016-10-26 | 北京小米移动软件有限公司 | 日志存储的方法及装置 |
CN108712332A (zh) * | 2018-05-17 | 2018-10-26 | 华为技术有限公司 | 一种通信方法、系统和装置 |
CN109412970A (zh) * | 2018-09-30 | 2019-03-01 | 江苏满运软件科技有限公司 | 数据流转系统、数据流转方法、电子设备和存储介质 |
CN109495523A (zh) * | 2017-09-11 | 2019-03-19 | 北京金山云网络技术有限公司 | 管理指令下发方法、装置、电子设备及存储介质 |
-
2019
- 2019-04-09 CN CN201910282768.5A patent/CN110071873A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140172991A1 (en) * | 2012-12-14 | 2014-06-19 | International Business Machines Corporation | Low latency messaging chat server |
CN106055630A (zh) * | 2016-05-27 | 2016-10-26 | 北京小米移动软件有限公司 | 日志存储的方法及装置 |
CN109495523A (zh) * | 2017-09-11 | 2019-03-19 | 北京金山云网络技术有限公司 | 管理指令下发方法、装置、电子设备及存储介质 |
CN108712332A (zh) * | 2018-05-17 | 2018-10-26 | 华为技术有限公司 | 一种通信方法、系统和装置 |
CN109412970A (zh) * | 2018-09-30 | 2019-03-01 | 江苏满运软件科技有限公司 | 数据流转系统、数据流转方法、电子设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
DAN WANG ,TAO SUN (CHINA MOBILE): "Service-based Architecture in 5G", 《3GPP》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110417898A (zh) * | 2019-07-31 | 2019-11-05 | 拉扎斯网络科技(上海)有限公司 | 一种数据传输方法、装置、客户端、电子设备及存储介质 |
CN110417898B (zh) * | 2019-07-31 | 2022-02-22 | 拉扎斯网络科技(上海)有限公司 | 一种数据传输方法、装置、客户端、电子设备及存储介质 |
CN112307487A (zh) * | 2019-08-02 | 2021-02-02 | 中国电信股份有限公司 | 消息处理方法和装置、消息集群服务器 |
CN110505162A (zh) * | 2019-08-08 | 2019-11-26 | 腾讯科技(深圳)有限公司 | 消息传输方法、装置及电子设备 |
CN110505162B (zh) * | 2019-08-08 | 2022-07-26 | 腾讯科技(深圳)有限公司 | 消息传输方法、装置及电子设备 |
WO2021082073A1 (zh) * | 2019-10-30 | 2021-05-06 | 平安科技(深圳)有限公司 | 存储分区动态选择方法、系统、计算机设备及存储介质 |
CN110928491A (zh) * | 2019-10-30 | 2020-03-27 | 平安科技(深圳)有限公司 | 存储分区动态选择方法、系统、计算机设备及存储介质 |
CN110891032A (zh) * | 2019-11-27 | 2020-03-17 | 佛山市蠢材科技有限公司 | 一种人脸数据并行下发方法、装置及电子设备 |
CN110912808A (zh) * | 2019-11-29 | 2020-03-24 | 三一重工股份有限公司 | 消息订阅方法、装置、系统、设备终端和可读存储介质 |
CN110912808B (zh) * | 2019-11-29 | 2021-04-13 | 三一重工股份有限公司 | 消息订阅方法、装置、系统、设备终端和可读存储介质 |
CN111556128A (zh) * | 2020-04-24 | 2020-08-18 | 深圳警翼软件技术有限公司 | 一种数据传输方法和系统 |
CN111556128B (zh) * | 2020-04-24 | 2023-04-07 | 深圳警翼软件技术有限公司 | 一种数据传输方法和系统 |
CN113067883A (zh) * | 2021-03-31 | 2021-07-02 | 建信金融科技有限责任公司 | 数据传输方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110071873A (zh) | 一种发送数据的方法、装置及相关设备 | |
CN111787073B (zh) | 一种统一服务的限流熔断平台及其方法 | |
CN112313916B (zh) | 一种融合区块链技术拟态存储防篡改日志的方法及系统 | |
US11930107B2 (en) | Entangled links, transactions and trees for distributed computing systems | |
CN105959151B (zh) | 一种高可用的流式处理系统及方法 | |
Meng et al. | State monitoring in cloud datacenters | |
CN103024060B (zh) | 一种开放式云计算大规模集群监控系统及方法 | |
RU2419986C2 (ru) | Объединение многострочных протокольных вхождений | |
EP2486698B1 (en) | Method and system for reconstructing transactions in a communication network | |
CN102984501A (zh) | 一种网络视频录像集群系统 | |
CN101426025B (zh) | 远程复制网络 | |
KR20040093441A (ko) | 네트워크 장치들을 발견하기 위한 방법 및 기구 | |
CN107818120A (zh) | 基于大数据的数据处理方法和装置 | |
CN103581307A (zh) | 一种基于集群的发布/订阅系统及其可靠性保障方法 | |
Moniz et al. | RITAS: Services for randomized intrusion tolerance | |
CN111782620A (zh) | 一种信用链路自动跟踪平台及其方法 | |
US20130227568A1 (en) | Systems and methods involving virtual machine host isolation over a network | |
CN101605132A (zh) | 一种网络数据流识别方法 | |
CN112737800A (zh) | 服务节点故障定位方法、调用链生成方法及服务器 | |
CN106375103B (zh) | 一种告警数据采集和发送方法 | |
CN110572288A (zh) | 一种基于可信容器的数据交换方法 | |
Gai et al. | Scaling blockchain consensus via a robust shared mempool | |
CN117194338A (zh) | 分布式日志数据的处理方法、装置、设备及存储介质 | |
CN112925477A (zh) | 一种数据处理方法、装置以及存储系统 | |
CN114785805B (zh) | 一种数据传输方法、装置、电子设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220207 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190730 |