技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种报表任务生成方法和装置及报表生成方法和系统与流程  >  正文

一种报表任务生成方法和装置及报表生成方法和系统与流程

  • 国知局
  • 2024-07-31 23:13:15

本发明涉及报表生成技术。

背景技术:

1、目前在多租户场景下报表打印如下不足:

2、(1)在单个租户需要一次性生成数据量达到几十万页的报表,或者同时生成上千个租户的报表时,目前传统的报表生成方法(如jasperreport、帆软报表)响应过慢,时间往往过长,对于复杂报表甚至超过十个小时,有些报表在数据量上万条时就会导致整个系统直接崩溃,这是用户所不能接受的。

3、(2)多租户场景下,往往会出现在业务高峰期,大量租户同时进行大数据量报表的生成。目前传统的报表生成方法,很难做到及时的处理和响应,会出现生成时间过长,导致无法打印等情况。并且传统的报表生成方法往往没有提供限流,或者限流方式过于简单,很容易导致整个系统被拖垮。

4、(3)即使在单租户少量报表的情况下,如果每次报表的生成都需要先进行编译,那么整个报表的生成与页面响应速度也很慢。

技术实现思路

1、本发明所要解决的问题:解决报表生成响应速度慢问题。

2、为解决上述问题,本发明采用的方案如下:

3、根据本发明的一种报表任务生成方法,该方法包括如下步骤:

4、步骤s1:接收报表生成请求;

5、步骤s2:根据所接收的报表生成请求提取待生成报表的数据量和报表样式模板;

6、步骤s3:获取各报表任务执行器的机器资源信息和当前正在执行的任务量;所述机器资源信息至少包括cpu使用率、cpu核数、空闲内存量、活跃线程数;

7、步骤s4:根据所提取的待生成报表的数据量和报表样式模板计算待生成报表的任务量:

8、tn=pn*s*tnw+tnb;其中,tn为待生成报表的任务量,pn为待生成报表的数据量,s为报表样式模板的大小,tnw和tnb为预先配置的参数;

9、步骤s5:计算各报表任务执行器剩余可承担的任务量:

10、ftn(i)=(1-cr(i))*cn(i)*cw+fm(i)*fmw-atn(i)*atnw+b-rtn(i);其中,

11、ftn(i)表示第i个报表任务执行器剩余可承担的任务量;

12、cr(i)表示第i个报表任务执行器的cpu使用率;

13、cn(i)表示第i个报表任务执行器的cpu核数;

14、fm(i)表示第i个报表任务执行器的空闲内存量;

15、atn(i)表示第i个报表任务执行器的活跃线程数;

16、rtn(i)表示第i个报表任务执行器的当前正在执行的任务量;

17、cw、fmw、atnw、b为预先设定的参数;

18、步骤s6:若tn不大于ttn,则遍历各报表任务执行器剩余可承担的任务量,若存在ftn(i)>tn,则生成报表任务派发至第i个报表任务执行器;若所有报表任务执行器的剩余可承担的任务量都不满足ftn(i)>tn,则扩容一个报表任务执行器,然后生成报表任务派发至所扩容的报表任务执行器;其中,ttn为预先设定的阈值;

19、步骤s7:若tn>ttn,则计算各报表任务执行器总共剩余可承担的任务量sftn=sum(ftn(i)),若sftn小于tn,则扩容roundup((tn-sftn)/iw)个报表任务执行器,最后根据各报表任务执行器剩余可承担的任务量按比例承担待生成报表的任务量的方式为各报表任务执行器生成报表任务并派发;其中,sum表示为求和,iw为预先配置的参数,roundup为向上舍入取整函数。

20、进一步,根据本发明的报表任务生成方法,所述步骤s6中,若tn不大于ttn,则找出各报表任务执行器剩余可承担的任务量的最大者,若各报表任务执行器剩余可承担的任务量的最大者大于tn则生成报表任务派发至该最大者所对应的报表任务执行器。

21、进一步,根据本发明的报表任务生成方法,所述步骤s7中,扩容后计算各扩容的报表任务执行器剩余可承担的任务量并更新sftn;所述根据各报表任务执行器剩余可承担的任务量按比例承担待生成报表的任务量的方式为各报表任务执行器生成报表任务并派发包括计算待生成报表的各个报表任务执行器所需要承担的任务量ntn(i)=tn*ftn(i)/sftn;其中,ntn(i)表示待生成报表的第i个报表任务执行器所需要承担的任务量。

22、根据本发明的一种报表任务生成装置,该装置包括如下模块:

23、模块m1,用于:接收报表生成请求;

24、模块m2,用于:根据所接收的报表生成请求提取待生成报表的数据量和报表样式模板;

25、模块m3,用于:获取各报表任务执行器的机器资源信息和当前正在执行的任务量;所述机器资源信息至少包括cpu使用率、cpu核数、空闲内存量、活跃线程数;

26、模块m4,用于:根据所提取的待生成报表的数据量和报表样式模板计算待生成报表的任务量:

27、tn=pn*s*tnw+tnb;其中,tn为待生成报表的任务量,pn为待生成报表的数据量,s为报表样式模板的大小,tnw和tnb为预先配置的参数;

28、模块m5,用于:计算各报表任务执行器剩余可承担的任务量:

29、ftn(i)=(1-cr(i))*cn(i)*cw+fm(i)*fmw-atn(i)*atnw+b-rtn(i);其中,

30、ftn(i)表示第i个报表任务执行器剩余可承担的任务量;

31、cr(i)表示第i个报表任务执行器的cpu使用率;

32、cn(i)表示第i个报表任务执行器的cpu核数;

33、fm(i)表示第i个报表任务执行器的空闲内存量;

34、atn(i)表示第i个报表任务执行器的活跃线程数;

35、rtn(i)表示第i个报表任务执行器的当前正在执行的任务量;

36、cw、fmw、atnw、b为预先设定的参数;

37、模块m6,用于:若tn不大于ttn,则遍历各报表任务执行器剩余可承担的任务量,若存在ftn(i)>tn,则生成报表任务派发至第i个报表任务执行器;若所有报表任务执行器的剩余可承担的任务量都不满足ftn(i)>tn,则扩容一个报表任务执行器,然后生成报表任务派发至所扩容的报表任务执行器;其中,ttn为预先设定的阈值;

38、模块m7,用于:若tn>ttn,则计算各报表任务执行器总共剩余可承担的任务量sftn=sum(ftn(i)),若sftn小于tn,则扩容roundup((tn-sftn)/iw)个报表任务执行器,最后根据各报表任务执行器剩余可承担的任务量按比例承担待生成报表的任务量的方式为各报表任务执行器生成报表任务并派发;其中,sum表示为求和,iw为预先配置的参数,roundup为向上舍入取整函数。

39、进一步,根据本发明的报表任务生成装置,所述模块m6中,若tn不大于ttn,则找出各报表任务执行器剩余可承担的任务量的最大者,若各报表任务执行器剩余可承担的任务量的最大者大于tn则生成报表任务派发至该最大者所对应的报表任务执行器。

40、进一步,根据本发明的报表任务生成装置,所述模块m7中,扩容后计算各扩容的报表任务执行器剩余可承担的任务量并更新sftn;所述根据各报表任务执行器剩余可承担的任务量按比例承担待生成报表的任务量的方式为各报表任务执行器生成报表任务并派发包括计算待生成报表的各个报表任务执行器所需要承担的任务量ntn(i)=tn*ftn(i)/sftn;其中,ntn(i)表示待生成报表的第i个报表任务执行器所需要承担的任务量。

41、根据本发明的一种报表生成方法,该方法涉及报表任务控制器和报表任务执行器;当报表任务控制器接收到客户端所发的报表生成请求时,根据上述的报表任务生成方法为报表任务执行器生成报表任务;所述报表任务执行器根据报表任务控制器所派发的报表任务生成报表。

42、进一步,根据本发明的报表生成方法,所述报表任务执行器生成报表时,根据所派发的报表任务从redis内存缓存中获取报表样式模板的jasperreport二进制可执行文件,所述报表任务执行器根据所获取的jasperreport二进制可执行文件生成报表。

43、根据本发明的一种报表生成系统,系统包括报表任务控制器和报表任务执行器;所述报表任务控制器包括上述的报表任务生成装置;所述报表任务执行器包括根据报表任务控制器的请求向报表任务控制器上报机器资源信息和当前正在执行的任务量的模块、接收报表任务控制器所发的报表任务的模块、根据所接收的报表任务生成报表的模块。

44、进一步,根据本发明的报表生成系统,所述根据所接收的报表任务生成报表的模块包括:根据所接收的报表任务从redis内存缓存中获取报表样式模板的jasperreport二进制可执行文件的模块,和根据所获取的jasperreport二进制可执行文件生成报表的模块。

45、本发明的技术效果如下:

46、本发明通过对于大数据量的报表生成业务的拆分,按照各个报表任务执行器剩余可承担的任务量按比例拆分,即保证了报表生成响应的速度,又能使得各个报表任务执行器合理承担报表任务,使得各个报表任务执行器能够合理利用机器资源。

47、本发明通过动态扩容报表任务执行器以满足业务高峰时期的报表生成业务的需求,从而保证报表生成的响应速度,又避免报表任务执行器因任务过重而导致的堵塞情形。

48、本发明通过redis缓存报表样式模板的jasperreport二进制可执行文件,使得报表任务执行器能够直接从内存中获取报表样式模板,减少了磁盘数据的读取,并且缓存的是jasperreport二进制可执行文件而不是xml格式定义的报表样式模板,由此报表任务执行器直接使用jasperreport二进制可执行文件生成报表,减少了需要将xml格式定义的报表样式模板进行编译的步骤,提高了报表生成速度。

本文地址:https://www.jishuxx.com/zhuanli/20240730/196505.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。