一种嵌入式数据传输方法及系统技术方案

技术编号:37116923 阅读:14 留言:0更新日期:2023-04-01 05:12
本公开属于多线程数据传输技术领域,具体涉及一种嵌入式数据传输方法及系统,包括:接收线程接收来自客户端的数据信息,将所接收到的客户端数据信息写入接收队列并存储;工作线程接收到接收线程指令后,提取接收线程指令中的参数信息,确定所获取参数信息的接收队列的所属接收线程,完成所属的接收线程与相对应工作线程之间的数据传输;其中,一个所述接收队列对应一个工作线程,一个所述接收线程至少对应两个接收队列。应两个接收队列。应两个接收队列。

【技术实现步骤摘要】
一种嵌入式数据传输方法及系统


[0001]本公开属于多线程数据传输
,具体涉及一种嵌入式数据传输方法及系统。

技术介绍

[0002]本部分的陈述仅仅是提供了与本公开相关的
技术介绍
信息,不必然构成在先技术。
[0003]随着电力互联网和物联网的高速发展,在电力系统中使用的各种智能传感器、电子设备和移动终端的数量急剧增长,其也对电力系统中的嵌入式汇聚点的后台程序提出了更高的性能和并发要求。
[0004]据专利技术人了解,目前处理并发网络通常采用以下三种方案:
[0005](1)IO多路复用模型,通过单进程(非多线程)调用select函数来处理多个连接请求;可支持同时处理多个网络连接请求;但是,最大并发为1024个,当并发数较大时,处理性能低下。
[0006](2)多进程模型,当连接请求过来时,主进程fork产生一个子进程,让子进程负责与客户端连接进行数据通信,当客户主动关闭连接后,子进程结束运行;其处理模式简单,易于理解,连接请求很小时,效率较高;但是,当连接请求过多时,系统资源很快被耗尽。
[0007](3)多线程模式,启动多个工作现场,主线程负责接收客户端连接请求,工作线程负责与客户端通信,当连接请求过来时,ACCEPT线程将socket句柄放入一个数组中,工作线程中的空闲线程从数组中取走一个socket句柄,对应的工作线程再与客户端连接进行数据通信,当客户端主动关闭连接后,此工作线程又去从指定数组中去socket句柄,一次重复运行;虽然是能够克服当连接请求过多时系统资源损耗的缺陷,但是,不能支持并发量大的请求和量稍大的长连接请求。

技术实现思路

[0008]为了解决上述问题,本公开提出了一种嵌入式数据传输方法及系统,设计了一种嵌入式高并发、高性能的数据传输框架,应用于服务端,在智能电网中实现海量电力设备、智能传感器、智能终端等端设备的快速适配接入,减少资源浪费,优化电网的数据传输。
[0009]根据一些实施例,本公开的第一方案提供了一种嵌入式数据传输方法,采用如下技术方案:
[0010]一种嵌入式数据传输方法,包括:
[0011]接收线程接收来自客户端的数据信息,将所接收到的客户端数据信息写入接收队列并存储;
[0012]工作线程接收到接收线程指令后,提取接收线程指令中的参数信息,确定所获取参数信息的接收队列的所属接收线程,完成所属的接收线程与相对应工作线程之间的数据传输;
[0013]其中,一个所述接收队列对应一个工作线程,一个所述接收线程至少对应两个接收队列。
[0014]作为进一步的技术限定,在所述接收线程接收来自客户端的数据信息的过程中,当客户端发送连接请求时,所述接收线程调用Accept服务来接收来这客户端的连接请求,通过Accept服务中的SOCKET

FD分发给一个接收线程,接收到SOCKET

FD的接收线程将FD加入select的FD_SET中进行监听,实现接收线程与客户端之间的通信,完成接收线程接收来自客户端的数据信息。
[0015]作为进一步的技术限定,为减少数据复制,所述接收线程在开始接收数据时需为将要接收的数据从接收队列中分配一块空间;当接收线程接收到一条完整的客户端数据信息后,通过UNINX

