System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及多线程资源隔离,具体为一种基于线程池对多线程进行资源隔离的方法。
技术介绍
1、在我们经常使用的非金融交易系统中,经常需要对于不同渠道的交易进行处理,由于不同渠道之间的交易会互相争抢资源,不同渠道的非金融交易之间会由于资源紧张,导致交易查询失败,所以需要一种方法对于我们系统中不同渠道的资源进行隔离,以保证不同渠道的交易都有独立的资源进行处理,以保证交易不受影响。
技术实现思路
1、针对现有技术的不足,本专利技术提供了一种基于线程池对多线程进行资源隔离的方法,解决了不同渠道之间的交易会互相争抢资源,不同渠道的非金融交易之间会由于资源紧张,导致交易查询失败的问题。
2、为实现以上目的,本专利技术通过以下技术方案予以实现:一种基于线程池对多线程进行资源隔离的方法,包括以下步骤:
3、s1:首先使用编程语言或框架提供的线程池功能,创建一个线程池对象,而线程池可以预先创建一定数量的线程,并提供一个任务队列用于存储待执行的任务;
4、s2:通过定义线程池隔离开关,开关开启,并且交易为非金融xml交易,则进行线程池分流的任务;而后通过定义不同资源的服务名,一个渠道对应一个服务名,需要配置所有渠道的服务名称,定义资源服务列表枚举值;通过定义不同资源的服务serviceld列表参数,一个serviceld对应一个非金融交易,根据不同渠道的资源定义不同的serviceld列表;而后需要将服务serviceld列表初始化到对应的资源的服务名;对于不同资源
5、s3:通过定义需要执行的任务,可以适应线程或可运行对象标识任务;而后将任务提交给线程池,线程池将根据自身的配置和状态来选择合适的线程执行任务,从而可以使用线程池提供的提交任务方法来将任务添加到任务队列中;
6、s4:通过线程池可以根据配置的参数限制线程的数量、cpu使用率、内存配额等,通过限制这些资源,可以实现多线程执行过程中资源的隔离和控制;
7、s5:通过非金融前置接收xml非金融报文交易,而后通过解析非金融交易报文,获取报文的serviceid,线程池隔离开关开启,并且交易为非金融xml交易,从而能够进入线程池隔离服务的分流处理策略,通过根据非金融交易的serviceid列表,来查找非金融交易属于的线程池服务名称,而后根据线程池服务名称进入filter过滤器,来找到对应的线程池服务;线程池服务如果存在,则进入对应的线程池进行服务的处理与转发;如果线程池服务处理失败,则进入异常策略,组装返回报文,进行报文的返回;
8、s6:不同的非金融交易进入不同的线程池服务,从而能够保证线程池资源的隔离的特性,不同的非金融交易互相独立,不受影响。
9、一种基于线程池对多线程进行资源隔离的系统,包括资源隔离类,所述资源隔离类包括定义变量模块,所述定义变量模块的输出端电性连接有交易处理模块,所述交易处理模块的输出端电性连接有执行任务模块;该种设计的目的是为了对数据流的整体走向进行控制,并通过定义变量模块、交易处理模块、执行任务模块来实现相对应的功能。
10、优选的,所述定义变量模块包括定义开关单元,所述定义开关单元的输出端电性连接有定义服务名单元,所述定义服务名单元的输出端电性连接有定义列表参数单元,所述定义列表参数单元的输出端电性连接有初始化单元,所述初始化单元的输出端电性连接有定义配置策略单元,所述定义配置策略单元的输出端电性连接有定义过滤器单元通过定义线程池隔离开关,开关开启,并且交易为非金融xml交易,则进行线程池分流的任务;而后通过定义不同资源的服务名,一个渠道对应一个服务名,需要配置所有渠道的服务名称,定义资源服务列表枚举值;通过定义不同资源的服务serviceld列表参数,一个serviceld对应一个非金融交易,根据不同渠道的资源定义不同的serviceld列表;而后需要将服务serviceld列表初始化到对应的资源的服务名;对于不同资源的服务定义不同的线程池xml配置策略,需要根据服务的实际需要来配置线程池的线程数量,从而能够提高系统的处理能力,提高效率;通过定义filter过滤器,用于配置线程池服务id列表,用于在交易中匹配对应的线程池进行交易的转发。
11、优选的,所述定义配置策略单元包括定义服务id单元,所述定义服务id单元的输出端电性连接有定义维护最少数量单元,所述定义维护最少数量单元的输出端电性连接有定义维护最多数量单元,所述定义维护最多数量单元的输出端电性连接有定义缓冲列队数量单元;通过定义线程池的最少与最大数量,通过定义线程池缓冲队列数量,能够对这些资源进行限制,可以实现多线程执行过程中资源的隔离和控制;通过定义需要执行的任务,可以适应线程或可运行对象标识任务;而后将任务提交给线程池,线程池将根据自身的配置和状态来选择合适的线程执行任务,从而可以使用线程池提供的提交任务方法来将任务添加到任务队列中。
12、优选的,所述交易处理单元模块包括接收单元,所述接收单元的输出端电性连接有解析单元,所述解析单元的输出端电性连接有判断开关单元,所述判断开关单元的输出端电性连接有判断资源名称单元,所述判断资源名称单元的输出端电性连接有过滤器匹配单元,所述过滤器匹配单元的输出端电性连接有对应线程池服务处理单元;通过非金融前置接收xml非金融报文交易,而后通过解析非金融交易报文,获取报文的serviceid,线程池隔离开关开启,并且交易为非金融xml交易,从而能够进入线程池隔离服务的分流处理策略,通过根据非金融交易的serviceid列表,来查找非金融交易属于的线程池服务名称,而后根据线程池服务名称进入filter过滤器,来找到对应的线程池服务;线程池服务如果存在,则进入对应的线程池进行服务的处理与转发;如果线程池服务处理失败,则进入异常策略,组装返回报文,进行报文的返回;不同的非金融交易进入不同的线程池服务,从而能够保证线程池资源的隔离的特性,不同的非金融交易互相独立,不受影响。
13、工作原理:首先使用编程语言或框架提供的线程池功能,创建一个线程池对象,而线程池可以预先创建一定数量的线程,并提供一个任务队列用于存储待执行的任务;通过定义线程池隔离开关,开关开启,并且交易为非金融xml交易,则进行线程池分流的任务;而后通过定义不同资源的服务名,一个渠道对应一个服务名,需要配置所有渠道的服务名称,定义资源服务列表枚举值;通过定义不同资源的服务serviceld列表参数,一个serviceld对应一个非金融交易,根据不同渠道的资源定义不同的serviceld列表;而后需要将服务serviceld列表初始化到对应的资源的服务名;对于不同资源的服务定义不同的线程池xml配制策略,需要根据服务的实际需要来配制线程池的线程数量本文档来自技高网...
【技术保护点】
1.一种基于线程池对多线程进行资源隔离的方法,其特征在于,包括以下步骤:
2.一种基于线程池对多线程进行资源隔离的系统,其特征在于,包括资源隔离类,所述资源隔离类包括定义变量模块,所述定义变量模块的输出端电性连接有交易处理模块,所述交易处理模块的输出端电性连接有执行任务模块。
3.根据权利要求2所述的一种基于线程池对多线程进行资源隔离的系统,其特征在于,所述定义变量模块包括定义开关单元,所述定义开关单元的输出端电性连接有定义服务名单元,所述定义服务名单元的输出端电性连接有定义列表参数单元,所述定义列表参数单元的输出端电性连接有初始化单元,所述初始化单元的输出端电性连接有定义配置策略单元,所述定义配置策略单元的输出端电性连接有定义过滤器单元。
4.根据权利要求3所述的一种基于线程池对多线程进行资源隔离的系统,其特征在于,所述定义配置策略单元包括定义服务lD单元,所述定义服务ID单元的输出端电性连接有定义维护最少数量单元,所述定义维护最少数量单元的输出端电性连接有定义维护最多数量单元,所述定义维护最多数量单元的输出端电性连接有定义缓冲列队数量单元。
5.根据权利要求2所述的一种基于线程池对多线程进行资源隔离的系统,其特征在于,所述交易处理单元模块包括接收单元,所述接收单元的输出端电性连接有解析单元,所述解析单元的输出端电性连接有判断开关单元,所述判断开关单元的输出端电性连接有判断资源名称单元,所述判断资源名称单元的输出端电性连接有过滤器匹配单元,所述过滤器匹配单元的输出端电性连接有对应线程池服务处理单元。
...【技术特征摘要】
1.一种基于线程池对多线程进行资源隔离的方法,其特征在于,包括以下步骤:
2.一种基于线程池对多线程进行资源隔离的系统,其特征在于,包括资源隔离类,所述资源隔离类包括定义变量模块,所述定义变量模块的输出端电性连接有交易处理模块,所述交易处理模块的输出端电性连接有执行任务模块。
3.根据权利要求2所述的一种基于线程池对多线程进行资源隔离的系统,其特征在于,所述定义变量模块包括定义开关单元,所述定义开关单元的输出端电性连接有定义服务名单元,所述定义服务名单元的输出端电性连接有定义列表参数单元,所述定义列表参数单元的输出端电性连接有初始化单元,所述初始化单元的输出端电性连接有定义配置策略单元,所述定义配置策略单元的输出端电性连接有定义过滤器单元。
...
【专利技术属性】
技术研发人员:高磊,
申请(专利权)人:上海通联金融服务有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。