CN112019442B - 基于有界一致性Hash算法的数据分发方法、系统、设备及介质 - Google Patents
基于有界一致性Hash算法的数据分发方法、系统、设备及介质 Download PDFInfo
- Publication number
- CN112019442B CN112019442B CN202010814953.7A CN202010814953A CN112019442B CN 112019442 B CN112019442 B CN 112019442B CN 202010814953 A CN202010814953 A CN 202010814953A CN 112019442 B CN112019442 B CN 112019442B
- Authority
- CN
- China
- Prior art keywords
- data
- flow
- data stream
- traffic
- stream group
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/80—Actions related to the user profile or the type of traffic
Abstract
本申请实施例提供了一种基于有界一致性Hash算法的数据分发方法,所述方法包括:接收多个数据流;将所述多个数据流划分为第一数据流组和第二数据流组;基于有界一致性Hash算法,将所述第一数据流组中的多个第一数据流写入到多个流量分区;计算每个流量分区的流量水位;根据所述每个流量分区对应的所述流量水位,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区;及基于所述多个流量分区将所述多个数据流分发至下游节点。本申请实施例提供的技术方案,可以通过所述数据流对所述多个数据流进行分组,并对不同的分组以不同的数据分配策略分配数据分区,解决了数据分发时的IO堵塞的问题和分区资源分配不均的问题,提高了数据分发效率。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种基于有界一致性Hash算法的数据分发方法、系统、设备及计算机可读存储介质。
背景技术
目前,流式数据传输链路的中不同的数据流之间的流量大小差异可能达到几十倍,甚至上百倍,从而导致以下后果:流量大的数据流在数据分发的过程中容易出现IO堵塞的问题,而流量小的数据流会由于数量会较多,在数据分发的过程中会增大在数据分发时的并发难度。且当前数据分发时,没有对所述数据流进行分区,所以会有一部分数据分区会因为处理的所述数据流过多而出现数据分发时并发效率低的问题,还会有一部分数据分区会因为处理的所述数据流过少出现分区资源空闲的问题。因此,如何解决数据分发的过程中的IO堵塞问题和数据分区资源分布不均的问题,从而进一步的数据分发效率,成为了当前要解决的技术问题之一。
发明内容
本申请实施例的目的是提供一种基于有界一致性Hash算法的数据分发方法、系统、计算机设备及计算机可读存储介质,用于解决数据分发的过程中的IO堵塞和数据分区资源分布不均的技术问题。
本申请实施例的一个方面提供了一种基于有界一致性Hash算法的数据分发方法,包括:接收多个数据流;将所述多个数据流划分为第一数据流组和第二数据流组,所述第二数据流组中的每个数据流的流量大小均大于所述第一数据流组中每个数据流的流量大小,所述第二数据流组的数据流的数量小于所述第一数据流组中的数据流的数量;基于有界一致性Hash算法,将所述第一数据流组中的多个第一数据流写入到多个流量分区;计算每个流量分区的流量水位;根据所述每个流量分区对应的所述流量水位,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区;及基于所述多个流量分区将所述多个数据流分发至下游节点。
可选的,所述将所述多个数据流划分为第一数据流组和第二数据流组,包括:获取每个数据流的流量大小和预设划分比例;及根据所述每个数据流的流量大小和所述预设划分比例,将所述多个数据流划分为第一数据流组和第二数据流组。
可选的,所述根据所述每个数据流的流量大小,将所述多个数据流划分为第一数据流组和第二数据流组,包括:以第一预设时间频率获取所述每个数据流对应的当前流量大小;及根据所述每个数据流对应的当前流量大小和所述预设划分比例,更新所述第一数据流组和所述第二数据流组。
可选的,所述基于有界一致性Hash算法,将所述第一数据流组中的多个第一数据流写入到多个流量分区,包括:获取每个第一数据流的流标识,以得到所述多个第一数据流的多个流标识;基于有界一致性Hash算法将所述多个流标识分配到多个流量分区;及根据每个流标识位置,将所述多个第一数据流写入到多个流量分区。
可选的,所述计算每个流量分区的流量水位,包括:以第二预设时间频率计算所述每个流量分区的流量水位,以更新所述每个流量分区的流量水位。
可选的,所述根据所述每个流量分区对应的所述流量水位,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区,包括:根据所述每个流量分区对应的所述流量水位,从所述多个流量分区中选择多个目标流量分区;及将所述第二数据流组中的多个第二数据流填补到所述多个目标流量分区。
可选的,所述根据所述每个流量分区对应的所述流量水位,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区,包括:根据所述每个流量分区对应的所述流量水位,对所述多个流量分区进行排序;及根据所述多个流量分区的排序,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区。
本申请实施例的一个方面又提供了一种基于有界一致性Hash算法的数据分发系统,包括:接收模块,用于接收多个数据流;划分模块,用于将所述多个数据流划分为第一数据流组和第二数据流组,所述第二数据流组中的每个数据流的流量大小均大于所述第一数据流组中每个数据流的流量大小,所述第二数据流组的数据流的数量小于所述第一数据流组中的数据流的数量;写入模块,用于为基于有界一致性Hash算法,将所述第一数据流组中的多个第一数据流写入到多个流量分区;计算模块,用于计算每个流量分区的流量水位;填补模块,用于根据所述每个流量分区对应的所述流量水位,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区;及输出模块,用于基于所述多个流量分区将所述多个数据流分发至下游节点。
本申请实施例的一个方面又提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时用于实现上述的基于有界一致性Hash算法的数据分发方法的步骤。
本申请实施例的一个方面又提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上述的基于有界一致性Hash算法的数据分发方法的步骤。
本申请实施例提供的基于有界一致性Hash算法的数据分发方法、系统、设备及计算机可读存储介质,通过所述数据流对所述多个数据流进行分组,并对不同的分组以不同的数据分配策略分配数据分区,解决了数据分发时的IO堵塞的问题和分区资源分配不均的问题,提高数据分发效率。
附图说明
图1示意性示出了根据本申请实施例的环境应用示意图;
图2示意性示出了根据本申请实施例一的基于有界一致性Hash算法的数据分发方法的流程图;
图3示意性示出了根据本申请实施例二的基于有界一致性Hash算法的数据分发方法的流程图;
图4示意性示出了图3中步骤S304的具体流程图;
图5示意性示出了图3中步骤S306的具体流程图;
图6示意性示出了图5中步骤S310的具体流程图;
图7示意性示出了图5中步骤S310的具体流程图;
图8示意性示出了根据本申请实施例二的基于有界一致性Hash算法的数据分发方法的整体流程图;
图9示意性示出了根据本申请实施例三的基于有界一致性Hash算法的数据分发系统的框图;以及
图10示意性示出了根据本申请实施例四的适于实现基于有界一致性Hash算法的数据分发方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请实施例进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请实施例,并不用于限定本申请实施例。基于本申请实施例中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
以下为本申请涉及到的术语解释:
LogId(流标识),可以通过三段式语义(如,部门+项目+业务)进行定义,以便可以快速锁定数据所属的范畴,同时,所述流标识还可以定义有其他附属信息,如,创建者信息等。数据流可以定义有schema(数据库的组织与结构),如字段、类型、必填与否等信息。schema可以用于所述数据流的分析和评估操作。根据定义的schema,所述数据流的元数据信息中可以被写入相应的字段值,如业务场景等,不同业务场景可以配置不同的SLA(Service-Level Agreement,服务等级协议)质量保障。需要说明的是,这些字段值可以被用户或管理写入和修改的。
Source,作为数据输入接口,用于从数据缓存层3中相应的主题(Topic)下消费一个或多个数据流。
Partition,作为数据分区模块,用于对Source接收到的多个数据流进行分区处理。
Sink,作为数据输出接口,用于将经过Partition分区后的多个数据流存储层5的存储终端。
图1示意性示出了根据本申请实施例的流式数据传输链路,所述的流式数据传输链路在于提供流式的数据传输服务,如用于实时流和离线流两大场景的数据收集和分发。实时流场景,对应于秒级别的数据时效性,主要用于将数据写入到kafka、hbase等数据库中。离线流场景,对应于小时级别或天级别的数据时效性,主要用于将数据写入到HDFS、hive等数据库中。所述流式数据传输系统可以由下几部分组成:BFE层1、网络路由层2、数据缓冲层3、数据分发层4、数据存储层5等。
所述BFE层1,可以通过一个或多个边缘节点实现,用于接收、处理、输出上报数据。所述上报数据可以是来自不同数据源的数据,例如,APP和Web的上报数据。
所述网络路由层2,可以通过一个或多个网关节点实现,用于将BFE层1提供的数据转发到数据缓冲层3。具体的,所述网络路由层2被配置连接于BFE层1,并可以适应各种不同的业务场景和数据协议,例如,被配置用于兼容解析HTTP(HyperText Transfer Protocol,超文本传输协议)协议的APP和Web数据,和GRPC协议的内部通信数据。
所述数据缓冲层3,可以通过消息分发订阅系统或上述系统集群实现。在一些实施例中,数据缓冲层3可以由多套kafka cluster(kafka集群)组成,起到数据削峰填谷的作用。不同重要性、优先级、数据吞吐量的数据,可以被分流到不同的kafka cluster中,以保障不同类型数据的价值,避免系统故障影响整体数据。
所述数据分发层4,可以由流式数据分发系统(由多个流量分发节点Collector构成)实现,用于内容转换和分发存储,即保障数据从数据缓冲层3获取并写入到数据存储层5中对应的存储终端。具体的,所述数据分发层4用于数据的分发落地,支持的分发场景包括HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)、Kafka、Hbase、ES(Elasticsearch)等,而在分发的过程中,由于不同存储终端的数据落地时效性要求可能不同,例如,HDFS的数据写入是按天进行任务的计算和应用,Kafka的数据写入一般是按秒进行任务的计算和应用,通常用于诸如实时推荐、实时计算等场景中。针对数据不同场景的分发要求,数据分发层4可以根据存储终端进行服务分组管理。例如,线上会划分为KafkaCollector组、HDFS Collector组等。不同Collector组会从数据缓冲层3获取相应主题(topic)的数据并分发至下游。
所述数据存储层5,用于存储数据,可以由不同形式的数据库构成,所述数据库可以是HDFS、ES、Hive、Kafka和Hbase等。
即,所述流式数据传输链路的数据流向如下:BFE层1→网络路由层2→数据缓冲层3→数据分发层4→数据存储层5。通过所述流式数据传输链路,数据源中的数据可以被传输到目标终端。具体如下:数据源可以输出以LogId为流标识的数据流,通过HTTP、RPC等协议将这些数据上报给边缘节点,并依次经过网关路由层2、数据缓冲层3、数据分发层4,并最终进入到数据存储层5中的存储终端中。
实施例一
图2示意性示出了根据本申请实施例一的基于有界一致性Hash算法的数据分发方法的流程图。本实施例可以被执行在数据分发层4中的计算机设备中。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。
如图2所示,该基于有界一致性Hash算法的数据分发方法可以包括步骤S200~S210,
其中:
步骤S200,接收多个数据流。
所述多个数据流,来自数据缓存层3,并通过计算机设备40分发至数据存储层5的存储终端中。计算机设备40可以通过Source(数据输入接口)接收数据缓冲层3输入的多个数据流。
步骤S202,将所述多个数据流划分为第一数据流组和第二数据流组。
其中,所述第二数据流组中的每个数据流的流量大小均大于所述第一数据流组中每个数据流的流量大小,所述第二数据流组的数据流的数量小于所述第一数据流组中的数据流的数量。
所述计算机设备40接收到所述多个数据流的流量有大有小,流量大的数据流的数据量可能是流量小的数据流的数据量可能几十倍,甚至上百倍。所述流量大的数据流在数据分发的过程中容易出现IO堵塞的问题,所述流量小的数据流会由于数量会较多,在数据分发的过程中会增大在数据分发时的并发难度。且当前数据分发时,没有对所述数据流进行分区,所以会有一部分数据分区会因为处理的所述数据流过多而出现IO堵塞的问题,也会有一部分数据分区会因为处理的所述数据流过少出现分区资源空闲的问题。为了解决IO堵塞的问题和分区资源分配不均的问题,所述计算机设备40可以根据每个数据流的流量大小将所述多个数据流划分为第一数据流组和第二数据流组。所述第一数据流组包括N小数据流,所述第二数据流组包括M大数据流,其中,每个小数据流小于每个大数据流,且N>M,N和M均为正整数。
以数据流的数量为(N+M)个为例,所述计算机设备40可以获取(N+M)个数据流中的每个数据流的流量大小,并将所述(N+M)个数据流根据所述流量大小,从大到小进行排序。当所述(N+M)个数据流排好序后,所述计算机设备40可以根据预先配置的分组规则将所述(N+M)个数据流中前M个数据流划分到第二数据流组中,将所述(N+M)个数据流中后N个数据流划分到第一数据流组中。
步骤S204,基于有界一致性Hash算法,将所述第一数据流组中的多个第一数据流写入到多个流量分区。
所述计算机设备40可以获取所述第一数据流组中每个第一数据流的流标识(logID),以得到N个流标识。通过所述有界一致性Hash算法将所述N个流标识均匀分配到多个流量分区(Partition)。其中,所述有界一致性Hash算法可以用于保证在分布式系统中每个节点都顺序执行相同的操作序列,在每一个指令上执行一致性算法就能够保证最终各个节点的数据都是一致的。
在所述N个流标识分配到所述多个流量分区后,所述计算机设备40可以根据每个流标识所在的位置,将所述N个第一数据流写入到多个流量分区。
步骤S206,计算每个流量分区的流量水位。
可以理解,不同数据流的流量大小是不同的,所以多个流量分区的流量水位也必然不同。所述流量水位为每个流量分区中数据流的流量大小之和。在本实施例中,所述计算机设备40可以通过计算所述每个流量分区中数据流的流量大小之和,来确定所述每个流量分区的流量水位。
步骤S208,根据所述每个流量分区对应的所述流量水位,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区。
每个流量分区的总流量空间相等,所以多个流量分区中水位大的剩余流量空间小。为了减少流量分区的压力,所述计算机设备40可以将所述第二数据流组中的M个第二数据流分别填充到流量水位低流量分区中。例如,所述计算机设备40可以将第一个第二数据流填充到所述多个流量分区中流量水位最低的流量分区中,将第二个第二数据流填充到所述多个流量分区中流量水位第二低的流量分区中,将第M个第二数据流填充到所述多个流量分区中流量水位第M低的流量分区中。
步骤S210,基于所述多个流量分区将所述多个数据流分发至下游节点。
所述计算机设备40可以预先为每个流量分区配置一个Sink(数据输出接口),以通过所述Sink将所述每个流量分区中的数据流分发至下游节点。
本实施例通过所述数据流的流量大小对所述多个数据流进行分组,并对不同的分组以不同的数据分配策略分配数据分区,可以有效的解决IO堵塞的问题和分区资源分配不均的问题。
实施例二
图3示意性示出了根据本申请实施例二的基于有界一致性Hash算法的数据分发方法的流程图。
如图3所示,该基于有界一致性Hash算法的数据分发方法可以包括步骤S300~S312,
其中:
步骤S300,接收多个数据流。
步骤S302,获取每个数据流的流量大小和预设划分比例。
所述预设划分比例可以是预先配置的一个定值,所述数据流的流量大小为所述数据流在单位之间内写入或传输的数据量,单位时间写入或传输的数据量越大则流量越大。
步骤S304,根据所述每个数据流的流量大小和所述预设划分比例,将所述多个数据流划分为第一数据流组和第二数据流组。
以所述数据流的数量为1000,所述预设划分比例为20%为例,那么,所述计算机设备40可以将所述数据流的流量大小为排名前200的数据流划分到所述第二数据流组中,剩余的后800的数据流划分到所述第一数据流组中。
步骤S306,基于有界一致性Hash算法,将所述第一数据流组中的多个第一数据流写入到多个流量分区。
步骤S308,计算每个流量分区的流量水位。
步骤S310,根据所述每个流量分区对应的所述流量水位,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区。
步骤S312,基于所述多个流量分区将所述多个数据流分发至下游节点。
在本实施例中,根据数据流的流量大小对多个数据流进行分组,对于流量小的数据流通过有界一致性Hash算法进行流量分区,减少了单个Sink处理数据流的个数,提高了Sink处理数据流的效率;对于流量大的数据流通过水位填补的方式进行流量分区,提高了对流量大的数据流的写入效率。
如图4所示,所述步骤S304还可以包括步骤S400~S402,其中:步骤S400,以第一预设时间频率获取所述每个数据流对应的当前流量大小;及步骤S402,根据所述每个数据流对应的当前流量大小和所述预设划分比例,更新所述第一数据流组和所述第二数据流组。应理解,从所述数据缓存层3接收到的数据流会不断发生变化,所以如果不及时更新所述第一数据流组和所述第二数据流组,则新加入的数据流无法合理分配对应的数据分区。因此,所述计算机设备40可以通过预先配置的第一预设时间频率获取所述每个数据流对应的当前流量大小,更新所述第一数据流组和所述第二数据流组。
在一些实施例中,所述计算机设备40还可以预先配置预设阈值,当所述新加入的数据流的数量大于所述预设阈值所述可以重新获取所述每个数据流对应的当前流量大小,更新所述第一数据流组和所述第二数据流组。
在本实施例中,通过第一预设时间频率更新所述数据流的分组,对新加入数据流进行数据流分组,以使所述新加入数据流可以及时得到合理分配对应的数据分区,提高了数据分发的效率。
如图5所示,所述步骤S306还可以进一步包括步骤S500~S504,其中:步骤S500,获取每个第一数据流的流标识,以得到所述多个第一数据流的多个流标识;步骤S502,基于有界一致性Hash算法将所述多个流标识分配到多个流量分区;及步骤S504,根据每个流标识位置,将所述多个第一数据流写入到多个流量分区。
所述每个第一数据流携带有一个对应的流标识(logID),每个流标识为对应的第一数据流的唯一标识。所述计算机设备40可以根据所述有界一致性Hash算法,将所述多个流标识平均分配到所述多个流量分区。在本实施例中,所述计算机设备40根据每个流标识位置,将所述多个第一数据流写入到多个流量分区;以使每个第一数据流只对应一个流量分区,一个流量分区只需处理少量对应的第一数据流;减少了单个流量分区处理数据流的个数,提高了数据分发的效率。
在示例性的实施例中,所述步骤S308还可以进一步的包括:以第二预设时间频率计算所述每个流量分区的流量水位,以更新所述每个流量分区的流量水位。
所述第二预设时间频率可以是预先配置的。可以理解,在所述第一数据流和所述第二数据流写入所述流量分区中时,每个所述流量分区的水位在不断的变化,所以需要及时更新所述每个流量分区的流量水位。本实施例通过所述第二预设时间频率计算所述每个流量分区的流量水位,以更新所述每个流量分区的流量水位,以使所述第二数据流可以更合理的填补到对应的数据分区中。
如图6所示,所述步骤S310还可以包括步骤S600~S602,其中:步骤S600,根据所述每个流量分区对应的所述流量水位,从所述多个流量分区中选择多个目标流量分区;及步骤S602,将所述第二数据流组中的多个第二数据流分配到所述多个目标流量分区。
在一些实施例中,所述计算机设备40可以根据所述第二数据流的数量从所述多个流量分区中选择多个目标流量分区,其中,目标流量分区为所述多个流量分区中水位最低的流量分区。以所述第二数据流的数量为200,所述流量分区的数量为600,那么,所述多个目标流量分区就是这600个流量分区中水位前200低的流量分区。本实施例通过从所述多个流量分区选择多个目标流量分区,提高了所述第二数据流的填补准确率和填补效率。
在另一些实施例中,所述计算机设备40可以根据预先设置的预设数值从所述多个流量分区中多个目标流量分区。
如图7所示,所述步骤S310还可以包括步骤S700~S702,其中:步骤S700,根据所述每个流量分区对应的所述流量水位,对所述多个流量分区进行排序;及步骤S702,根据所述多个流量分区的排序,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区。
在示例性的实施例中,所述计算机设备40可以通过第三预设时间频率对对所述多个流量分区按照水位从到高的顺序进行排序,并计算每个第二数据流的流量大小,将流量最大的第二数据流填补到排序最高的流量分区中,将流量第二大的第二数据流填补到排序第二高的流量分区中,以此类推。本实施例通过将所述第二数据流填补到对应的流量分区中,且按照流量大小和水位高低进行对应填补,进一步的提高了所述第二数据流的填补准确率和填补效率。
为了便于理解,如图8所示,本实施还提供了基于有界一致性Hash算法的数据分发的流程图。
实施例三
图9示意性示出了根据本申请实施例三的基于有界一致性Hash算法的数据分发系统的框图,该基于有界一致性Hash算法的数据分发系统可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例各程序模块的功能。
如图9所示,该基于有界一致性Hash算法的数据分发系统900可以包括接收模块910、划分模块920、写入模块930、计算模块940、填补模块950和输出模块960,其中:
接收模块910,用于接收模块,用于接收多个数据流。
划分模块920,用于将所述多个数据流划分为第一数据流组和第二数据流组,所述第二数据流组中的每个数据流的流量大小均大于所述第一数据流组中每个数据流的流量大小,所述第二数据流组的数据流的数量小于所述第一数据流组中的数据流的数量。
在示例性的实施例中,所述划分模块920,还用于:获取每个数据流的流量大小和预设划分比例;及根据所述每个数据流的流量大小和所述预设划分比例,将所述多个数据流划分为第一数据流组和第二数据流组。
在示例性的实施例中,所述划分模块920,还用于:以第一预设时间频率获取所述每个数据流对应的当前流量大小;及根据所述每个数据流对应的当前流量大小和所述预设划分比例,更新所述第一数据流组和所述第二数据流组。
写入模块930,用于为基于有界一致性Hash算法,将所述第一数据流组中的多个第一数据流写入到多个流量分区。
在示例性的实施例中,所述写入模块930,还用于:获取每个第一数据流的流标识,以得到所述多个第一数据流的多个流标识;基于有界一致性Hash算法将所述多个流标识分配到多个流量分区;及根据每个流标识位置,将所述多个第一数据流写入到多个流量分区。
计算模块940,用于计算每个流量分区的流量水位。
在示例性的实施例中,所述计算模块940,还用于:以第二预设时间频率计算所述每个流量分区的流量水位,以更新所述每个流量分区的流量水位。
填补模块950,用于根据所述每个流量分区对应的所述流量水位,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区。
在示例性的实施例中,所述填补模块950,还用于:根据所述每个流量分区对应的所述流量水位,从所述多个流量分区中选择多个目标流量分区;及将所述第二数据流组中的多个第二数据流填补到所述多个目标流量分区。
在示例性的实施例中,所述填补模块950,还用于:根据所述每个流量分区对应的所述流量水位,对所述多个流量分区进行排序;及根据所述多个流量分区的排序,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区。
输出模块960,用于基于所述多个流量分区将所述多个数据流分发至下游节点。
实施例四
图10示意性示出了根据本申请实施例四的适于实现基于有界一致性Hash算法的数据分发方法的计算机设备的硬件架构示意图。本实施例中,计算机设备40是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集合群)等。如图9所示,计算机设备40至少包括但不限于:可通过系统总线相互通信链接存储器1010、处理器1020、网络接口1030。其中:
存储器1010至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器1010可以是计算机设备40的内部存储模块,例如该计算机设备40的硬盘或内存。在另一些实施例中,存储器1010也可以是计算机设备40的外部存储设备,例如该计算机设备40上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器1010还可以既包括计算机设备40的内部存储模块也包括其外部存储设备。本实施例中,存储器1010通常用于存储安装于计算机设备40的操作系统和各类应用软件,例如基于有界一致性Hash算法的数据分发方法的程序代码等。此外,存储器1010还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器1020在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器1020通常用于控制计算机设备40的总体操作,例如执行与计算机设备40进行数据交互或者通信相关的控制和处理等。本实施例中,处理器1020用于运行存储器1010中存储的程序代码或者处理数据。
网络接口1030可包括无线网络接口或有线网络接口,该网络接口1030通常用于在计算机设备40与其他计算机设备之间建立通信链接。例如,网络接口1030用于通过网络将计算机设备40与外部终端相连,在计算机设备40与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband CodeDivision Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图10仅示出了具有部件310-330的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器1010中的基于有界一致性Hash算法的数据分发方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器1020)所执行,以完成本发明。
实施例五
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的基于有界一致性Hash算法的数据分发方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中的基于有界一致性Hash算法的数据分发方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集合中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集合成电路模块,或者将它们中的多个模块或步骤制作成单个集合成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种基于有界一致性Hash算法的数据分发方法,其特征在于,所述方法包括:
接收多个数据流;
将所述多个数据流划分为第一数据流组和第二数据流组,所述第二数据流组中的每个数据流的流量大小均大于所述第一数据流组中每个数据流的流量大小,所述第二数据流组的数据流的数量小于所述第一数据流组中的数据流的数量;
基于有界一致性Hash算法,将所述第一数据流组中的多个第一数据流写入到多个流量分区;
计算每个流量分区的流量水位;
根据所述每个流量分区对应的所述流量水位,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区;及
基于所述多个流量分区将所述多个数据流分发至下游节点;
其中,所述基于有界一致性Hash算法,将所述第一数据流组中的多个第一数据流写入到多个流量分区,包括:
获取每个第一数据流的流标识,以得到所述多个第一数据流的多个流标识;
基于有界一致性Hash算法将所述多个流标识分配到多个流量分区;及
根据每个流标识位置,将所述多个第一数据流写入到多个流量分区。
2.根据权利要求1所述的基于有界一致性Hash算法的数据分发方法,其特征在于,所述将所述多个数据流划分为第一数据流组和第二数据流组,包括:
获取每个数据流的流量大小和预设划分比例;及
根据所述每个数据流的流量大小和所述预设划分比例,将所述多个数据流划分为第一数据流组和第二数据流组。
3.根据权利要求2所述的基于有界一致性Hash算法的数据分发方法,其特征在于,所述根据所述每个数据流的流量大小,将所述多个数据流划分为第一数据流组和第二数据流组,包括:
以第一预设时间频率获取所述每个数据流对应的当前流量大小;及
根据所述每个数据流对应的当前流量大小和所述预设划分比例,更新所述第一数据流组和所述第二数据流组。
4.根据权利要求1~3中任一项所述的基于有界一致性Hash算法的数据分发方法,其特征在于,所述计算每个流量分区的流量水位,包括:
以第二预设时间频率计算所述每个流量分区的流量水位,以更新所述每个流量分区的流量水位。
5.根据权利要求4所述的基于有界一致性Hash算法的数据分发方法,其特征在于,所述根据所述每个流量分区对应的所述流量水位,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区,包括:
根据所述每个流量分区对应的所述流量水位,从所述多个流量分区中选择多个目标流量分区;及
将所述第二数据流组中的多个第二数据流填补到所述多个目标流量分区。
6.根据权利要求4所述的基于有界一致性Hash算法的数据分发方法,其特征在于,所述根据所述每个流量分区对应的所述流量水位,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区,包括:
根据所述每个流量分区对应的所述流量水位,对所述多个流量分区进行排序;及
根据所述多个流量分区的排序,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区。
7.一种基于有界一致性Hash算法的数据分发系统,其特征在于,包括:
接收模块,用于接收多个数据流;
划分模块,用于将所述多个数据流划分为第一数据流组和第二数据流组,所述第二数据流组中的每个数据流的流量大小均大于所述第一数据流组中每个数据流的流量大小,所述第二数据流组的数据流的数量小于所述第一数据流组中的数据流的数量;
写入模块,用于为基于有界一致性Hash算法,将所述第一数据流组中的多个第一数据流写入到多个流量分区;
计算模块,用于计算每个流量分区的流量水位;
填补模块,用于根据所述每个流量分区对应的所述流量水位,将所述第二数据流组中的多个第二数据流填补到所述多个流量分区;及
输出模块,用于基于所述多个流量分区将所述多个数据流分发至下游节点;
所述写入模块还用于:获取每个第一数据流的流标识,以得到所述多个第一数据流的多个流标识;基于有界一致性Hash算法将所述多个流标识分配到多个流量分区;及根据每个流标识位置,将所述多个第一数据流写入到多个流量分区。
8.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求1~6中任一项所述的基于有界一致性Hash算法的数据分发方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如权利要求1~6中任一项所述的基于有界一致性Hash算法的数据分发方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010814953.7A CN112019442B (zh) | 2020-08-13 | 2020-08-13 | 基于有界一致性Hash算法的数据分发方法、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010814953.7A CN112019442B (zh) | 2020-08-13 | 2020-08-13 | 基于有界一致性Hash算法的数据分发方法、系统、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112019442A CN112019442A (zh) | 2020-12-01 |
CN112019442B true CN112019442B (zh) | 2023-09-26 |
Family
ID=73504182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010814953.7A Active CN112019442B (zh) | 2020-08-13 | 2020-08-13 | 基于有界一致性Hash算法的数据分发方法、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112019442B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104822073A (zh) * | 2014-01-30 | 2015-08-05 | 上海数字电视国家工程研究中心有限公司 | 多媒体数据在单向网络和双向网络间动态分配流量的方法 |
CN109792410A (zh) * | 2016-09-12 | 2019-05-21 | 思杰系统有限公司 | 压缩流量的服务质量优先级重新排序的系统和方法 |
CN110290064A (zh) * | 2019-07-02 | 2019-09-27 | 河南信大网御科技有限公司 | 一种基于流特征的数据中心网络路由交换系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9244978B2 (en) * | 2014-06-11 | 2016-01-26 | Oracle International Corporation | Custom partitioning of a data stream |
-
2020
- 2020-08-13 CN CN202010814953.7A patent/CN112019442B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104822073A (zh) * | 2014-01-30 | 2015-08-05 | 上海数字电视国家工程研究中心有限公司 | 多媒体数据在单向网络和双向网络间动态分配流量的方法 |
CN109792410A (zh) * | 2016-09-12 | 2019-05-21 | 思杰系统有限公司 | 压缩流量的服务质量优先级重新排序的系统和方法 |
CN110290064A (zh) * | 2019-07-02 | 2019-09-27 | 河南信大网御科技有限公司 | 一种基于流特征的数据中心网络路由交换系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112019442A (zh) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111966289B (zh) | 基于Kafka集群的分区优化方法和系统 | |
CN112019605B (zh) | 数据流的数据分发方法和系统 | |
CN112507029B (zh) | 数据处理系统及数据实时处理方法 | |
CN111970195B (zh) | 数据传输方法和流式数据传输系统 | |
CN112751772B (zh) | 数据传输方法和系统 | |
CN111966943A (zh) | 流式数据分发方法和系统 | |
CN112506870B (zh) | 数据仓库增量更新方法、装置及计算机设备 | |
CN111447143B (zh) | 业务服务数据传输方法、装置、计算机设备和存储介质 | |
CN112269661B (zh) | 基于Kafka集群的分区迁移方法和装置 | |
CN112486915B (zh) | 数据存储方法及装置 | |
CN110830964B (zh) | 信息调度方法、物联网平台和计算机可读存储介质 | |
CN112422450B (zh) | 计算机设备、服务请求的流量控制方法及装置 | |
CN109445911B (zh) | Cvm实例的调整方法、装置、云平台和服务器 | |
CN109586970B (zh) | 资源分配方法、装置及系统 | |
CN112261125B (zh) | 集中单元的云化部署方法、装置及系统 | |
CN112910723B (zh) | 边缘终端管理方法、装置、设备及存储介质 | |
CN112019604A (zh) | 边缘数据传输方法和系统 | |
CN112019442B (zh) | 基于有界一致性Hash算法的数据分发方法、系统、设备及介质 | |
CN112256454B (zh) | 消息延时处理方法和系统 | |
CN112751722B (zh) | 数据传输质量监控方法和系统 | |
CN115225645A (zh) | 一种服务更新方法、装置、系统和存储介质 | |
CN113392131A (zh) | 数据处理方法、装置及计算机设备 | |
CN113612832A (zh) | 流式数据分发方法与系统 | |
CN112637288A (zh) | 流式数据分发方法和系统 | |
CN112995241A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |