一种超大消息传输方法及装置与流程

文档序号:30607415发布日期:2022-07-01 22:46阅读:117来源:国知局
一种超大消息传输方法及装置与流程

1.本发明涉及消息中间件领域,具体提供一种超大消息传输方法及装置。


背景技术:

2.nats是一种简单、安全、高性能的数字、服务和设备通信系统,为现代企业提供了良好的消息传输系统。同时nats是一个开源、轻量级、高性能的分布式消息中间件,实现了高可伸缩性和优雅的publish/subscribe模型。
3.现有技术下大消息在弱网环境下传输异常,经常存在安全问题,如何避免这种情况的产生是本领域技术人员亟待解决的事情。


技术实现要素:

4.本发明是针对上述现有技术的不足,提供一种实用性强的超大消息传输方法。
5.本发明进一步的技术任务是提供一种设计合理,安全适用的超大消息传输装置。
6.本发明解决其技术问题所采用的技术方案是:
7.一种超大消息传输方法,包括发送客户端、服务端和接收客户端,所述发送客户端进行消息元数据、切片元数据和切片数据的组织和发送、以及建立连接通道和创建请求的发送;
8.所述服务端进行所述消息元数据、切片元数据和切片数据的管理,以及通道的创建和管理、提供超大消息缓存和断点续传的能力;
9.所述接收客户端进行从所述服务端拉取数据并按照规则校验和还原大消息,将拉取的数据进行缓存,提供数据重传能力。
10.进一步的,首先将发送客户端、服务端和接收客户端建立连接并创建通道,所述发送客户端和接收客户端使用grpc发送nats连接信息到服务器,所述服务器使用所述nats信息连接nats服务器;
11.同时所述服务端分配clientid给所述发送客户端和接收客户端,所述发送客户端使用grpc进行队列模型的创建、删除、更新,所述接收客户端获取队列模型信息、队列列表和判断队列是否存在。
12.进一步的,发送客户端发送任务描述信息到服务端,所述服务端根据消息管理逻辑进行处理,如果是新消息,则初始化对应消息的数据stream和数据存储桶,并向ack-inbox回复临时数据存储桶,同时向消息事件stream中发送一条任务消息格式的编码数据。
13.进一步的,所述发送客户端获取数据存储桶信息后,发送数据存储桶中的切片元信息到服务端,所述服务端将所述切片元信息与数据存储中存储的切片元信息对比,判断对应数据段是否需要发送,若需要发送,则标记切片元信息中的标记位,将标记后的切片元信息返回给发送客户端。
14.进一步的,将标记后的切片元信息返回给发送客户端,所述发送客户端根据返回结果决定是否需要向对应数据存储桶中发送相关切片数据,数据存储桶中key为切片索引,
value为对应数据段;
15.切片数据存储成功后发送切片事件到服务端,所述服务端根据接收到的切片事件,如果对应数据存储桶中含有对应数据切片,将切片事件写入数据stream中。
16.进一步的,将切片事件写入数据stream中之后,所述发送客户端向所述服务端发送结束任务消息,所述服务端根据任务元信息验证服务端存储数据是否完备,不完备则返回相关重传逻辑信息;
17.如果完备,则返回任务结束回复信息同时向数据stream中写入任务结束事件。
18.进一步的,所述接收客户端向所述服务端发送拉取队列名的消息,所述服务端进行创建消息stream对应的consumer,并且使用pull模式,将创建的consumer返回到所述接收客户端。
19.进一步的,所述接收客户端解析获得消息stream对应的conusumer后,从消息stream中解析并获取数据切片stream,所述接收客户端创建数据切片stream对应的consumer,并拉取获得切片事件。
20.进一步的,解析所述拉取获得的切片事件,得到对应的数据存储桶信息和对应数据的校验值,并根据本地缓存区情况决定是否去目标桶中获取相关数据,当读取到对应任务结束事件后,此大消息结束,删除对应的数据切片consumer,接收客户端提交对消息事件consumer的确认。
21.一种超大消息传输装置,包括:至少一个存储器和至少一个处理器;
22.所述至少一个存储器,用于存储机器可读程序;
23.所述至少一个处理器,用于调用所述机器可读程序,执行一种超大消息传输方法。
24.本发明的一种超大消息传输方法及装置和现有技术相比,具有以下突出的有益效果:
25.本发明包含发送客户端、接收客户端和服务端,能够在资源受限的条件下提供传输超大消息的能力。同时服务端和接收端提供本地缓存能力,能够实现超大消息的断点续传能力。
附图说明
26.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
27.附图1是一种超大消息传输方法中发送客户端到服务端的流程示意图;
28.附图2是一种超大消息传输方法中接收客户端到服务端的流程示意图;
29.附图3是一种超大消息传输方法的架构示意图。
具体实施方式
30.为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下
所获得的所有其他实施例都属于本发明保护的范围。
31.下面给出一个最佳实施例:
32.如图1、2所示,本实施例中的一种超大消息传输方法,包括发送客户端、服务端和接收客户端,发送客户端进行消息元数据、切片元数据和切片数据的组织和发送、以及建立连接通道和创建请求的发送。
33.服务端进行所述消息元数据、切片元数据和切片数据的管理,以及通道的创建和管理、提供超大消息缓存和断点续传的能力,
34.接收客户端进行从所述服务端拉取数据并按照规则校验和还原大消息,将拉取的数据进行缓存,提供数据重传能力。
35.首先将发送客户端、服务端和接收客户端建立连接并创建通道,发送客户端和接收客户端使用grpc发送nats连接信息到服务器,服务器使用nats信息连接nats服务器。其中,nats连接信息包括集群地址、用户名和密码,此方法解决客户端和服务端使用nats信息不一致问题。
36.同时服务端分配clientid给发送客户端和接收客户端,保证客户端的唯一性,并进行客户端信息管理、nats信息管理、账户管理。发送客户端使用grpc进行队列模型的创建、删除、更新,所述接收客户端获取队列模型信息、队列列表和判断队列是否存在。
37.发送客户端发送大消息到服务端的具体流程如下:
38.发送客户端发送任务描述信息到服务端,服务端根据消息管理逻辑处理,如果是新消息,则初始化对应消息的数据stream和数据存储桶,数据存储桶中除了包含数据切片,还包括数据总分片数、接收到的分片数等额外的元信息。并向ack-inbox回复临时数据存储桶等信息,同时向消息事件stream中发送一条任务消息格式的编码数据,该消息事件stream数据使得接收者感知大消息传输事件,同时能够获取消息关联的数据stream。
39.发送客户端获取数据存储桶信息后,发送切片元信息到服务端。服务端将该切片元信息,与数据存储中存储的切片元信息对比,判断对应数据段是否需要发送,若需要发送,则标记切片元信息中的标记位。最后将标记后的切片元信息返回给发送客户端。
40.发送客户端根据返回结果决定是否需要向对应数据存储桶中发送相关切片数据,数据存储桶中key为切片索引,value为对应数据段。切片数据存储成功后发送切片事件到服务端。服务端根据接收到切片事件后,如果对应数据存储桶中含有对应数据切片,将切片事件写入数据stream中,切片事件包含消息id、切片索引号、切片校验码、数据存储桶等。
41.大消息发送完成后,发送客户端向服务端发送结束任务消息,服务端根据任务元信息验证服务端存数据是否完备,不完备返回相关重传逻辑信息,如果完备返回任务结束回复信息同时向数据stream中写入任务结束事件。
42.如图3所示,接收客户端向服务端进行拉取大消息的具体操作步骤为:
43.接收客户端向服务端发送拉取消息,消息包括使用的队列名。服务端根据拉取信息,进行相关处理:
44.创建消息stream对应的consumer,并且使用pull模式。最后将创建的consumer返回到接收客户端,接收客户端解析获得消息stream对应的conusumer后,从消息stream中解析并获取数据切片stream。
45.接收客户端创建数据切片stream对应的consumer,并拉取获得切片事件。解析该
切片事件获得对应的数据存储桶信息、对应数据的校验值,并根据本地缓存区情况决定是否去目标桶中获取相关数据。当读取到对应任务结束事件后,此大消息结束,删除对应的数据切片consumer。客户端提交对消息事件consumer的确认,获取下一条消息事件。
46.本发明中5类消息传输格式为:
47.(1)消息元数据:
48.大消息的整体信息包括:消息标识、通道标识、客户端标识、消息大小、消息切片大小。消息标识:标识大消息的唯一性;通道标识:传输消息所使用的通道,即发送和接收客户端和服务端之间传输消息的逻辑链路;客户端标识:标识客户端的唯一性;消息大小:大消息的整体长度;消息切片大小:传输的大消息需要切分成小的消息片段进行传输。
49.(2)切片元数据:
50.切片元数据整体信息包括:消息标识、通道标识、客户端标识、切片消息体。切片消息体包含:大消息分片索引、大消息分片指纹、标记位。大消息分片索引:每一片大消息的索引号;大消息分片指纹:每一个大消息的哈希值,用来进行切片数据的校验;标记位:该标记位用来识别切片数据段是否已经传输成功,若该标记位已被标记,则相应的切片数据段无需发送,否则需要发送该切片数据段。
51.(3)切片事件:
52.切片事件整体包括:消息标识、通道标识、客户端标识、大消息分片索引、大消息分片指纹、数据存储桶名字。数据存储桶:用来存储每一个切片数据段,每一个超大文件对应一个数据存储桶和数据stream。该切片事件需要保存到数据stream中,接收客户端根据数据存储桶信息获得存储的切片数据。
53.(4)消息事件:
54.消息事件整体包括:数据stream信息,该信息存储到消息stream中,并且每个通道对应一个消息stream。接收客户端根据消息stream信息获得数据stream,从而获取切片数据。
55.(5)结束任务消息:
56.结束任务消息整体包括:消息标识、通道标识、客户端标识、结束任务标识。结束任务标识:标识是否结束任务。当服务端接收到该结束任务标识,进行数据校验,若数据完整,返回发送客户端任务完成,否则进行数据重传。
57.一种超大消息传输装置,包括:至少一个存储器和至少一个处理器;
58.所述至少一个存储器,用于存储机器可读程序;
59.所述至少一个处理器,用于调用所述机器可读程序,执行一种超大消息传输方法。
60.上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括但不限于上述具体的实施方式,任何符合本发明的一种超大消息传输方法及装置权利要求书的且任何所述技术领域普通技术人员对其做出的适当变化或者替换,皆应落入本发明的专利保护范围。
61.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1