UDP发送消息,告知某一工作线程到指定的接收队列中提取相应的参数信息并处理。
[0016]作为进一步的技术限定,在所述将所接收到的客户端数据信息写入接收队列并存储的过程中,启动接收线程,使用epoll设置可读集,通过epoll运用到IO多路复用技术和非阻塞IO技术,根据所设置的可读集判断是否有事件通知,根据epoll设置可读集的超时时间,当TCP链路超时时,重新设置可读集;当有事件通知则进行socket集合遍历过程;通过对socket集合的遍历来判断是否有数据接收,socket集合遍历的过程是对接收线程管理的所有socket进行遍历,当遍历完成并没有发现事件时,则重新返回设置可读集进行下一轮判断,当发现有数据事件时,则进行数据接收;接收每个socket的数据,判断所接收到的数据是否是完整的协议报文,若是,则放入到内存池技术的接收消息队列,向工作线程发送接收线程指令,若否,则重新返回设置可读集进行下一轮判断。
[0017]进一步的,所述接收队列属于多线程的共享资源,使用加锁技术,在epoll和数据接收队列处理中使用到事件触发机制,在接收线程与消息的接收队列之间的写入过程使用负载均衡技术。
[0018]进一步的,设置可读集,设定好约定的超时时间,在无处理消息到来之前,一直处在阻塞状态,当检测到超时时,进行超时处理:从epoll队列中删除socket链路句柄,设置可读集,当收到接收线程的处理通知时,接收消息内容,对消息进行分析,再根据消息的内容到指定的接收队列中取数据,再对数据进行相应的处理。
[0019]作为进一步的技术限定,所述接收线程先所述工作线程发送指令时采用负载均衡策略。
[0020]根据一些实施例,本公开的第二方案提供了一种嵌入式数据传输系统,采用如下技术方案:
[0021]一种嵌入式数据传输系统,包括:
[0022]接收模块,其被配置为接收线程接收来自客户端的数据信息,将所接收到的客户端数据信息写入接收队列并存储;
[0023]传输模块,其被配置为工作线程接收到接收线程指令后,提取接收线程指令中的参数信息,确定所获取参数信息的接收队列的所属接收线程,完成所属的接收线程与相对应工作线程之间的数据传输;
[0024]其中,一个所述接收队列对应一个工作线程,一个所述接收线程至少对应两个接收队列。
[0025]根据一些实施例,本公开的第三方案提供了一种计算机可读存储介质,采用如下技术方案:
[0026]一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如本公开第一方面所述的嵌入式数据传输方法中的步骤。
[0027]根据一些实施例,本公开的第四方案提供了一种电子设备,采用如下技术方案:
[0028]一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如本公开第一方面所述的嵌入式数据传输方法中的步骤。
[0029]与现有技术相比,本公开的有益效果为:
[0030]本公开提出了一种嵌入式高并发、高性能数据传输框架,支持数据采集终端高并发接入,有效提升变电站在线监测、辅助设备监测等业务系统的实时上传、数据接入可靠性能力,优化业务系统数据不间断稳定传输功能。同时减少占用大量的服务器资源及机房资源,造成资源的浪费,达到优化整个电网系统的目的。
附图说明
[0031]构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。
[0032]图1是本公开实施例一中的嵌入式数据传输方法的流程图;
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种嵌入式数据传输方法,其特征在于,包括:接收线程接收来自客户端的数据信息,将所接收到的客户端数据信息写入接收队列并存储;工作线程接收到接收线程指令后,提取接收线程指令中的参数信息,确定所获取参数信息的接收队列的所属接收线程,完成所属的接收线程与相对应工作线程之间的数据传输;其中,一个所述接收队列对应一个工作线程,一个所述接收线程至少对应两个接收队列。2.如权利要求1中所述的一种嵌入式数据传输方法,其特征在于,在所述接收线程接收来自客户端的数据信息的过程中,当客户端发送连接请求时,所述接收线程调用Accept服务来接收来这客户端的连接请求,通过Accept服务中的SOCKET

FD分发给一个接收线程,接收到SOCKET

FD的接收线程将FD加入select的FD_SET中进行监听,实现接收线程与客户端之间的通信,完成接收线程接收来自客户端的数据信息。3.如权利要求1中所述的一种嵌入式数据传输方法,其特征在于,为减少数据复制,所述接收线程在开始接收数据时需为将要接收的数据从接收队列中分配一块空间;当接收线程接收到一条完整的客户端数据信息后,通过UNINX

UDP发送消息,告知某一工作线程到指定的接收队列中提取相应的参数信息并处理。4.如权利要求1中所述的一种嵌入式数据传输方法,其特征在于,在所述将所接收到的客户端数据信息写入接收队列并存储的过程中,启动接收线程,使用epoll设置可读集,通过epoll运用到IO多路复用技术和非阻塞IO技术,根据所设置的可读集判断是否有事件通知,根据epoll设置可读集的超时时间,当TCP链路超时时,重新设置可读集;当有事件通知则进行socket集合遍历过程;通过对socket集合的遍历来判断是否有数据接收,socket集合遍历的过程是对接收线程管理的所有socket进行遍历,当遍历完成并没有发现事件时,则重新返回设置可读集进行下一轮判断,当...

【专利技术属性】
技术研发人员:韩鹏牛立福张俊岭刘保尹朋周怡牛爱梅隗寿辰
申请(专利权)人:山东鲁软数字科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1