CN108093047B - 数据发送方法、装置、电子设备及中间件系统 - Google Patents

数据发送方法、装置、电子设备及中间件系统 Download PDF

Info

Publication number
CN108093047B
CN108093047B CN201711362818.8A CN201711362818A CN108093047B CN 108093047 B CN108093047 B CN 108093047B CN 201711362818 A CN201711362818 A CN 201711362818A CN 108093047 B CN108093047 B CN 108093047B
Authority
CN
China
Prior art keywords
data
path
sent
receiving object
preset
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.)
Active
Application number
CN201711362818.8A
Other languages
English (en)
Other versions
CN108093047A (zh
Inventor
匡才亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Xingxuan Technology Co Ltd
Original Assignee
Beijing Xingxuan Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Xingxuan Technology Co Ltd filed Critical Beijing Xingxuan Technology Co Ltd
Priority to CN201711362818.8A priority Critical patent/CN108093047B/zh
Publication of CN108093047A publication Critical patent/CN108093047A/zh
Application granted granted Critical
Publication of CN108093047B publication Critical patent/CN108093047B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明实施例提供了一种数据发送方法、装置、电子设备及中间件系统,涉及通信技术领域。该数据发送方法应用于与Kafka集群通信的电子设备,所述包括:从所述Kafka集群中的一个分区中获取需要发送至所述第一接收对象的第一待发送数据和所述第二接收对象的第二待发送数据,将所述第一待发送数据通过第一路径向所述第一接收对象发送,将所述第二待发送数据通过第二路径向所述第二接收对象发送。通过本发明,实现了一个分区同时向多个接收对象提供数据,进而提高了数据的并发度。同时,缩短了数据消费对象获取到数据的时间,提高了用户体验。

Description

数据发送方法、装置、电子设备及中间件系统
技术领域
本发明涉及通信技术领域,尤其是涉及一种数据发送方法、装置、电子设备及中间件系统。
背景技术
通信技术的发展为人们的生活带来了越来越多的便利,但同时也带来了数据信息量的爆炸式增长,这给通信网络带来了巨大的压力。相关技术人员为了缓解这种通信网络的压力,研发出了各种各样的技术,如利用4G网络加快对数据传输效率、使用基于分布式数据存储系统构建的数据传递中间件系统对流量消峰等。使用基于分布式数据存储系统构建的数据传递中间件系统不仅可缓解通信网络的压力,还可以防止数据的丢失,因此,更受相关技术人员青睐。其中,基于Kafka集群构建的中间件系统由于其高吞吐、自动容灾、出入队有序等特性,目前在被广泛使用。
发明内容
本发明实施例提供一种数据发送方法、装置、电子设备及中间件系统,以改善基于分布式数据存储系统建立的中间件系统的数据并发度提升有限的问题。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种数据发送方法,应用于与Kafka集群连接的电子设备,所述Kafka集群包括至少一个Kafka服务器,所述方法包括:从所述Kafka服务器的一个分区内获取需要向第一接收对象发送的第一待发送数据和需要向第二接收对象发送的第二待发送数据;将所述第一待发送数据通过第一路径向所述第一接收对象发送;将所述第二待发送数据通过第二路径向所述第二接收对象发送。
结合第一方面,本发明在第一方面的第一种实施方式中,所述将所述第一待发送数据通过第一路径向所述第一接收对象发送的步骤包括:根据所述第一待发送数据所对应的特征标识,确定多个所述第一路径中的一个作为第一目标路径;将所述第一待发送数据通过所述第一目标路径向所述第一接收对象发送。
结合第一方面的第一种实施方式,本发明在第一方面的第二种实施方式中,所述根据所述第一待发送数据所对应的特征标识,确定多个所述第一路径中的一个作为第一目标路径的步骤包括:若所述特征标识符合预设的第一要求,从多个所述第一路径中选择与所述特征标识相对应的一个路径作为所述第一目标路径。
结合第一方面的第一种实施方式,本发明在第一方面的第三种实施方式中,所述根据所述第一待发送数据所对应的特征标识,确定多个所述第一路径中的一个作为第一目标路径的步骤包括:若所述特征标识符合预设的第二要求,则按照预定的选择策略,从多个所述第一路径中确定出所述第一目标路径。
结合第一方面的第三种实施方式,本发明在第一方面的第四种实施方式中,所述按照预定的选择策略,从多个所述第一路径中确定出所述第一目标路径的步骤包括:获取每条所述第一路径的负载状态值;根据所述负载状态值,从多个所述第一路径中确定出所述第一目标路径。
结合第一方面的第四种实施方式,本发明在第一方面的第五种实施方式中,所述根据所述负载状态值,从多个所述第一路径中确定出所述第一目标路径的步骤包括:以每条所述第一路径的负载状态值作为对应的权重值,从多个所述第一路径中通过加权随机的方式确定出所述第一目标路径。
结合第一方面的第一种实施方式、第一方面的第二种实施方式、第一方面的第三种实施方式、第一方面的第四种实施方式或第一方面的第五种实施方式,本发明在第一方面的第六种实施方式中,所述将所述第一待发送数据通过所述第一目标路径向所述第一接收对象发送的步骤包括:将所述第一待发送数据缓存于所述第一目标路径对应的发送队列中,以便向所述第一接收对象发送。
结合第一方面的第六种实施方式,本发明在第一方面的第七种实施方式中,所述将所述第一待发送数据缓存于所述第一目标路径对应的发送队列中的步骤包括:将所述第一目标路径的负载状态值与预设的阻塞阈值进行比较;响应于所述第一目标路径的负载状态值超过所述阻塞阈值,对所述第一目标路径对应的发送队列进行阻塞处理,以便对所述第一待发送数据缓存。
结合第一方面,本发明在第一方面的第八种实施方式中,上述方法还包括响应于达到预定的触发条件,从offset标记队列中查找目标offset标记,所述offset标记队列由至少两个offset标记组成,所述offset标记包括被成功发送的第一待发送数据对应的offset标记及被成功发送的第二待发送数据对应的offset标记,所述目标offset标记是最大连续组中序号最大的offset标记,所述最大连续组由所述offset标记队列中序号连续的多个offset标记组成,且最大连续组中包括有所述offset标记队列中序号最小的offset标记;将所述目标offset标记发送至所述Kafka集群;将所述最大连续组从所述offset标记队列中删除。
结合第一方面的第八种实施方式,上述响应于达到预定的触发条件,从offset标记队列中查找目标offset标记的步骤包括:响应于计时达到预设时间,从所述offset标记队列中查找所述目标offset标记。
结合第一方面的第八种实施方式,上述响应于达到预定的触发条件,从offset标记队列中查找目标offset标记的步骤包括:响应于所述offset标记队列获得一个新的offset标记,从所述offset标记队列中查找所述目标offset标记。
第二方面,本发明实施例还提供一种数据发送装置,应用于与Kafka集群连接的电子设备,所述Kafka集群包括至少一个Kafka服务器,所述装置包括:获取模块,用于从所述Kafka服务器的一个分区内获取需要向第一接收对象发送的第一待发送数据和需要向第二接收对象发送的第二待发送数据;发送模块,用于将所述第一待发送数据通过第一路径向所述第一接收对象发送;发送模块,还用于将所述第二待发送数据通过第二路径向所述第二接收对象发送。
第三方面,本发明实施例还提供了一种数据发送方法,应用于与分布式数据存储系统连接的电子设备,所述分布式数据存储系统包括至少一个存储服务器,所述存储服务器包括至少一个分区,所述分区用于存储属于同一类型的数据,所述数据包括需要发送至第一接收对象的第一待发送数据及需要发送第二接收对象的第二待发送数据,所述方法包括:从一个所述分区内获取所述第一待发送数据和第二待发送数据;根据所述第一待发送数据携带的第一接收对象的标识信息,通过预设路径向第一接收对象发送;根据所述第二待发送数据携带的第二接收对象的标识信息,通过所述预设路径向第二接收对象发送。
第四方面,本发明实施例还提供了一种数据发送装置,应用于与分布式数据存储系统连接的电子设备,所述分布式数据存储系统包括至少一个存储服务器,所述存储服务器包括至少一个分区,所述分区用于存储属于同一类型的数据,所述数据包括需要发送至第一接收对象的第一待发送数据及需要发送第二接收对象的第二待发送数据,所述装置包括:获取模块,用于从一个所述分区内获取所述第一待发送数据和第二待发送数据;发送模块,用于根据所述第一待发送数据携带的第一接收对象的标识信息,通过预设路径向第一接收对象发送;发送模块,用于根据所述第二待发送数据携带的第二接收对象的标识信息,通过预设路径向第二接收对象发送。
第五方面,本发明实施例还提供了一种电子设备,该电子设备包括:存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行,以实现上述数据发送方法的步骤。
第六方面,本发明实施例还提供了一种中间件系统,所述系统包括Kafka集群及上述电子设备,所述Kafka集群用于与所述电子设备通信。
第七方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据发送的步骤。
上述数据发送方法,在进行数据发送时,将从所述Kafka服务器的一个分区内获取到的需要向第一接收对象发送的第一待发送数据和需要向第二接收对象发送的第二待发送数据分别通过第一路径及第二路径向第一接收对象及第二接收对象发送。使得,在不对现有分区功能进行修改的情况下,提高了基于Kafka集群构建的中间件系统的数据的并发度。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明较佳实施例提供的一种中间件系统的结构框图;
图2示出了本发明较佳实施例提供的数据发送方法的时序图;
图3为本发明较佳实施例提供的一种数据发送方法流程图;
图4为图3中步骤S102的子步骤流程图之一;
图5为图3中步骤S102的子步骤流程图之二;
图6为本发明较佳实施例提供的一种数据发送方法流程图的另一部分;
图7示出了本发明较佳实施例提供的一种基于Kafka集群构建的中间件系统的结构框图;
图8为本发明第一实施例提供的一种数据发送方法的步骤流程图;
图9为本发明第二实施例提供的一种数据发送方法的步骤流程图;
图10为本发明较佳实施例提供的一种数据发送装置的结构框图;
图11为本发明实施例提供的电子设备的结构示意图。
图标:10-中间件系统;100-分布式数据存储系统;101-Kafka集群;210-获取模块;220-发送模块;221-确定子模块;222-发送子模块;230-查找模块;240-反馈模块;250-删除模块;800-电子设备;80-处理器;81-存储器;82-总线;83-通信接口。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着数据信息量的爆炸式增长,给通信网络带来了巨大的压力。为了缓解这种通信网络的压力,研发出了各种各样的技术,如利用4G网络加快对数据传输效率、使用基于分布式数据存储系统构建的数据传递中间件系统对流量消峰等。通过改进网络传输速度的方式缓解网络压力,效果始终有限。虽然网络传输速度提升的很快,但始终跟不上数据量增长的速率。因此,利用基于分布式数据存储系统构建的中间件系统缓解通信压力已成为一个极佳的选择。基于分布式数据存储系统构建的中间件系统从数据生成者处获取数据,并将属于同一类别的数据存放于分布式数据存储系统中为其划分的一个对应的分区,以便数据消费对象从对应的分区获取数据。例如,消费对象A请求从分布式数据存储系统获取消费类信息,则分布式数据存储系统会为消费对象A划分一个消费类分区A。并在接收到大量的消费类数据后存放于消费类分区A中,以便消费对象A根据其数据消费能力分次获取数据,避免数据的丢失,也实现了对流量的消峰。
但发明人在工作中发现,当前基于分布式数据存储系统构建的中间件系统虽然可以很好的实现对流量的消峰,缓解通信网络的通信压力,但在将数据向数据消费对象发送的过程却存在数据并发度不高,这直接会影响数据消费对象的使用体验等问题。以分布式数据存储系统中的Kafka集群为例,Kafka集群相比于现有的其他分布式数据存储系统而言已具备很高的数据并发度。若是需要进一步地提高其数据并发度,则需要通过不断增加每一类数据的分区数量。但,事实上分区的总体数目是受到限制,同时,随着分区数量的增多还会增加消息从数据生产者发布到数据消费者接收所需要的时间。因此,在分布式数据存储系统中数据并发度最佳的Kakfa集群依然存在数据并发度难以进一步提高的瓶颈。
针对该种情况,发明人认为,可以通过实现多个数据消费对象同时从一个分区中获取数据,以便在不对现有分区扩增的情况下,提高基于分布式数据存储系统构建的中间件系统的数据的并发度。因此,本发明较佳实施例相对于的提供了一种数据发送方法,该方法应用于基于所述分布式数据存储系统构建的中间件系统。
图1示出了本发明较佳实施例提供的一种中间件系统10。中间件系统10包括分布式数据存储系统100及电子设备800。所述分布式数据存储系统100与电子设备800连接。上述中间件系统10可以包括在数据生成者及数据消费对象之间实现数据传递的组件,用于保证传输的高可靠性及安全性。中间件系统10可以是软件模组、硬件设备及安装了软件模组的硬件设备。上述数据生成者可以是被发送的数据的来源,例如,可以是生产数据的服务器,也可以是产生数据的上游业务;上述数据消费对象可以对数据有需求的下游业务,也可以是对数据有需求的应用程序等。上述分布式数据存储系统100可以是具备数据分发的分布式数据分发存储系统(例如,Rabbitmq、Rocketmq等),也可以是由多个部署了Kafka的Kafka服务器组成的Kafka集群101。
请结合图2及图3参考,图3示出了本发明实施例提供的一种数据发送方法流程图,该方法应用于图1所示出的电子设备800。该方法可以包括以下步骤:
步骤S101:从所述分布式数据存储系统100的一个分区内获取需要向第一接收对象发送的第一待发送数据和需要向第二接收对象发送的第二待发送数据。
步骤S102:将所述第一待发送数据通过预设路径向所述第一接收对象发送;
步骤S103:将所述第二待发送数据通过所述预设路径向所述第二接收对象发送。
上述步骤中,步骤S102和步骤S103是并行的关系,这两个步骤可以同步进行。即,在步骤S101执行完毕后,就可以执行步骤S102及步骤S103,而不是等步骤S102执行完毕后,再执行步骤S103。
本发明实施例的所述电子设备800与第一接收对象和第二接收对象通信连接。第一接收对象可以是至少一个数据消费对象,第二接收对象可以是不同于第一接收对象的至少一个数据消费对象。
上述分布式数据存储系统100可以包括至少一个存储服务器。上述存储服务器包括至少一个分区。上述分区可以是分布式数据存储系统100为同一类数据划分的至少一个物理分区。通常地,分区用于持久化存储分布式数据存储系统100接收到的对应类别的数据,例如,该分布式数据存储系统100将获得的购物类数据持久化存储于为购物类数据划分的分区中。
上述第一待发送数据与第二待发送数据可以是存于同一分区内且需要发送至不同数据消费对象的多个数据。
上述步骤S101的目的是使电子设备800从分布式数据存储系统100的一个分区同时获取需要发送给不同数据消费对象的数据,克服了同一时间内一个分区中只能向一个数据消费对象的提供数据的缺陷。
上述预设路径可以是电子设备800中预先建立的向数据消费对象传递数据的路径。在其他可能的实施例中,上述预设路径的还可以根据实际的网络状态(例如,电子设备800的负载情况)调整配置,以获取当前所需的路径条数。
作为一种实施方式,预设路径可以包括至少一个第一路径及至少一个第二路径。其中,至少一个第一路径可以是配置了与第一接收对象对应关系,可以向第一接收对象的路径;至少一个第二路径可以是预先配置了与第二接收对象对应关系,可以向第二接收对象的路径。此时,路径与数据消费对象之间可以是一对一,也可以是多对一的关系。
作为另一种可能的实施方式,所述预设路径可以包括多个可以向所有数据消费对象发送数据的路径。也就是,预设路径中每一条路径与数据消费对象之间都可以是多对一的关系。
上述步骤S102及步骤S103的目的是实现对第一待发送数据及第二待发送数据的并发。通过实现多个数据消费对象同时从同一个分区获取数据,从而提升了数据的并发度。更克服了现有技术中各类分布式数据存储系统100由于客观因素的限制(例如,系统资源有限,系统自身架构缺陷)导致的数据并发度难以进一步提升的缺陷。不用通过在分布式数据存储系统100内不断新增分区,进而使数据并发度的提升不受限制,避免了过多分区对分布式数据存储系统100的数据传输速度。
下面对本方案实现的具体过程和细节进行介绍。
上述步骤S101可以是所述电子设备800通过拉模式从一个分区中获取第一待发送数据及第二待发送数据。
上述拉模式可以是主动获取数据的模式,也就是获取数据的频率、数量等均可以自主决定。作为一种实施方式,所述电子设备800可以根据当前设备的负载情况控制向分布式数据存储系统100索取数据的频率及数量。例如,根据当前电子设备800内等待推送的数据所存储队列的剩余存储空间,利用预先建立的数量、频率模型获取索取数据的频率及数量。
上述步骤S102可以包括以下两种方式实现通过预设路径将所述第一待发送数据向第一接收对象发送:
第一种方式适用于所述预设路径包括多个第一路径及多个第二路径的情况。可选地,如图4所示,步骤S102可以包括以下子步骤:
子步骤S1021,根据所述第一待发送数据所对应的特征标识,确定多个所述第一路径中的一个作为第一目标路径。
上述特征标识可以是由所述数据生产者给一组属于同一类别且对送达数据消费者的先后顺序具有要求的数据的一个共同的标识。例如,数据消费对象向所述数据生产者请求进行一次网购时,由于订单数据、支付数据、给于评价数据为一组对送达数据消费者的先后顺序存在要求的数据,因此,数据生成者会给上述数据均赋予相同的特征标识。可选地,根据所述第一待发送数据所对应的特征标识,确定多个所述第一路径中的一个作为第一目标路径可以包括以下两种方式:
(1)若所述特征标识符合预设的第一要求,则从多个所述第一路径中选择与所述特征标识相对应的一个路径作为所述第一目标路径。
上述特征标识符合预设的第一要求可以是第一待发送数据存在特征标识且在第一路径中具有一条与上述特征标识存在对应关系的路径。
进一步地,若所述特征标识符合预设的第一要求,则将多个所述第一路径中与上述特征标识对应的路径作为第一目标路径。上述对应关系可以是预先配置的,也可以是根据预设规则动态建立的。
(2)若所述特征标识符合预设的第二要求,则按照预定的选择策略,从多个所述第一路径中确定出所述第一目标路径。
上述特征标识符合预设的第二要求可以是第一待发送数据不存在特征标识或者是在第一路径中不具有一条与上述特征标识存在对应关系的路径。
进一步地,若所述特征标识符合预设的第二要求,则先获取每条所述第一路径的负载状态值,根据获取的负载状态值从所述第一路径中确认第一目标路径。例如,以每条所述第一路径的负载状态值作为对应的权重值,从多个所述第一路径中通过加权随机的方式确定出所述第一目标路径。
需要说明的是,当上述特征标识满足第二要求的方式为在第一路径中不具有一条与上述特征标识存在对应关系的路径时,还需按照预设规则动态建立第一目标路径与上述特征标识的对应关系。可选地,可以是在根据预定的选择策略确定第一目标路径之后,将所述第一目标路径与上述特征标识之间的对应关系进行存储,用以被查询,以便之后接收到具有相同特征标识的第一待发送数据均通过第一目标路径发送出去。
通过子步骤S1021可以避免了具有先后顺序的数据顺序的到达电子设备800后由于所选择的路径效率不同最终导致到达数据消费对象的顺序错乱。还可以让预先设定好路径的数据可以通过配置路径达到数据消费者。
子步骤S1022,将所述第一待发送数据通过所述第一目标路径向所述第一接收对象发送。
可选地,可以先将所述第一待发送数据缓存于所述第一目标路径对应的发送队列中。再由第一目标路径对应的推送线程依次将发送队列中缓存的数据推送至所述第一接收对象,以便第一待发送数据有序的以推模式发送至第一接收对象。进一步地,将第一待发送数据缓存于第一目标路径对应的发送队列可以包括将所述第一目标路径的负载状态值与预设的阻塞阈值进行比较,当所述第一目标路径的负载状态值超过所述阻塞阈值,对所述第一目标路径对应的发送队列进行阻塞处理,以便对所述第一待发送数据缓存。可选地,阻塞处理可以是先对所述发送队列进行阻塞(例如,将其悬挂,避免数据继续向所述发送队列发送进而造成数据丢失)再为第一目标路径的新建一个数据队列,用于暂存第一待发送数据,直至所述发送队列的负载状态值低于空闲阈值时,将所述新建的数据队列中存放的数据依次转移至所述发送队列中。
第二种方式适用于所述预设路径包括多个可以向所有数据消费对象发送数据的路径情况。可选地,如图5所示,步骤S102可以包括以下子步骤:
子步骤S1023,将所述第一待发送数据及对应的所述第一标识信息发送至从所述预设路径中确定第一目标路径。
上述从所述预设路径中确定第一目标路径可以是通过根据所述第一待发送数据所对应的特征标识,确定多个所述预设路径中的一个作为第一目标路径。进一步地,若所述特征标识符合预设的第一要求,则从多个所述预设路径中选择与所述特征标识相对应的一个路径作为所述第一目标路径。若所述特征标识符合预设的第二要求,则按照预定的选择策略,从多个所述预设路径中确定出所述第一目标路径,例如,获取每条所述预设路径的负载状态值,根据所述负载状态值,从多个所述预设路径中确定出所述第一目标路径。上述过程与子步骤S1021中从第一路径中确定第一目标路径大致相同,区别仅在于子步骤S1021为从第一路径中获取而子步骤S1023是从所有预设路径中获取,因此,在此不再赘述。
子步骤S1024,所述第一目标路径根据所述第一标识信息将所述第一待发送数据向所述第一接收对象发送。
上述第一标识信息可以是第一接收对象的标识信息,第一目标路径可以根据上述第一标识信息将上述第一待发送数据向所述第一目标路径发送。例如,可以是在所述第一目标路径识别了第一标识信息后,建立第一目标路径与第一接收对象之间的连接,再将第一待发送数据发送至第一接收对象。
可选地,可以先将所述第一待发送数据缓存于所述第一目标路径对应的发送队列中。再由第一目标路径对应的推送线程按照对应的第一标识信息依次将发送队列中缓存的数据推送至对应的数据消费对象,以便待消费数据以推模式发送至对应的数据消费对象。进一步地,上述将第一待发送数据缓存于第一目标路径对应的发送队列还可以包括获取上述第一目标路径的负载状态值,将上述第一目标路径的负载状态值与预设的阻塞阈值进行比较,当上述负载状态值超过阻塞阈值,对所述发送队列进行阻塞处理。可选地,阻塞处理可以是先对所述发送队列进行阻塞(例如,将其悬挂,避免数据继续向所述发送队列发送进而造成数据丢失)再为第一目标路径的新建一个数据队列,用于暂存第一待发送数据,直至所述发送队列的负载状态值低于空闲阈值时,将所述新建的数据队列中存放的数据依次转移至所述发送队列中。
第一种方式在进行数据推送时效率更高,数据抵达目标路径则直接通过目标路径到达目标数据消费对象。而第二种方式,在数据抵达目标路径后还需要目标路径对其对应的信息标识进行识别再推送,显然效率稍低一些,但第二种方式充分利用了每一条路径,在实现路径间的负载均衡方面相较于第一种方式稍好一些。
上述步骤S103与上述步骤S102实现方式相同,在此不再赘述。且上述步骤S103与上述步骤S102顺序无绝对先后,优选地,可以是同步进行。实现对第一待发送数据及第二待发送数据的并发。
为了使中间件系统10更高效的管理通过其传递的数据,参见图6,该方法还包括以下步骤:
步骤S201,当达到预定的触发条件时,从offset标记队列中查找目标offset标记。
上述所述offset标记队列由至少两个offset标记组成。offset标记可以是分布式数据存储系统100为同一分区内的数据赋予的序号,其按照数据在同一个分区内的排列顺序进行赋予。上述offset标记队列中的offset标记可以是包括被成功发送的第一待发送数据对应的offset标记及被成功发送的第二待发送数据对应的offset标记。预设路径中的路径完成将数据发送至数据消费对象,均会将发送成功的数据对应的offset标记放入offset标记队列中。
上述目标offset标记是最大连续组中序号最大的offset标记。
上述最大连续组由所述offset标记队列中序号连续的多个offset标记组成,且最大连续组中包括有所述offset标记队列中序号最小的offset标记。例如,offset标记队列中存储的offset标记对应序号分别为:1、2、3、4、7、8及9,1、2、3、4对应的offset标记组成的连续组中包括标记队列中序号最小的offset标记1,因此,1、2、3、4对应的offset标记组成的连续组为最大连续组,在该最大连续组中序号最大的为4,则序号为4的offset标记为最终的目标offset标记。
上述当达到预定的触发条件时,从offset标记队列中查找目标offset标记可以是每当计时达到预设时间时,从所述offset标记队列中查找所述目标offset标记。也可以是每当所述offset标记队列获得一个新的offset标记时,从所述offset标记队列中查找所述目标offset标记。
步骤S202,将所述目标offset标记发送至所述分布式数据存储系统100。
上述步骤S202的目的在于,在避免了频繁提交offset标记的情况下让所述分布式数据存储系统100依然能够了解数据的被消费进度。同时,还可以减轻网络资源的消耗。
步骤S203,将所述最大连续组从所述offset标记队列中删除。
上述步骤S203的目的在于,避免重复同一个offset标记被重复选中作为目标offset标记。同时也能减轻offset标记队列的存储压力。
以应用于如图7所示的中间件系统10中的电子设备800的两个实例对本发明实施例提供的一种数据发送方法进行说明。
图7中的所述Kafka集群101包括至少一个部署Kafka的Kafka服务器。所述Kafka集群101中的任意一Kafka服务器的一分区中存储有需要发送至第一接收对象的第一待发送数据及需要发送至第二接收对象的第二待发送数据。在第一实施例中,如图8所示,所述方法包括:
步骤S301:从所述Kafka服务器的一个分区内以拉模式获取需要向第一接收对象发送的第一待发送数据和需要向第二接收对象发送的第二待发送数据。
上述所述Kafka服务器可以包括至少一个分区。上述分区可以是用于存储属于相同Topic数据的Partition。
步骤S302:判断所述第一待发送数据对应的特征标识是否符合预设的第一要求或第二要求。
步骤S303:若所述第一待发送数据对应的特征标识符合预设的第一要求,则从多个所述第一路径中选择与所述特征标识相对应的一个路径作为所述第一目标路径。
上述第一要求可以是第一待发送数据存在特征标识且在第一路径中具有一条与上述特征标识存在对应关系的路径。
步骤S304:若所述特征标识符合预设的第二要求,则根据随机策略从第一路径中选出一条路径作为第一目标路径。
上述第二要求可以是第一待发送数据不存在特征标识或者是在第一路径中不具有一条与上述特征标识存在对应关系的路径。上述随机策略可以是以每条所述第一路径的负载状态值作为对应的权重值的加权随机策略。
步骤S305:将所述第一待发送数据缓存于所述第一目标路径对应的发送队列中。
上述将所述第一待发送数据缓存于所述第一目标路径对应的发送队列中可以包括将所述第一目标路径的负载状态值与预设的阻塞阈值进行比较,当所述第一目标路径的负载状态值超过所述阻塞阈值,对所述第一目标路径对应的发送队列进行阻塞处理,以便对所述第一待发送数据缓存。可选地,阻塞处理可以是先对所述发送队列进行阻塞(例如,将其悬挂,避免数据继续向所述发送队列发送进而造成数据丢失)再为第一目标路径的新建一个数据队列,用于暂存第一待发送数据,直至所述发送队列的负载状态值低于空闲阈值时,将所述新建的数据队列中存放的数据依次转移至所述发送队列中。
步骤S306:由第一目标路径对应的推送线程依次将发送队列中缓存的第一待发送数据推送至所述第一接收对象。
步骤S307:在所述第一待发送数据推送成功后,将所述第一待发送数据对应的offset标记存储于所述offset标记队列。
步骤S308:判断所述第二待发送数据对应的特征标识是否符合预设的第一要求或第二要求。
上述步骤S302与步骤S308可以为并行关系,不存在先后顺序。
步骤S309:若所述第二待发送数据对应的特征标识符合预设的第一要求,则从多个所述第二路径中选择与所述特征标识相对应的一个路径作为所述第二目标路径。
步骤S310:若所述特征标识符合预设的第二要求,则根据随机策略从第二路径中选出一条路径作为第二目标路径。
上述第二要求可以是第二待发送数据不存在特征标识或者是在第二路径中不具有一条与上述特征标识存在对应关系的路径。上述随机策略可以是以每条所述第一路径的负载状态值作为对应的权重值的加权随机策略。
步骤S311:将所述第二待发送数据缓存于所述第二目标路径的发送队列中。
上述将所述第二待发送数据缓存于所述第二目标路径的发送队列中可以包括取所述第二目标路径的负载状态值,将所述第二目标路径的负载状态值与预设的阻塞阈值进行比较,当所述第二目标路径的负载状态值超过所述阻塞阈值,对所述发送队列进行阻塞处理。可选地,阻塞处理可以是先对所述发送队列进行阻塞(例如,将其悬挂,避免数据继续向所述发送队列发送进而造成数据丢失)再为第二目标路径的新建一个数据队列,用于暂存第二待发送数据,直至所述发送队列的负载状态值低于空闲阈值时,将所述新建的数据队列中存放的数据依次转移至所述发送队列中。
步骤S312:由第二目标路径对应的推送线程依次将发送队列中缓存的第二待发送数据推送至所述第二接收对象。
步骤S313:在所述第二待发送数据推送成功后,将所述第二待发送数据对应的offset标记存储于所述offset标记队列。
步骤S314:每当计时达到预设时间时,从offset标记队列中查找目标offset标记。
步骤S315:将所述目标offset标记发送至所述Kafka集群101。
步骤S316:将所述最大连续组从所述offset标记队列中删除。
在第二实施例中,如图9所示,所述方法包括:
步骤S401:从所述Kafka服务器的一个分区内以拉模式获取需要向第一接收对象发送的第一待发送数据和需要向第二接收对象发送的第二待发送数据。
上述所述Kafka服务器可以包括至少一个分区。上述分区可以是用于存储属于相同Topic数据的Partition。
步骤S402:将所述第一待发送数据及对应的所述第一标识信息发送至从所述预设路径中确定第一目标路径。
步骤S403:所述第一目标路径根据所述第一标识信息将所述第一待发送数据向所述第一接收对象发送。
步骤S404:在所述第一待发送数据推送成功后,将所述第一待发送数据对应的offset标记存储于所述offset标记队列。
步骤S405:将所述第二待发送数据及对应的所述第二标识信息发送至从所述预设路径中确定第二目标路径。
上述步骤S402与步骤S405为并行关系,不存在先后顺序。
步骤S406:所述第二目标路径根据所述第二标识信息将所述第二待发送数据向所述第二接收对象发送。
步骤S407:在所述第二待发送数据推送成功后,将所述第二待发送数据对应的offset标记存储于所述offset标记队列。
步骤S408:每当所述offset标记队列获得一个新的offset标记时,从offset标记队列中查找目标offset标记。
步骤S409:将所述目标offset标记发送至所述Kafka集群101。
步骤S410:将所述最大连续组从所述offset标记队列中删除。
图10示出了与上述方法相对应的一种数据发送装置,下述装置中的细节方案可以参照上述方法来实现,数据发送装置包括:
获取模块210,用于从所述Kafka服务器的一个分区内获取需要向第一接收对象发送的第一待发送数据和需要向第二接收对象发送的第二待发送数据。
发送模块220,用于将所述第一待发送数据通过第一路径向所述第一接收对象发送;及将所述第二待发送数据通过第二路径向所述第二接收对象发送。
优选地,所述发送模块220包括:
确定子模块221,用于根据所述第一待发送数据所对应的特征标识,确定多个所述第一路径中的一个作为第一目标路径;
发送子模块222,用于将所述第一待发送数据通过所述第一目标路径向所述第一接收对象发送。
优选地,所述确定子模块221还用于:
若所述特征标识符合预设的第一要求,则从多个所述第一路径中选择与所述特征标识相对应的一个路径作为所述第一目标路径。
优选地,所述确定子模块221还用于:
若所述特征标识符合预设的第二要求,则按照预定的选择策略,从多个所述第一路径中确定出所述第一目标路径。
优选地,所述确定子模块221还用于:
获取每条所述第一路径的负载状态值;
根据所述负载状态值,从多个所述第一路径中确定出所述第一目标路径。
优选地,所述发送子模块222还用于:
将所述第一待发送数据缓存于所述第一目标路径对应的发送队列中,以便向所述第一接收对象发送。
优选地,所述发送子模块222还用于:
将所述第一目标路径的负载状态值与预设的阻塞阈值进行比较;
当所述第一目标路径的负载状态值超过所述阻塞阈值,对所述第一目标路径对应的发送队列进行阻塞处理,以便对所述第一待发送数据缓存。
优选地,所述数据发送装置还包括:
查找模块230,用于当达到预定的触发条件时,从offset标记队列中查找目标offset标记,所述offset标记队列由至少两个offset标记组成,所述offset标记包括被成功发送的第一待发送数据对应的offset标记及被成功发送的第二待发送数据对应的offset标记,所述目标offset标记是最大连续组中序号最大的offset标记,所述最大连续组由所述offset标记队列中序号连续的多个offset标记组成,且最大连续组中包括有所述offset标记队列中序号最小的offset标记;
反馈模块240,用于将所述目标offset标记发送至所述Kafka集群101;
删除模块250,用于将所述最大连续组从所述offset标记队列中删除。
优选地,所述查找模块230还用于:
每当计时达到预设时间时,从所述offset标记队列中查找所述目标offset标记。
优选地,所述查找模块230还用于:
每当所述offset标记队列获得一个新的offset标记时,从所述offset标记队列中查找所述目标offset标记。
在其他可能的实施方式中,上述数据发送装置所包括的:
获取模块210,还可以用于从一个所述分区内获取需要发送至第一接收对象的第一待发送数据和第二接收对象的第二待发送数据。
发送模块220,还可以用于根据所述第一待发送数据携带的第一接收对象的标识信息,通过预设路径向第一接收对象发送。
发送模块220,还可以用于根据所述第二待发送数据携带的第二接收对象的标识信息,通过预设路径向第二接收对象发送。
本发明实施例还提供了一种电子设备,包括存储器和处理器,其中,该存储器用于存储一条或多条计算机指令,上述一条或多条计算机指令被上述处理器执行,以实现上述各实施例中提及的数据发送方法的步骤。
参见图11所示的电子设备800的结构示意图,该电子设备800包括:处理器80,存储器81,总线82和通信接口83,所述处理器80、通信接口83和存储器81通过总线82连接;处理器80用于执行存储器81中存储的可执行模块,例如计算机程序。
其中,存储器81可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口83(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接。
总线82可以是ISA总线、PCI总线或EISA总线等。图11中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器81用于存储程序,所述处理器80在接收到执行指令后,执行所述程序,前述揭示的过程定义的装置所执行的方法可以应用于处理器80中,或者由处理器80实现。
处理器80可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器80中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器80可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。该存储介质位于存储器81,处理器80读取存储器81中的消息,结合其硬件完成上述方法的步骤。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现前述实施例中涉及的数据发送方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
第一方面,本发明实施例中提供了一种数据发送方法,应用于与Kafka集群连接的电子设备,所述Kafka集群包括至少一个Kafka服务器,所述方法包括:
从所述Kafka服务器的一个分区内获取需要向第一接收对象发送的第一待发送数据和需要向第二接收对象发送的第二待发送数据;
将所述第一待发送数据通过第一路径向所述第一接收对象发送;
将所述第二待发送数据通过第二路径向所述第二接收对象发送。
结合第一方面,本发明在第一方面的第一种实施方式中,所述将所述第一待发送数据通过第一路径向所述第一接收对象发送的步骤包括:
根据所述第一待发送数据所对应的特征标识,确定多个所述第一路径中的一个作为第一目标路径;
将所述第一待发送数据通过所述第一目标路径向所述第一接收对象发送。
结合第一方面的第一种实施方式,本发明在第一方面的第二种实施方式中,所述根据所述第一待发送数据所对应的特征标识,确定多个所述第一路径中的一个作为第一目标路径的步骤包括:
若所述特征标识符合预设的第一要求,从多个所述第一路径中选择与所述特征标识相对应的一个路径作为所述第一目标路径。
结合第一方面的第一种实施方式,本发明在第一方面的第三种实施方式中,所述根据所述第一待发送数据所对应的特征标识,确定多个所述第一路径中的一个作为第一目标路径的步骤包括:
若所述特征标识符合预设的第二要求,则按照预定的选择策略,从多个所述第一路径中确定出所述第一目标路径。
结合第一方面的第三种实施方式,本发明在第一方面的第四种实施方式中,所述按照预定的选择策略,从多个所述第一路径中确定出所述第一目标路径的步骤包括:
获取每条所述第一路径的负载状态值;
根据所述负载状态值,从多个所述第一路径中确定出所述第一目标路径。
结合第一方面的第四种实施方式,本发明在第一方面的第五种实施方式中,所述根据所述负载状态值,从多个所述第一路径中确定出所述第一目标路径的步骤包括:
以每条所述第一路径的负载状态值作为对应的权重值,从多个所述第一路径中通过加权随机的方式确定出所述第一目标路径。
结合第一方面的第一种实施方式、第一方面的第二种实施方式、第一方面的第三种实施方式、第一方面的第四种实施方式或第一方面的第五种实施方式,本发明在第一方面的第六种实施方式中,所述将所述第一待发送数据通过所述第一目标路径向所述第一接收对象发送的步骤包括:
将所述第一待发送数据缓存于所述第一目标路径对应的发送队列中,以便向所述第一接收对象发送。
结合第一方面的第六种实施方式,本发明在第一方面的第七种实施方式中,所述将所述第一待发送数据缓存于所述第一目标路径对应的发送队列中的步骤包括:
将所述第一目标路径的负载状态值与预设的阻塞阈值进行比较;
响应于所述第一目标路径的负载状态值超过所述阻塞阈值,对所述第一目标路径对应的发送队列进行阻塞处理,以便对所述第一待发送数据缓存。
结合第一方面,本发明在第一方面的第八种实施方式中,所述数据发送方法还包括:
响应于达到预定的触发条件,从offset标记队列中查找目标offset标记,所述offset标记队列由至少两个offset标记组成,所述offset标记包括被成功发送的第一待发送数据对应的offset标记及被成功发送的第二待发送数据对应的offset标记,所述目标offset标记是最大连续组中序号最大的offset标记,所述最大连续组由所述offset标记队列中序号连续的多个offset标记组成,且最大连续组中包括有所述offset标记队列中序号最小的offset标记;
将所述目标offset标记发送至所述Kafka集群;
将所述最大连续组从所述offset标记队列中删除。
结合第一方面的第八种实施方式,响应于达到预定的触发条件,从offset标记队列中查找目标offset标记的步骤包括:
响应于计时达到预设时间,从所述offset标记队列中查找所述目标offset标记。
结合第一方面的第八种实施方式,响应于达到预定的触发条件,从offset标记队列中查找目标offset标记的步骤包括:
响应于所述offset标记队列获得一个新的offset标记,从所述offset标记队列中查找所述目标offset标记。
第二方面,本发明实施例中提供了一种数据发送装置,应用于与Kafka集群连接的电子设备,所述Kafka集群包括至少一个Kafka服务器,所述装置包括:
获取模块,用于从所述Kafka服务器的一个分区内获取需要向第一接收对象发送的第一待发送数据和需要向第二接收对象发送的第二待发送数据;
发送模块,用于将所述第一待发送数据通过第一路径向所述第一接收对象发送;
发送模块,还用于将所述第二待发送数据通过第二路径向所述第二接收对象发送。
结合第二方面,本发明在第二方面的第一种实施方式中,所述发送模块包括:
确定子模块,用于根据所述第一待发送数据所对应的特征标识,确定多个所述第一路径中的一个作为第一目标路径;
发送子模块,用于将所述第一待发送数据通过所述第一目标路径向所述第一接收对象发送。
结合第二方面的第一种实施方式,本发明在第二方面的第二种实施方式中,所述确定子模块还用于:
若所述特征标识符合预设的第一要求,则从多个所述第一路径中选择与所述特征标识相对应的一个路径作为所述第一目标路径。
结合第二方面的第一种实施方式,本发明在第二方面的第三种实施方式中,所述确定子模块还用于:
若所述特征标识符合预设的第二要求,则按照预定的选择策略,从多个所述第一路径中确定出所述第一目标路径。
结合第二方面的第三种实施方式,本发明在第二方面的第四种实施方式中,所述确定子模块还用于:
获取每条所述第一路径的负载状态值;
根据所述负载状态值,从多个所述第一路径中确定出所述第一目标路径。
结合第二方面的第四种实施方式,本发明在第二方面的第五种实施方式中,所述确定子模块还用于:
以每条所述第一路径的负载状态值作为对应的权重值,从多个所述第一路径中通过加权随机的方式确定出所述第一目标路径。
结合第二方面的第一种实施方式、第二方面的第二种实施方式、第二方面的第三种实施方式、第二方面的第四种实施方式或第二方面的第五种实施方式,本发明在第二方面的第六种实施方式中,所述发送子模块还用于:
将所述第一待发送数据缓存于所述第一目标路径对应的发送队列中,以便向所述第一接收对象发送。
结合第二方面的第六种实施方式,所述发送子模块还用于:
将所述第一目标路径的负载状态值与预设的阻塞阈值进行比较;
响应于所述第一目标路径的负载状态值超过所述阻塞阈值,对所述第一目标路径对应的发送队列进行阻塞处理,以便对所述第一待发送数据缓存。
结合第二方面,本发明在第二方面的第七种实施方式中,所述数据发送装置还包括:
查找模块,用于响应于达到预定的触发条件,从offset标记队列中查找目标offset标记,所述offset标记队列由至少两个offset标记组成,所述offset标记包括被成功发送的第一待发送数据对应的offset标记及被成功发送的第二待发送数据对应的offset标记,所述目标offset标记是最大连续组中序号最大的offset标记,所述最大连续组由所述offset标记队列中序号连续的多个offset标记组成,且最大连续组中包括有所述offset标记队列中序号最小的offset标记;
反馈模块,用于将所述目标offset标记发送至所述Kafka集群;
删除模块,用于将所述最大连续组从所述offset标记队列中删除。
结合第一方面的第七种实施方式,所述查找模块还用于:
响应于计时达到预设时间,从所述offset标记队列中查找所述目标offset标记。
结合第一方面的第七种实施方式,所述查找模块还用于:
响应于所述offset标记队列获得一个新的offset标记,从所述offset标记队列中查找所述目标offset标记。
第三方面,本发明实施例中提供了一种数据发送方法,应用于与分布式数据存储系统连接的电子设备,所述分布式数据存储系统包括至少一个存储服务器,所述存储服务器包括至少一个分区,所述分区用于存储属于同一类型的数据,所述数据包括需要发送至第一接收对象的第一待发送数据及需要发送第二接收对象的第二待发送数据,所述方法包括:
从一个所述分区内获取所述第一待发送数据和第二待发送数据;
根据所述第一待发送数据携带的第一接收对象的标识信息,通过预设路径向第一接收对象发送;
根据所述第二待发送数据携带的第二接收对象的标识信息,通过预设路径向第二接收对象发送。
结合第三方面,本发明在第三方面的第一种实施方式中,所述根据所述第一待发送数据携带的第一接收对象的第一标识信息,通过预设路径向第一接收对象发送的步骤包括:
将所述第一待发送数据及对应的所述第一标识信息发送至从所述预设路径中确定第一目标路径;
所述第一目标路径根据所述第一标识信息将所述第一待发送数据向所述第一接收对象发送。
结合第三方面的第一种实施方式,本发明在第三方面的第二种实施方式中,所述从所述预设路径中确定第一目标路径的步骤包括:
根据所述第一待发送数据所对应的特征标识,确定多个所述预设路径中的一个作为第一目标路径。
结合第三方面的第二种实施方式,本发明在第三方面的第三种实施方式中,所述根据所述第一待发送数据所对应的特征标识,确定多个所述预设路径中的一个作为第一目标路径的步骤包括:
若所述特征标识符合预设的第一要求,则从多个所述预设路径中选择与所述特征标识相对应的一个路径作为所述第一目标路径。
结合第三方面的第二种实施方式,本发明在第三方面的第四种实施方式中,所述根据所述第一待发送数据所对应的特征标识,确定多个所述预设路径中的一个作为第一目标路径的步骤包括:
若所述特征标识符合预设的第二要求,则按照预定的选择策略,从多个所述预设路径中确定出所述第一目标路径。
结合第三方面的第四种实施方式,所述按照预定的选择策略,从多个所述预设路径中确定出所述第一目标路径的步骤包括:
获取每条所述预设路径的负载状态值;
根据所述负载状态值,从多个所述预设路径中确定出所述第一目标路径。
第四方面,本发明实施例中提供了一种数据发送装置,应用于与分布式数据存储系统连接的电子设备,所述分布式数据存储系统包括至少一个存储服务器,所述存储服务器包括至少一个分区,所述分区用于存储属于同一类型的数据,所述数据包括需要发送至第一接收对象的第一待发送数据及需要发送第二接收对象的第二待发送数据,所述装置包括:
获取模块,用于从一个所述分区内获取所述第一待发送数据和第二待发送数据;
发送模块,用于根据所述第一待发送数据携带的第一接收对象的标识信息,通过预设路径向第一接收对象发送;
发送模块,用于根据所述第二待发送数据携带的第二接收对象的标识信息,通过预设路径向第二接收对象发送。
第五方面,本发明实施例中提供了一种电子设备,包括:存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行,以实现上述第一方面中数据发送方法的步骤。
第六方面,本发明实施例中提供了一种中间件系统,所述系统包括Kafka集群及电子设备,所述电子设备用以实现上述第一方面中数据发送方法的步骤;所述Kafka集群用于与所述电子设备通信。
第七方面,本发明实施例中提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中数据发送方法的步骤。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (32)

1.一种数据发送方法,其特征在于,应用于与Kafka集群连接的电子设备,所述Kafka集群包括至少一个Kafka服务器,所述方法包括:
从所述Kafka服务器的一个分区内以拉模式同时获取需要向第一接收对象发送的第一待发送数据和需要向第二接收对象发送的第二待发送数据;
将所述第一待发送数据通过第一路径向所述第一接收对象发送;
将所述第二待发送数据通过第二路径向所述第二接收对象发送;
其中,所述第一路径为预先配置的与所述第一接收对象存在对应关系的路径,所述第二路径为预先配置的与所述第二接收对象存在对应关系的路径,所述第一接收对象和所述第二接收对象是不同的数据消费对象。
2.根据权利要求1所述的数据发送方法,其特征在于,所述将所述第一待发送数据通过第一路径向所述第一接收对象发送的步骤包括:
根据所述第一待发送数据所对应的特征标识,确定多个所述第一路径中的一个作为第一目标路径;
将所述第一待发送数据通过所述第一目标路径向所述第一接收对象发送。
3.根据权利要求2所述的数据发送方法,其特征在于,所述根据所述第一待发送数据所对应的特征标识,确定多个所述第一路径中的一个作为第一目标路径的步骤包括:
若所述特征标识符合预设的第一要求,从多个所述第一路径中选择与所述特征标识相对应的一个路径作为所述第一目标路径。
4.根据权利要求2所述的数据发送方法,其特征在于,所述根据所述第一待发送数据所对应的特征标识,确定多个所述第一路径中的一个作为第一目标路径的步骤包括:
若所述特征标识符合预设的第二要求,则按照预定的选择策略,从多个所述第一路径中确定出所述第一目标路径。
5.根据权利要求4所述的数据发送方法,其特征在于,所述按照预定的选择策略,从多个所述第一路径中确定出所述第一目标路径的步骤包括:
获取每条所述第一路径的负载状态值;
根据所述负载状态值,从多个所述第一路径中确定出所述第一目标路径。
6.根据权利要求5所述的数据发送方法,其特征在于,所述根据所述负载状态值,从多个所述第一路径中确定出所述第一目标路径的步骤包括:
以每条所述第一路径的负载状态值作为对应的权重值,从多个所述第一路径中通过加权随机的方式确定出所述第一目标路径。
7.根据权利要求2-6任一项所述的数据发送方法,其特征在于,所述将所述第一待发送数据通过所述第一目标路径向所述第一接收对象发送的步骤包括:
将所述第一待发送数据缓存于所述第一目标路径对应的发送队列中,以便向所述第一接收对象发送。
8.根据权利要求7所述的数据发送方法,其特征在于,所述将所述第一待发送数据缓存于所述第一目标路径对应的发送队列中的步骤包括:
将所述第一目标路径的负载状态值与预设的阻塞阈值进行比较;
响应于所述第一目标路径的负载状态值超过所述阻塞阈值,对所述第一目标路径对应的发送队列进行阻塞处理,以便对所述第一待发送数据缓存。
9.根据权利要求1所述的数据发送方法,其特征在于,所述数据发送方法还包括:
响应于达到预定的触发条件,从offset标记队列中查找目标offset标记,所述offset标记队列由至少两个offset标记组成,所述offset标记包括被成功发送的第一待发送数据对应的offset标记及被成功发送的第二待发送数据对应的offset标记,所述目标offset标记是最大连续组中序号最大的offset标记,所述最大连续组由所述offset标记队列中序号连续的多个offset标记组成,且最大连续组中包括有所述offset标记队列中序号最小的offset标记;
将所述目标offset标记发送至所述Kafka集群;
将所述最大连续组从所述offset标记队列中删除。
10.根据权利要求9所述的数据发送方法,其特征在于,响应于达到预定的触发条件,从offset标记队列中查找目标offset标记的步骤包括:
响应于计时达到预设时间,从所述offset标记队列中查找所述目标offset标记。
11.根据权利要求9所述的数据发送方法,其特征在于,响应于达到预定的触发条件,从offset标记队列中查找目标offset标记的步骤包括:
响应于所述offset标记队列获得一个新的offset标记,从所述offset标记队列中查找所述目标offset标记。
12.一种数据发送装置,其特征在于,应用于与Kafka集群连接的电子设备,所述Kafka集群包括至少一个Kafka服务器,所述装置包括:
获取模块,用于从所述Kafka服务器的一个分区内以拉模式同时获取需要向第一接收对象发送的第一待发送数据和需要向第二接收对象发送的第二待发送数据;
发送模块,用于将所述第一待发送数据通过第一路径向所述第一接收对象发送;
发送模块,还用于将所述第二待发送数据通过第二路径向所述第二接收对象发送;
其中,所述第一路径为预先配置的与所述第一接收对象存在对应关系的路径,所述第二路径为预先配置的与所述第二接收对象存在对应关系的路径,所述第一接收对象和所述第二接收对象是不同的数据消费对象。
13.根据权利要求12所述的数据发送装置,其特征在于,所述发送模块包括:
确定子模块,用于根据所述第一待发送数据所对应的特征标识,确定多个所述第一路径中的一个作为第一目标路径;
发送子模块,用于将所述第一待发送数据通过所述第一目标路径向所述第一接收对象发送。
14.根据权利要求13所述的数据发送装置,其特征在于,所述确定子模块还用于:
若所述特征标识符合预设的第一要求,则从多个所述第一路径中选择与所述特征标识相对应的一个路径作为所述第一目标路径。
15.根据权利要求13所述的数据发送装置,其特征在于,所述确定子模块还用于:
若所述特征标识符合预设的第二要求,则按照预定的选择策略,从多个所述第一路径中确定出所述第一目标路径。
16.根据权利要求15所述的数据发送装置,其特征在于,所述确定子模块还用于:
获取每条所述第一路径的负载状态值;
根据所述负载状态值,从多个所述第一路径中确定出所述第一目标路径。
17.根据权利要求16所述的数据发送装置,其特征在于,所述确定子模块还用于:
以每条所述第一路径的负载状态值作为对应的权重值,从多个所述第一路径中通过加权随机的方式确定出所述第一目标路径。
18.根据权利要求13-17任一项所述的数据发送装置,其特征在于,所述发送子模块还用于:
将所述第一待发送数据缓存于所述第一目标路径对应的发送队列中,以便向所述第一接收对象发送。
19.根据权利要求18所述的数据发送装置,其特征在于,所述发送子模块还用于:
将所述第一目标路径的负载状态值与预设的阻塞阈值进行比较;
响应于所述第一目标路径的负载状态值超过所述阻塞阈值,对所述第一目标路径对应的发送队列进行阻塞处理,以便对所述第一待发送数据缓存。
20.根据权利要求12所述的数据发送装置,其特征在于,所述数据发送装置还包括:
查找模块,用于响应于达到预定的触发条件,从offset标记队列中查找目标offset标记,所述offset标记队列由至少两个offset标记组成,所述offset标记包括被成功发送的第一待发送数据对应的offset标记及被成功发送的第二待发送数据对应的offset标记,所述目标offset标记是最大连续组中序号最大的offset标记,所述最大连续组由所述offset标记队列中序号连续的多个offset标记组成,且最大连续组中包括有所述offset标记队列中序号最小的offset标记;
反馈模块,用于将所述目标offset标记发送至所述Kafka集群;
删除模块,用于将所述最大连续组从所述offset标记队列中删除。
21.根据权利要求20所述的数据发送装置,其特征在于,所述查找模块还用于:
响应于计时达到预设时间,从所述offset标记队列中查找所述目标offset标记。
22.根据权利要求20所述的数据发送装置,其特征在于,所述查找模块还用于:
响应于所述offset标记队列获得一个新的offset标记,从所述offset标记队列中查找所述目标offset标记。
23.一种数据发送方法,其特征在于,应用于与分布式数据存储系统连接的电子设备,所述分布式数据存储系统包括至少一个存储服务器,所述存储服务器包括至少一个分区,所述分区用于存储属于同一类型的数据,所述数据包括需要发送至第一接收对象的第一待发送数据及需要发送第二接收对象的第二待发送数据,所述方法包括:
从一个所述分区内以拉模式同时获取所述第一待发送数据和第二待发送数据;
根据所述第一待发送数据携带的第一接收对象的标识信息,通过预设路径向第一接收对象发送;
根据所述第二待发送数据携带的第二接收对象的标识信息,通过预设路径向第二接收对象发送;
其中,所述第一接收对象和所述第二接收对象是不同的数据消费对象,所述预设路径与所述数据消费对象之间为多对一关系。
24.根据权利要求23所述的数据发送方法,其特征在于,所述根据所述第一待发送数据携带的第一接收对象的第一标识信息,通过预设路径向第一接收对象发送的步骤包括:
将所述第一待发送数据及对应的所述第一标识信息发送至从所述预设路径中确定第一目标路径;
所述第一目标路径根据所述第一标识信息将所述第一待发送数据向所述第一接收对象发送。
25.根据权利要求24所述的数据发送方法,其特征在于,所述从所述预设路径中确定第一目标路径的步骤包括:
根据所述第一待发送数据所对应的特征标识,确定多个所述预设路径中的一个作为第一目标路径。
26.根据权利要求25所述的数据发送方法,其特征在于,所述根据所述第一待发送数据所对应的特征标识,确定多个所述预设路径中的一个作为第一目标路径的步骤包括:
若所述特征标识符合预设的第一要求,则从多个所述预设路径中选择与所述特征标识相对应的一个路径作为所述第一目标路径。
27.根据权利要求25所述的数据发送方法,其特征在于,所述根据所述第一待发送数据所对应的特征标识,确定多个所述预设路径中的一个作为第一目标路径的步骤包括:
若所述特征标识符合预设的第二要求,则按照预定的选择策略,从多个所述预设路径中确定出所述第一目标路径。
28.根据权利要求27所述的数据发送方法,其特征在于,所述按照预定的选择策略,从多个所述预设路径中确定出所述第一目标路径的步骤包括:
获取每条所述预设路径的负载状态值;
根据所述负载状态值,从多个所述预设路径中确定出所述第一目标路径。
29.一种数据发送装置,其特征在于,应用于与分布式数据存储系统连接的电子设备,所述分布式数据存储系统包括至少一个存储服务器,所述存储服务器包括至少一个分区,所述分区用于存储属于同一类型的数据,所述数据包括需要发送至第一接收对象的第一待发送数据及需要发送第二接收对象的第二待发送数据,所述装置包括:
获取模块,用于从一个所述分区内以拉模式同时获取所述第一待发送数据和第二待发送数据;
发送模块,用于根据所述第一待发送数据携带的第一接收对象的标识信息,通过预设路径向第一接收对象发送;
发送模块,用于根据所述第二待发送数据携带的第二接收对象的标识信息,通过预设路径向第二接收对象发送;
其中,所述第一接收对象和所述第二接收对象是不同的数据消费对象,所述预设路径与所述数据消费对象之间为多对一关系。
30.一种电子设备,其特征在于,包括:存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行,以实现权利要求1至11中任一项所述数据发送方法的步骤。
31.一种中间件系统,其特征在于,所述系统包括Kafka集群及电子设备,所述电子设备用以实现权利要求1至11中任一项所述数据发送方法的步骤;所述Kafka集群用于与所述电子设备通信。
32.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述数据发送方法的步骤。
CN201711362818.8A 2017-12-15 2017-12-15 数据发送方法、装置、电子设备及中间件系统 Active CN108093047B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711362818.8A CN108093047B (zh) 2017-12-15 2017-12-15 数据发送方法、装置、电子设备及中间件系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711362818.8A CN108093047B (zh) 2017-12-15 2017-12-15 数据发送方法、装置、电子设备及中间件系统

Publications (2)

Publication Number Publication Date
CN108093047A CN108093047A (zh) 2018-05-29
CN108093047B true CN108093047B (zh) 2021-07-27

Family

ID=62175930

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711362818.8A Active CN108093047B (zh) 2017-12-15 2017-12-15 数据发送方法、装置、电子设备及中间件系统

Country Status (1)

Country Link
CN (1) CN108093047B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874562B (zh) * 2018-06-21 2022-08-02 北京顺丰同城科技有限公司 分布式高并发消息队列推送系统
CN111797346B (zh) * 2019-04-09 2024-04-02 Oppo广东移动通信有限公司 数据处理方法、装置、存储介质、电子设备及服务器
CN110795428A (zh) * 2019-10-10 2020-02-14 中盈优创资讯科技有限公司 应用于工业物联网的时序数据存储方法和时序数据库

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106020013A (zh) * 2015-03-30 2016-10-12 日本电产三协株式会社 电子设备装置以及数据发送方法
CN106649766A (zh) * 2016-12-27 2017-05-10 北京锐安科技有限公司 一种基于kafka的消息处理方法
CN107092624A (zh) * 2016-12-28 2017-08-25 北京小度信息科技有限公司 数据存储方法、装置及系统
CN107332719A (zh) * 2017-08-16 2017-11-07 北京云端智度科技有限公司 一种cdn系统内日志实时分析的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10262032B2 (en) * 2016-02-24 2019-04-16 Salesforce.Com, Inc. Cache based efficient access scheduling for super scaled stream processing systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106020013A (zh) * 2015-03-30 2016-10-12 日本电产三协株式会社 电子设备装置以及数据发送方法
CN106649766A (zh) * 2016-12-27 2017-05-10 北京锐安科技有限公司 一种基于kafka的消息处理方法
CN107092624A (zh) * 2016-12-28 2017-08-25 北京小度信息科技有限公司 数据存储方法、装置及系统
CN107332719A (zh) * 2017-08-16 2017-11-07 北京云端智度科技有限公司 一种cdn系统内日志实时分析的方法

Also Published As

Publication number Publication date
CN108093047A (zh) 2018-05-29

Similar Documents

Publication Publication Date Title
CN107852413B (zh) 用于将网络分组处理卸载到gpu的网络设备、方法与存储介质
US10530846B2 (en) Scheduling packets to destination virtual machines based on identified deep flow
JP6224244B2 (ja) 作業密度を増加させ、エネルギー効率を向上させるための電力バランシング
US9185047B2 (en) Hierarchical profiled scheduling and shaping
CN110808922B (zh) 一种消息处理方法、装置、存储介质及电子设备
CN110247856B (zh) 服务器资源释放方法和装置
CN108093047B (zh) 数据发送方法、装置、电子设备及中间件系统
WO2019072162A1 (zh) 虚拟网络映射方法、设备和存储介质
CN104065540A (zh) 一种数据监控系统和方法
CN106411558A (zh) 一种数据流量限制的方法及系统
US20220137876A1 (en) Method and device for distributed data storage
CN105791381A (zh) 访问控制的方法及装置
CN101741729A (zh) 用于调度多个流的分组的方法和用于执行该方法的系统
CN113760559A (zh) 一种双核通信方法和电子设备
CN104780118B (zh) 一种基于令牌的流控方法及装置
CN113328953A (zh) 网络拥塞调整的方法、装置和存储介质
CN110677358A (zh) 一种报文处理方法及一种网络设备
CN112260962B (zh) 一种带宽控制方法及装置
WO2021057068A1 (zh) Rdma数据流控方法、系统、电子设备及可读存储介质
CN113472591B (zh) 一种业务性能的确定方法及装置
CN109831467B (zh) 数据传输方法、设备及系统
CN109688171B (zh) 缓存空间调度方法、装置和系统
CN106657097B (zh) 一种数据发送方法及装置
CN113839884B (zh) 流量控制方法和装置
CN115878309A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 202, 2 floors, 1-3 floors, No. 11 Shangdi Information Road, Haidian District, Beijing 100085

Applicant after: Beijing Xingxuan Technology Co.,Ltd.

Address before: Room 202, 2 floors, 1-3 floors, No. 11 Shangdi Information Road, Haidian District, Beijing 100085

Applicant before: Beijing Xiaodu Information Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant