System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及报表生成技术。
技术介绍
1、目前在多租户场景下报表打印如下不足:
2、(1)在单个租户需要一次性生成数据量达到几十万页的报表,或者同时生成上千个租户的报表时,目前传统的报表生成方法(如jasperreport、帆软报表)响应过慢,时间往往过长,对于复杂报表甚至超过十个小时,有些报表在数据量上万条时就会导致整个系统直接崩溃,这是用户所不能接受的。
3、(2)多租户场景下,往往会出现在业务高峰期,大量租户同时进行大数据量报表的生成。目前传统的报表生成方法,很难做到及时的处理和响应,会出现生成时间过长,导致无法打印等情况。并且传统的报表生成方法往往没有提供限流,或者限流方式过于简单,很容易导致整个系统被拖垮。
4、(3)即使在单租户少量报表的情况下,如果每次报表的生成都需要先进行编译,那么整个报表的生成与页面响应速度也很慢。
技术实现思路
1、本专利技术所要解决的问题:解决报表生成响应速度慢问题。
2、为解决上述问题,本专利技术采用的方案如下:
3、根据本专利技术的一种报表任务生成方法,该方法包括如下步骤:
4、步骤s1:接收报表生成请求;
5、步骤s2:根据所接收的报表生成请求提取待生成报表的数据量和报表样式模板;
6、步骤s3:获取各报表任务执行器的机器资源信息和当前正在执行的任务量;所述机器资源信息至少包括cpu使用率、cpu核数、空闲内存量、活跃线程数;
7
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,则找出各报表任务执行器剩余本文档来自技高网...
【技术保护点】
1.一种报表任务生成方法,其特征在于,该方法包括如下步骤:
2.根据权利要求1所述的报表任务生成方法,其特征在于,所述步骤S6中,若tn不大于Ttn,则找出各报表任务执行器剩余可承担的任务量的最大者,若各报表任务执行器剩余可承担的任务量的最大者大于tn则生成报表任务派发至该最大者所对应的报表任务执行器。
3.根据权利要求1所述的报表任务生成方法,其特征在于,所述步骤S7中,扩容后计算各扩容的报表任务执行器剩余可承担的任务量并更新sftn;所述根据各报表任务执行器剩余可承担的任务量按比例承担待生成报表的任务量的方式为各报表任务执行器生成报表任务并派发包括计算待生成报表的各个报表任务执行器所需要承担的任务量ntn(i)=tn*ftn(i)/sftn;其中,ntn(i)表示待生成报表的第i个报表任务执行器所需要承担的任务量。
4.一种报表任务生成装置,其特征在于,该装置包括如下模块:
5.根据权利要求1所述的报表任务生成装置,其特征在于,所述模块M6中,若tn不大于Ttn,则找出各报表任务执行器剩余可承担的任务量的最大者,若各报表任务执行
6.根据权利要求1所述的报表任务生成装置,其特征在于,所述模块M7中,扩容后计算各扩容的报表任务执行器剩余可承担的任务量并更新sftn;所述根据各报表任务执行器剩余可承担的任务量按比例承担待生成报表的任务量的方式为各报表任务执行器生成报表任务并派发包括计算待生成报表的各个报表任务执行器所需要承担的任务量ntn(i)=tn*ftn(i)/sftn;其中,ntn(i)表示待生成报表的第i个报表任务执行器所需要承担的任务量。
7.一种报表生成方法,其特征在于,该方法涉及报表任务控制器和报表任务执行器;当报表任务控制器接收到客户端所发的报表生成请求时,根据权利要求1或2或3所述的报表任务生成方法为报表任务执行器生成报表任务;所述报表任务执行器根据报表任务控制器所派发的报表任务生成报表。
8.根据权利要求7所述的报表生成方法,其特征在于,所述报表任务执行器生成报表时,根据所派发的报表任务从redis内存缓存中获取报表样式模板的JasperReport二进制可执行文件,所述报表任务执行器根据所获取的JasperReport二进制可执行文件生成报表。
9.一种报表生成系统,其特征在于,该系统包括报表任务控制器和报表任务执行器;所述报表任务控制器包括根据权利要求4或5或6所述的报表任务生成装置;所述报表任务执行器包括根据报表任务控制器的请求向报表任务控制器上报机器资源信息和当前正在执行的任务量的模块、接收报表任务控制器所发的报表任务的模块、根据所接收的报表任务生成报表的模块。
10.根据权利要求9所述的报表生成系统,其特征在于,所述根据所接收的报表任务生成报表的模块包括:根据所接收的报表任务从redis内存缓存中获取报表样式模板的JasperReport二进制可执行文件的模块,和根据所获取的JasperReport二进制可执行文件生成报表的模块。
...【技术特征摘要】
1.一种报表任务生成方法,其特征在于,该方法包括如下步骤:
2.根据权利要求1所述的报表任务生成方法,其特征在于,所述步骤s6中,若tn不大于ttn,则找出各报表任务执行器剩余可承担的任务量的最大者,若各报表任务执行器剩余可承担的任务量的最大者大于tn则生成报表任务派发至该最大者所对应的报表任务执行器。
3.根据权利要求1所述的报表任务生成方法,其特征在于,所述步骤s7中,扩容后计算各扩容的报表任务执行器剩余可承担的任务量并更新sftn;所述根据各报表任务执行器剩余可承担的任务量按比例承担待生成报表的任务量的方式为各报表任务执行器生成报表任务并派发包括计算待生成报表的各个报表任务执行器所需要承担的任务量ntn(i)=tn*ftn(i)/sftn;其中,ntn(i)表示待生成报表的第i个报表任务执行器所需要承担的任务量。
4.一种报表任务生成装置,其特征在于,该装置包括如下模块:
5.根据权利要求1所述的报表任务生成装置,其特征在于,所述模块m6中,若tn不大于ttn,则找出各报表任务执行器剩余可承担的任务量的最大者,若各报表任务执行器剩余可承担的任务量的最大者大于tn则生成报表任务派发至该最大者所对应的报表任务执行器。
6.根据权利要求1所述的报表任务生成装置,其特征在于,所述模块m7中,扩容后计算各扩容的报表任务执行器剩余可承担的任务量并更新sftn;所述根据各报表任务执行器剩余可承担的任务量按比例承担待生成报表的任务量的方式为各报表任务执行器生成报表任务并派发包括计...
【专利技术属性】
技术研发人员:李桐,黄雪璨,巨泽建,
申请(专利权)人:江苏金智教育信息股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。