System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种分布式的业务资源控制的实现方法技术_技高网

一种分布式的业务资源控制的实现方法技术

技术编号:41135336 阅读:2 留言:0更新日期:2024-04-30 18:06
本发明专利技术提出一种分布式的业务资源控制的实现方法,本方法重点在于结合使用分布式锁和Redis的lua脚本的原子性脚本可以实现对资源的严格控制,保证多个节点并发访问时资源的独占性。为了满足复杂资源控制业务的分布式需求,引入分布式协调框架如ZooKeeper或Consul,提供分布式锁、分布式队列等功能,确保一致性和可靠性。为了提高执行性能,利用缓存技术将热点数据缓存在内存中,减少后端存储系统的访问。对于复杂资源控制逻辑,采用异步处理,通过消息队列等机制进行异步执行,提高整体执行性能。

【技术实现步骤摘要】

本专利技术涉及预算、特殊业务资源使用控制、复杂库存控制等领域,具体来说是一种分布式的业务资源控制的实现方法


技术介绍

1、传统的业务资源控制,在分布式下一种方案是采用分布式锁来限制多个节点的并发,用单一节点执行来保证最终数据执行的稳定性和一致性,这种方案存在性能瓶颈问题;另一种传统的解决方案是通过redis的lua脚本对缓存中的数据进行查询更新处理,以此来实现资源的控制,这种方案性能高但是只适用于逻辑简单的控制规则,无法适用于复杂的资源控制逻辑,且具有以下缺点:

2、1、不能够进行严格的资源控制:分布式锁在多个节点的并发环境下,虽然可以限制并发访问,但无法提供对资源访问的严格控制。由于分布式系统中节点间通信的延迟和不可预测性,以及锁粒度的限制,可能会导致某些情况下无法做到对资源的严格控制。例如,在高并发场景下,依然存在一定概率的并发访问,无法完全避免竞争条件的发生。

3、2、不能够满足复杂的资源控制业务的分布式需求:使用redis的lua脚本对缓存数据进行查询和更新操作虽然能够提供较高的性能,但对于复杂的资源控制业务分布式需求来说,存在一定局限性。例如,针对复杂的交易处理、订单流转等分布式业务场景,仅仅依赖于redis的lua脚本可能无法满足对资源状态的严格控制和一致性保障。

4、3、不能保证复杂资源控制的执行性能:无论是分布式锁还是redis的lua脚本,在面对复杂资源控制逻辑时都可能无法保证执行性能。复杂的业务逻辑可能需要多次的资源查询、状态判断和更新操作,而这些操作在分布式环境下可能会增加网络通信和数据同步的开销,导致执行性能无法得到保障。


技术实现思路

1、本专利技术的主要目的在于提供一种分布式的业务资源控制的实现方法,可以有效解决
技术介绍
中的问题。

2、为实现上述目的,本专利技术采取的技术方案为:

3、一种分布式的业务资源控制的实现方法,其具体步骤在于:

4、步骤s1:资源使用明细加数据锁;

5、步骤s2:获取实时的汇总数据;

6、步骤s3:调用控制规则认证接口;

7、步骤s4:保存使用明细执行前加分布式锁;

8、步骤s5:删除数据所执行后接触分布式锁;

9、步骤s6:触发汇总和数据库同异步。

10、所述步骤s1:资源使用明细加数据锁,检查业务资源写入数据锁缓存,将业务资源数据提前锁定,保证业务资源不超出限制,在使用业务资源数据之前,首先添加数据锁,数据锁相当于一个数据量,提前占有数据,通过获取数据锁,其他线程或进程使用业务资源数据将会被限制,一旦超出规则的限制,将无法继续使用业务资源,在处理完数据后,需要及时释放数据锁,以便其他线程或进程可以继续使用业务资源数据,这样可以确保数据的及时更新和并发访问的正确性,数据锁可以防止多个线程或进程同时抢占一个业务资源数据,避免数据竞争和不一致性的问题,数据锁是对数据本身的加锁,非常规意义上的程序锁,不对并发性能产生影响,只影响数据使用的安全认证。

11、所述步骤s2:获取实时的汇总数据,实时汇总数据是汇总缓存中三部分的数据:数据锁数据、已执行数据未入库、汇总数据,基于每个进程、线程对数据的影响,将实时验证的缓存数据分为三部分:实时汇总数据的获取、数据分类和分析、数据安全和一致性保障其具体描述为:

12、实时汇总数据的获取:通过实时汇总数据,能够及时了解数据锁数据、已执行数据未入库和汇总数据的状态,为后续处理提供及时准确的信息;

13、数据分类和分析:将实时验证的缓存数据划分为数据锁数据、已执行数据未入库和汇总数据,有助于清晰地了解每部分数据的性质和状态,为后续处理提供有针对性的操作;

14、数据安全和一致性保障:通过使用redis的lua脚本实现同时获取汇总数据和已执行未入库的缓存数据,可以保证数据的原子级一致性,避免数据不一致或丢失的情况发生,从而提高数据的安全性和可靠性。

