一种基于文件的数据传输方法与流程

文档序号:31629079发布日期:2022-09-24 01:26阅读:106来源:国知局
一种基于文件的数据传输方法与流程

1.本发明涉及软件系统的数据传输领域,提供了一种基于文件的数据传输方法。


背景技术:

2.数据传输一直是软件行业的重要内容,关于数据传输的方案也层出不穷,常见的有直接通过网络将数据传输给目标系统,也有通过将消息中间件作为桥接,现将消息发送至消息中间件,目标系统再消费消息中间件消息的方式发送消息。
3.直接通过网络传输给目标系统会受限于网路带宽和接收系统的处理能力,如果网络带宽比较小或者目标系统接收能力有限,则发送端必然会降低吞吐量,如果发送端是重要业务系统,则可能会导致业务系统的处理能力降低,导致生产事故。
4.通过消息中间件作为桥接的方式处理消息,虽然可以提高吞吐量,但这种方式需要消息发送和接收方都需要对接消息中间件,无形中增加了系统复杂度,同时消息中间件的可靠性也会成为其中的关键一环。
5.目前在互联网应用业务系统在实际使用中会会产生大量的数据,这些数据最开始都是缓存在内存里,并通过互联网进行传输到其他系统并进行存储,特别是互联网应用业务系统会出现瞬时产生大量数据,当这些数据未被及时处理,时将会内存的缓存部分将会溢出,造成系统故障,且现有技术中互联网应用业务系统在数据传输时,或多或少的会对系统的运行和稳定有所影响,存在无法将数据可靠无损的传输到目的地发可能性,且存在当系统瞬时产生大量数据时会影响业务系统的性能以及稳定运行。
6.现有技术中当海量数据涌入缓存,业务系统无法处理时,则会出现业务系统拒绝服务的问题。


技术实现要素:

7.本发明的目的在于解决现有技术中互联网应用业务系统在数据传输时,或多或少的会对系统的运行和稳定有所影响,存在无法将数据可靠无损的传输到目的地发可能性,且存在当系统瞬时产生大量数据时会影响业务系统的性能以及稳定运行的问题。
8.为了实现上述目的本发明采用以下技术手段:
9.一种基于文件的数据传输方法,文件接收系统与业务系统部署在不同的服务器上,包括以下步骤:
10.业务系统数据处理主流程:
11.将业务系统数据写入缓存,启用缓存定时清理任务,同时当缓存数据的数据量满足阈值条件,调用序列号生成流程获取当前时间序列号seq,将缓存数据以文件名“年月日时分秒+seq.dat”写入业务系统所在的本地磁盘的目录d;
12.缓存定时清理任务:
13.定时轮询,判断缓存中是否有数据,如有数据,则调用序列号生成流程获取当前时间序列号seq,将缓存数据以文件名“年月日时分秒+seq.dat”写入业务系统所在的本地磁
盘;
14.序列号生成流程:
15.用于在规定时间段内生成唯一的当前时间序列号seq,所述规定时间段为1秒或者1毫秒;
16.文件扫描任务流程:
17.扫描目录d,获得后缀名为.dat的文件列表,并将文件句柄放入列表list,遍历list,将list中文件句柄对应文件的后缀名改为.data.sync;
18.磁盘文件处理系统:
19.扫描目录d,获取目录d下所有以.data.sync为后缀名的文件句柄列表,并赋值给变量l,遍历变量l,读取文件句柄对应的.data.sync文件的数据data,数据data发送到文件数据接收系统。
20.文件数据接收系统:
21.启动磁盘数据文件入库处理任务,同时接收磁盘数据文件处理发送过来的数据data存入缓存,并解析之后写入数据库,如果写入成功,则流程结束,否则,调用序列号生成流程获取当前时间序列号seq,将缓存数据以文件名“年月日时分秒+seq.dat”保存至文件数据接收系统所在的本地磁盘b的目录dir:
22.磁盘数据文件入库处理任务
23.扫描目录dir,将dir目录下所有后缀名为.dat的文件句柄放入l,遍历l,读取文件句柄对应的.dat的文件中的数据data,将数据data写入数据库,如果写入成功,则删除目录dir中文件句柄对应的.dat文件。
24.上述技术方案中,序列号生成流程包括以下步骤:
25.步骤3.1:定义全局静态变量lasttime,其初始值为当前时间,精确到秒;
26.步骤3.2:定义全局静态变量seq,其初始值为0;
27.步骤3.3:获取锁l;
28.步骤3.2:获取当前时间t,精确到秒;
29.步骤3.4:如果t等于lasttime,则行步骤3.4.1,否则执行3.5;
30.步骤3.4.1:将seq的值加1,如果seq值大于10000,则seq值重置为0,否则执行步骤3.5;
31.步骤3.5:将lasttime值设置为t;
32.步骤3.6:释放锁l。
33.上述技术方案中,业务系统数据处理主流程具体包括:
34.步骤1.1:定义全局缓存变量c,定义数据将要写入的业务系统所在的本地磁盘的目录;
35.步骤1.2:启动缓存定时清理任务,该任务为定时循环任务,且该任务为单独的线程执行;
36.步骤1.3:获得缓存c的锁l,接着将业务系统的数据写入缓存c;
37.步骤1.5:判断缓存c中的数据量是否满足写入磁盘的条件,如果是,则调用流程1.5.1,否则执行1.6
38.步骤1.5.1:则调用序列号生成流程,获取当前时间序列号seq;
39.步骤1.5.2:在目录d中创建文件,并将文件命名为年月日时分秒+seq.tmp,该文件此时是一个空文件;
40.步骤1.5.3:将缓存c中的数据写入.tmp文件;
41.步骤1.5.4:缓存c中的数据写完之后,将.tmp文件的后缀名改为.dat
42.步骤1.5.5:清空缓存c;
43.步骤1.6:释放缓存锁l。
44.上述技术方案中,缓存定时清理任务包括以下步骤:
45.步骤2.1:获取缓存c的锁l;
46.步骤2.2:判断缓存c中是否有数据,如果有,则执行步骤2.2.1,否则,执行步骤2.3;
47.步骤2.2.1:调用步骤3序列号生成流程,获取当前时间序列号seq;
48.步骤2.2.2:在目录d中创建文件,并将文件命名为:年月日时分秒+seq.tmp;
49.步骤2.2.3:将缓存c中的数据写入.tmp文件;
50.步骤2.2.4:将.tmp文件后缀名重命名为.dat;
51.步骤2.2.5:清空缓存c;
52.步骤2.3:释放缓存锁l。
53.上述技术方案中,磁盘文件处理系统包括以下步骤:
54.步骤4.1:启动文件扫描任务,该任务为定时循环任务,且由一单独线程执行;
55.步骤4.2:扫描目录d下所有后缀名为.data.sync的文件,并将所有扫描到的文件句柄存在列表l;
56.步骤4.3:遍历列表l,读取文件句柄对应的.data.sync文件的数据data;
57.步骤4.4:将数据data发送到文件数据接收系统,发送操作由单独线程执行,如果发送成功,则执行步骤4.5,否则执行步骤4.6;
58.步骤4.5:删除文件句柄对应的.data.sync文件;
59.步骤4.6:将.data.sync文件后缀名重新改为.dat。
60.上述技术方案中,文件数据接收系统包括以下步骤:
61.步骤6.1:定义全局数据写磁盘目录dir;
62.步骤6.2:启动磁盘数据文件入库处理任务,该任务为定时循环任务,且为单独的线程执行
63.步骤6.2:接收磁盘数据文件处理系统发送过来的数据data;
64.步骤6.3:将数据解析之后写入数据库或者其他介质,如果写入成功,则流程结束,否则,执行步骤6.4;
65.步骤6.4:调用序列号生成流程,获取当前时间唯一序列号seq;
66.步骤6.5:在目录dir新建文件名称为年月日时分秒+seq.tmp的文件,将数据data写入.tmp文件;
67.步骤6.6:数据data写完之后,将.tmp文件后缀名改为.dat。
68.上述技术方案中,磁盘数据文件入库处理任务流程包括以下步骤:
69.步骤7.1:扫描目录dir;
70.步骤7.2:将dir目录下所有后缀名为.dat的文件句柄放入l;
71.步骤7.3:遍历l;
72.步骤7.4:读取文件句柄对应的.dat文件的数据data,将数据data写入数据库或者其他介质,如果写入成功,则删除文件句柄对应的.dat文件
73.上述技术方案中,文件扫描任务流程包括以下步骤:
74.步骤8.1:扫描磁盘目录d,获得后缀名为.dat的文件列表,并将文件句柄放入列表list
75.步骤8.2:遍历list
76.步骤8.3:将list中文件句柄对应文件的后缀名改为.data.sync
77.因为本发明采用上述技术方案,因此具备以下有益效果:
78.1、通过不断进行文件重命名的方式来隔离各个系统对文件的处理,以防止文件读写冲突。
79.2、案通过写本地磁盘的方式可以方便实现数据的缓存,防止文件丢失。
80.3、案通过相互独立的系统对文件读写和发送进行隔离操作,可以防止因为数据发送和读写瓶颈导致数据待发送系统的吞吐量降低。
81.4、案通过循环重命名的方式,可以保证在数据发送失败的情况下不丢失并且可以重复处理。
82.5、本地落盘的方式缓存数据可以有效的降低因为接收方的因素导致的业务系统稳定性和吞吐量降低的问题。
83.6、系统与文件数据发送系统相互独立,通过共享磁盘目录的方式对数据进行处理可以有效降低因为文件数据发送系统导致的业务系统的可靠性和吞吐量降低的问题。
84.7、本地落盘的方式缓存数据,可以有效的降低因为第三方中间件因素导致的业务系统的稳定性和吞吐量降低的几率。
85.8、本地落盘与共享存储的方式可以降低对第三方中间件的应用,降低技术成本
86.9、重命名的方式可以有效的控制文件读写冲突。
87.10、可以有效的降低网络因素导致的系统稳定性和吞吐量降低的问题。
附图说明
88.图1为整体框架图;
89.图2业务系统数据处理主流程示意图;
90.图3缓存定时清理任务流程示意图;
91.图4序列号生成流程示意图;
92.图5磁盘文件处理系统主流程示意图;
93.图6文件扫描任务流程示意图;
94.图7文件数据接收系统流程示意图;
95.图8磁盘数据文件入库处理任务流程示意图。
具体实施方式
96.以下将对本发明的实施例给出详细的说明。尽管本发明将结合一些具体实施方式进行阐述和说明,但需要注意的是本发明并不仅仅只局限于这些实施方式。相反,对本发明
进行的修改或者等同替换,均应涵盖在本发明的权利要求范围当中。
97.另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员将理解,没有这些具体细节,本发明同样可以实施。
98.一种基于文件的数据传输方法,文件接收系统与业务系统部署在不同的服务器上,包括以下步骤:
99.业务系统数据处理主流程:
100.将业务系统数据写入缓存,启用缓存定时清理任务,同时当缓存数据的数据量满足阈值条件,调用序列号生成流程获取当前时间序列号seq,将缓存数据以文件名“年月日时分秒+seq.dat”写入业务系统所在的本地磁盘的目录d:
101.缓存定时清理任务:
102.定时轮询,判断缓存中是否有数据,如有数据,则调用序列号生成流程获取当前时间序列号seq,将缓存数据以文件名“年月日时分秒+seq.dat”写入业务系统所在的本地磁盘;
103.序列号生成流程:
104.用于在规定时间段内生成唯一的当前时间序列号seq,所述规定时间段为1秒或者1毫秒;
105.文件扫描任务流程:
106.扫描目录d,获得后缀名为.dat的文件列表,并将文件句柄放入列表list,遍历list,将list中文件句柄对应文件的后缀名改为.data.sync;
107.磁盘文件处理系统:
108.扫描目录d,获取目录d下所有以.data.sync为后缀名的文件句柄列表,并赋值给变量l,遍历变量l,读取文件句柄对应的.data.sync文件的数据data,数据data发送到文件数据接收系统。
109.文件数据接收系统:
110.启动磁盘数据文件入库处理任务,同时接收磁盘数据文件处理发送过来的数据data存入缓存,并解析之后写入数据库,如果写入成功,则流程结束,否则,调用序列号生成流程获取当前时间序列号seq,将缓存数据以文件名“年月日时分秒+seq.dat”保存至文件数据接收系统所在的本地磁盘b的目录dir:
111.值得注意的是对于磁盘文件处理系统中,发送的仅仅是数据data而文件接收系统接收到data数据后,又需要将数据重新命名后再保存到dir目录,为什么不直接传送包含文件名的.data.sync文件呢,这是因为当多个应用,即多个服务器均布置有磁盘文件处理系统时,很大概率会出现.data.sync文件的名称一致,因此本发明仅仅传送数据data,在文件数据接收系统对数据data再进行生成新的文件名进行保存,完美的解决了多个磁盘文件处理系统情况的文件名重复问题。
112.磁盘数据文件入库处理任务
113.扫描目录dir,将dir目录下所有后缀名为.dat的文件句柄放入l,遍历l,读取文件句柄对应的.dat的文件中的数据data,将数据data写入数据库,如果写入成功,则删除目录dir中文件句柄对应的.dat文件。
114.上述技术方案中,序列号生成流程包括以下步骤:
115.步骤3.1:定义全局静态变量lasttime,其初始值为当前时间,精确到秒;
116.步骤3.2:定义全局静态变量seq,其初始值为0;
117.步骤3.3:获取锁l;
118.步骤3.2:获取当前时间t,精确到秒;
119.步骤3.4:如果t等于lasttime,则行步骤3.4.1,否则执行3.5;
120.步骤3.4.1:将seq值加1,如果seq值大于10000,则seq值重置为0,否则执行步骤3.5;
121.步骤3.5:将lasttime值设置为t;
122.步骤3.6:释放锁l。
123.值得注意的是,在每一秒,可能会生成若干个.dat文件,那么我们就需要在1秒或则1毫秒内生成对应的序列号。
124.上述技术方案中,业务系统数据处理主流程具体包括:
125.步骤1.1:定义全局缓存变量c,定义数据将要写入的业务系统所在的本地磁盘的目录;
126.步骤1.2:启动缓存定时清理任务,该任务为定时循环任务,且该任务为单独的线程执行;
127.步骤1.3:获得缓存c的锁l,接着将业务系统的数据写入缓存c;
128.步骤1.5:判断缓存c中的数据量是否满足写入磁盘的条件,如果是,则调用流程1.5.1,否则执行1.6
129.步骤1.5.1:则调用序列号生成流程,获取当前时间序列号seq;
130.步骤1.5.2:在目录d中创建文件,并将文件命名为年月日时分秒+seq.tmp,该文件此时是一个空文件;
131.步骤1.5.3:将缓存c中的数据写入.tmp文件;
132.步骤1.5.4:缓存c中的数据写完之后,将.tmp文件的后缀名改为.dat
133.步骤1.5.5:清空缓存c;
134.步骤1.6:释放缓存锁l。
135.上述技术方案中,缓存定时清理任务包括以下步骤:
136.步骤2.1:获取缓存c的锁l;
137.步骤2.2:判断缓存c中是否有数据,如果有,则执行步骤2.2.1,否则,执行步骤2.3;
138.步骤2.2.1:调用步骤3序列号生成流程,获取当前时间序列号seq;
139.步骤2.2.2:在目录d中创建文件,并将文件命名为:年月日时分秒+seq.tmp;
140.步骤2.2.3:将缓存c中的数据写入.tmp文件;
141.步骤2.2.4:将.tmp文件后缀名重命名为.dat;
142.步骤2.2.5:清空缓存c;
143.步骤2.3:释放缓存锁l。
144.上述技术方案中,磁盘文件处理系统包括以下步骤:
145.步骤4.1:启动文件扫描任务,该任务为定时循环任务,且由一单独线程执行;
146.步骤4.2:扫描目录d下所有后缀名为.data.sync的文件,并将所有扫描到的文件
句柄存在列表l;
147.步骤4.3:遍历列表l,读取文件句柄对应的.data.sync文件的数据data;
148.步骤4.4:将数据data发送到文件数据接收系统,发送操作由单独线程执行,如果发送成功,则执行步骤4.5,否则执行步骤4.6;
149.步骤4.5:删除文件句柄对应的.data.sync文件;
150.步骤4.6:将.data.sync文件后缀名重新改为.dar。
151.上述技术方案中,文件数据接收系统包括以下步骤:
152.步骤6.1:定义全局数据写磁盘目录dir;
153.步骤6.2:启动磁盘数据文件入库处理任务,该任务为定时循环任务,且为单独的线程执行
154.步骤6.2:接收磁盘数据文件处理系统发送过来的数据data;
155.步骤6.3:将数据解析之后写入数据库或者其他介质,如果写入成功,则流程结束,否则,执行步骤6.4;
156.步骤6.4:调用序列号生成流程,获取当前时间唯一序列号seq;
157.步骤6.5:在目录dir新建文件名称为年月日时分秒+seq.tmp的文件,将数据data写入.tmp文件;
158.步骤6.6:数据data写完之后,将.tmp文件后缀名改为.dat。
159.因为在文件接收系统接收到数据data时,可能因为数据库或者其他网络原因,导致无法将data数据写入数据库的,会将数据data写入文件数据接收系统的本地磁盘的dir目录,然后通过磁盘数据文件入库处理任务流程将dir目录下的.dat文件写入数据库,保证数据稳定写入。
160.上述技术方案中,磁盘数据文件入库处理任务流程包括以下步骤:
161.步骤7.1:扫描目录dir;
162.步骤7.2:将dir目录下所有后缀名为.dat的文件句柄放入l;
163.步骤7.3:遍历l;
164.步骤7.4:读取文件句柄对应的.dat文件的数据data,将数据data写入数据库或者其他介质,如果写入成功,则删除文件句柄对应的.dat文件。
165.上述技术方案中,文件扫描任务流程包括以下步骤:
166.步骤8.1:扫描磁盘目录d,获得后缀名为.dat的文件列表,并将文件句柄放入列表list
167.步骤8.2:遍历list
168.步骤8.3:将list中文件句柄对应文件的后缀名改为.data.sync。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1