15、所述步骤s3:调用控制规则认证接口,具体步骤如下:

16、校验业务资源使用请求的合法性:通过对实时汇总的数据按照用户设置的控制规则进行校验,能够确保业务资源使用请求的合法性,避免不合法的请求占用资源或者破坏系统稳定性;

17、缓存操作的优化:将业务资源使用申请数据写入到缓存:已使用数据未入库,能够减少数据更新的频率,提高程序响应性能。同时,直接删除数据锁能够避免不必要的缓存占用,释放资源空间;

18、提高业务控制逻辑的复杂度:在涉及业务资源使用控制的场景中,控制规则的验证逻辑通常比较复杂,本专利技术的方法能够有效地处理这种复杂逻辑,提高了业务控制逻辑的处理效率和准确性;

19、提高系统的稳定性和安全性:通过引入规则控制验证引擎,能够对业务资源使用请求进行更加细致、全面的验证,从而提高系统的稳定性和安全性。

20、所述步骤s4:保存使用明细执行前加分布式锁,将数据通过资源控制引擎进行汇总,并将申请结果保存,如果申请成功,则执行下一步;如果申请失败,则直接结束,将使用明细数据保存到缓存中,具体操作是将已使用的明细插入到缓存池中,以便后续的更新操作,更新汇总数据并将其放入汇总数据库的更新缓存队列中,这样做的目的是为了将更新的汇总数据暂时保存在缓存中,以提高系统的响应速度和性能,使用lua脚本来更新使用明细缓存池中的汇总数据,并删除缓存中的使用明细数据,这个步骤可以确保使用明细数据的准确性,并及时清理缓存,释放资源空间,调用redis汇总脚本,触发lua脚本来更新汇总数据,并删除缓存中的使用明细数据,这一步是为了将缓存中的更新后的汇总数据同步至汇总缓存池中,以备后续的数据处理和查询,将更新后的汇总数据放入汇总数据库的更新缓存队列中,并新增到数据更新缓存队列中,这样可以确保汇总数据的持久化存储,并且能够及时通知其他组件对数据进行进一步处理,将更新后的汇总数据新增到使用明细中,并通过数据库传输至汇总缓存池中,这一步是为了将最新的汇总数据更新到使用明细中,并保持与汇总缓存池的一致性。

21、所述步骤s5:删除数据所执行后接触分布式锁,完成数据操作后,删除数据锁,释放控制数据额度,删除数据锁的操作是添加缓存锁后续必须的步骤,否则就会导致数据被异常占用,从程序逻辑上必须实现的这种逻辑关系,以此来保证业务资源使用的准确控制,本专利技术实现过程是通过对整个中间过程增加异常抛除来实现,避免数据锁因中间过程异常没有被正常解锁的问题产生。

22、所述步骤s6:触发汇总和数据库同异步,通过分布式队列消息触发,将已使用数据-未入库的数据缓存更新到数据库和汇总的缓存中,该过程不在业务资源控制请求的步骤内,不影响并发,但是考虑到数据一致性的问题,使用redis的lua脚本执行从已使用数据-未入库缓存到汇总数据缓存的更新,在整个数据处理和安全使用认证过程中,所使用的数据都是缓存的数据,已使用数据-未入库汇总到汇总缓存数据,该过程包括汇总缓存数据的更新和本文档来自技高网...

【技术保护点】

1.一种分布式的业务资源控制的实现方法,其特征在于:

2.根据权利要求书1所述的一种分布式的业务资源控制的实现方法,其特征在于:所述步骤S1:资源使用明细加数据锁,检查业务资源写入数据锁缓存,将业务资源数据提前锁定,保证业务资源不超出限制,在使用业务资源数据之前,首先添加数据锁,数据锁相当于一个数据量,提前占有数据,通过获取数据锁,其他线程或进程使用业务资源数据将会被限制,一旦超出规则的限制,将无法继续使用业务资源,在处理完数据后,需要及时释放数据锁,以便其他线程或进程可以继续使用业务资源数据,这样可以确保数据的及时更新和并发访问的正确性,数据锁可以防止多个线程或进程同时抢占一个业务资源数据,避免数据竞争和不一致性的问题,数据锁是对数据本身的加锁,非常规意义上的程序锁,不对并发性能产生影响,只影响数据使用的安全认证。

3.根据权利要求书1所述的一种分布式的业务资源控制的实现方法,其特征在于:所述步骤S2:获取实时的汇总数据,实时汇总数据是汇总缓存中三部分的数据:数据锁数据、已执行数据未入库、汇总数据,基于每个进程、线程对数据的影响,将实时验证的缓存数据分为三部分:实时汇总数据的获取、数据分类和分析、数据安全和一致性保障其具体描述为:

4.根据权利要求书1所述的一种分布式的业务资源控制的实现方法,其特征在于:所述步骤S3:调用控制规则认证接口,具体步骤如下:

5.根据权利要求书4所述的一种分布式的业务资源控制的实现方法,其特征在于:所述步骤S4:保存使用明细执行前加分布式锁,将数据通过资源控制引擎进行汇总,并将申请结果保存,如果申请成功,则执行下一步;如果申请失败,则直接结束,将使用明细数据保存到缓存中,具体操作是将已使用的明细插入到缓存池中,以便后续的更新操作,更新汇总数据并将其放入汇总数据库的更新缓存队列中,这样做的目的是为了将更新的汇总数据暂时保存在缓存中,以提高系统的响应速度和性能,使用Lua脚本来更新使用明细缓存池中的汇总数据,并删除缓存中的使用明细数据,这个步骤可以确保使用明细数据的准确性,并及时清理缓存,释放资源空间,调用Redis汇总脚本,触发Lua脚本来更新汇总数据,并删除缓存中的使用明细数据,这一步是为了将缓存中的更新后的汇总数据同步至汇总缓存池中,以备后续的数据处理和查询,将更新后的汇总数据放入汇总数据库的更新缓存队列中,并新增到数据更新缓存队列中,这样可以确保汇总数据的持久化存储,并且能够及时通知其他组件对数据进行进一步处理,将更新后的汇总数据新增到使用明细中,并通过数据库传输至汇总缓存池中,这一步是为了将最新的汇总数据更新到使用明细中,并保持与汇总缓存池的一致性。

6.根据权利要求书1所述的一种分布式的业务资源控制的实现方法,其特征在于:所述步骤S5:删除数据所执行后接触分布式锁,完成数据操作后,删除数据锁,释放控制数据额度,删除数据锁的操作是添加缓存锁后续必须的步骤,否则就会导致数据被异常占用,从程序逻辑上必须实现的这种逻辑关系,以此来保证业务资源使用的准确控制,本专利技术实现过程是通过对整个中间过程增加异常抛除来实现,避免数据锁因中间过程异常没有被正常解锁的问题产生。

7.根据权利要求书1所述的一种分布式的业务资源控制的实现方法,其特征在于:所述步骤S6:触发汇总和数据库同异步,通过分布式队列消息触发,将已使用数据-未入库的数据缓存更新到数据库和汇总的缓存中,该过程不在业务资源控制请求的步骤内,不影响并发,但是考虑到数据一致性的问题,使用redis的lua脚本执行从已使用数据-未入库缓存到汇总数据缓存的更新,在整个数据处理和安全使用认证过程中,所使用的数据都是缓存的数据,已使用数据-未入库汇总到汇总缓存数据,该过程包括汇总缓存数据的更新和已使用数据-未入库的缓存数据的删除,这两个数据均是验证过程的核心数据,该过程必须为原子级操作,不能跟其他查询、更新数据同时执行,所以用redis的lua脚本来保证此过程的原子级。

...

【技术特征摘要】

1.一种分布式的业务资源控制的实现方法,其特征在于:

2.根据权利要求书1所述的一种分布式的业务资源控制的实现方法,其特征在于:所述步骤s1:资源使用明细加数据锁,检查业务资源写入数据锁缓存,将业务资源数据提前锁定,保证业务资源不超出限制,在使用业务资源数据之前,首先添加数据锁,数据锁相当于一个数据量,提前占有数据,通过获取数据锁,其他线程或进程使用业务资源数据将会被限制,一旦超出规则的限制,将无法继续使用业务资源,在处理完数据后,需要及时释放数据锁,以便其他线程或进程可以继续使用业务资源数据,这样可以确保数据的及时更新和并发访问的正确性,数据锁可以防止多个线程或进程同时抢占一个业务资源数据,避免数据竞争和不一致性的问题,数据锁是对数据本身的加锁,非常规意义上的程序锁,不对并发性能产生影响,只影响数据使用的安全认证。

3.根据权利要求书1所述的一种分布式的业务资源控制的实现方法,其特征在于:所述步骤s2:获取实时的汇总数据,实时汇总数据是汇总缓存中三部分的数据:数据锁数据、已执行数据未入库、汇总数据,基于每个进程、线程对数据的影响,将实时验证的缓存数据分为三部分:实时汇总数据的获取、数据分类和分析、数据安全和一致性保障其具体描述为:

4.根据权利要求书1所述的一种分布式的业务资源控制的实现方法,其特征在于:所述步骤s3:调用控制规则认证接口,具体步骤如下:

5.根据权利要求书4所述的一种分布式的业务资源控制的实现方法,其特征在于:所述步骤s4:保存使用明细执行前加分布式锁,将数据通过资源控制引擎进行汇总,并将申请结果保存,如果申请成功,则执行下一步;如果申请失败,则直接结束,将使用明细数据保存到缓存中,具体操作是将已使用的明细插入到缓存池中,以便后续的更新操作,更新汇总数据并将其放入汇总数据库的更新缓存队列中,这样做的目的是为了将更新的汇总数据暂时保存在缓存中,以提高系统的响应速度和性能,使用lua脚本来更新...

【专利技术属性】
技术研发人员:郭强
申请(专利权)人:浪潮海链易贸山东信息科技有限公司
类型:发明
国别省市:

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

1