System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于电子商务,具体涉及一种保证跨机房场景下资金数据一致性的方法。
技术介绍
1、随着互联网和电子商务的快速发展,网站系统为支撑庞大的请求量,通常在全球范围内采用分布式的多机房部署架构,这种架构能够提高系统的可用性、容错性和性能,为用户提供更稳定、高效的服务。在多机房部署的环境中,针对用户跨机房的请求场景,保证用户数据一致性成为一个至关重要的挑战,特别是用户资产数据,由于关系到用户在系统或网站内的资产,数据高一致性被高度重视。即使用户短时间内在网站上的资金请求到了不同的机房,也要保证用户的资产数据不会因机房间的数据同步延迟而导致错误。
2、市面上目前用于解决高一致性的方案主要采用复杂的同步机制或者强一致性算法,但由于实现的复杂性,必然会带来更高的成本以及增加性能开销,比如需要昂贵的硬件和软件投资,以及专业的技术支持,尤其在高并发和大规模用户访问的情况下,保持数据一致性的难度将会大幅增加。以paxos等强一致性协议为例,它规定至少超过半数的机房必须完成数据写入操作,才会被视为数据同步成功。但这样的操作会带来额外的通信和同步开销,比如网络延迟、数据传输、以及在多个节点间达成一致所需要的时间。由于每次同步都需要多个机房同时参与,增加响应事件和系统的整体负载,导致系统性能下降。
3、专利“机房多活环境下积分系统实现数据一致性的方法及系统”(申请号:202310874002.2)提出将积分消费数据保存在日志文件中,利用心跳时间的时间差,从日志文件中获取遗漏的消费数据,保证异常机房的数据恢复,实现多机房内的数
4、基于此,需要一种同步效率高且具有高性价比的技术方法来解决多机房部署下资金数据一致性问题,既能突破强一致算法的严格控制,又能不需要增加额外的技术和软硬件成本。
技术实现思路
1、为解决现有的技术问题,本专利技术提供一种保证跨机房场景下资金账户数据一致性的方法,本专利技术通过单点服务模块接收所有机房发出的资金操作请求,控制所有资金操作请求全部发往同一个机房内的资金服务处理,简化了数据同步场景中频繁的实时同步流程,避免同步延迟所造成的问题;同时通过数据修正模块监控及修正不一致的机房数据,降低了强一致操作带来的通信和同步开销,由于每次同步并不需要多个机房同时参与,降低响应事件和系统的整体负载,提高系统性能。
2、本专利技术的技术方案是提供一种保证跨机房场景下资金账户数据一致性的方法,具体步骤包括:
3、步骤1:单独部署独立于各机房的单点服务模块和数据修正服务模块,所述单点服务模块、数据修正服务模块与各机房通过网络专线通信;所述单点服务模块用于管理机房提供资金服务,所述数据修正服务模块用于监控各机房的资金数据库的数据是否一致;
4、步骤2:客户端将用户的资金操作的请求提交至单点服务模块,所述请求包含请求id、请求类型及请求金额,所述请求类型包含查询、支付、转账及冻结;具体是:为各机房的资金服务接口增加特定标记,客户端调用资金服务接口处理请求,待获取到特定标记时,将所述请求提交至单点服务模块;
5、步骤3:单点服务模块获取提供资金服务的机房的信息:单点服务模块读取所述资金服务的地址信息,所述地址信息包含机房编号、服务ip及端口;单点服务模块为当前接收的请求生成新的请求id,并根据所述地址信息,将更新请求id后的最新请求重发至相应机房用以管理资金数据的更新;
6、步骤4:机房响应对所述最新请求的处理,经单点服务模块反馈结果至客户端;若所述处理要变动当前机房的资金数据,则通过机房的资金数据可用性验证后,再更新资金数据及反馈结果;若所述处理无需变动当前机房的资金数据,则直接反馈结果;利用异步技术,将更新后的资金数据同步至其他机房;
7、步骤5:所述数据修正模块定期读取多个机房的资金数据进行比对;若任一机房出现资金数据不一致,读取所述步骤3中更新的资金数据,传至数据不一致的机房完成数据更新。
8、在所述步骤1中,所述单点服务模块定期发送心跳信号,判断机房的资金服务是否可用,具体步骤包括:
9、步骤1-1:单点服务模块不间断地请求机房的资金服务的心跳接口;若未收到心跳信号的次数达到阈值,单点服务模块修改所述机房的服务状态为不可用,修改启用状态为关闭;优选心跳信号发送时间是1次/s,阈值为10秒内达到3次;
10、步骤1-2:单点服务模块筛选服务状态为可用的机房,按照机房编号自小至大顺序选择下一个机房,修改所述机房的启用状态为开启;将资金服务转至所述机房,所述资金服务的后续请求将自动路由至所述机房。
11、在所述步骤3中,单点服务模块从接收的请求中获取请求id和客户端地址,保存所述请求的请求id和更新的请求id之间的映射关系;
12、在所述步骤4中,所述机房内资金数据可用性的验证流程包含:根据机房的资金数据,判断是否达到请求处理的条件;所述资金数据包含账户状态、可用金额;若账户状态为正常,且可用金额大于请求金额,则按照操作类型及操作金额,执行资金数据更新,请求处理成功;否则不执行资金数据更新,请求处理失败。
13、在所述步骤4中,所述经单点服务模块反馈结果至客户端,具体包括:所述单点服务模块获取所述结果中的请求id,利用所述步骤3保存的映射关系,找到请求id对应的客户端地址,将所述结果传至客户端。
14、本专利技术所达到的有益效果:
15、1)本专利技术通过引入单点服务模块接收所有机房发出的资金操作请求,并控制所有资金操作请求全部发往同一个机房内的资金服务处理,简化了数据同步场景中频繁的实时同步流程,解决多机房同步延迟导致严重问题,即使同一客户短时间内在不同机房发起支付请求,因最终服务的都是同一机房的资金服务,也不会出现资金数据的不一致。
16、2)本专利技术利用异步方式同步数据,并通过引入数据修正模块监控各机房的数据库,针对数据不一致的机房,数据修正模块以提供资金服务的机房数据为准,修正不一致机房的数据,相对于强一致协议严格要求多数机房必须同时完成数据更新的操作,降低了强一致操作带来的通信和同步开销,比如网络延迟、数据传输、以及在多个节点间达成一致所需要的时间。由于每次同步并不需要多个机房同时参与,降低响应事件和系统的整体负本文档来自技高网...
【技术保护点】
1.一种保证跨机房场景下资金账户数据一致性的方法,其特征在于,包括:
2.如权利要求1所述的一种保证跨机房场景下资金账户数据一致性的方法,其特征在于,在所述步骤1中,所述单点服务模块定期发送心跳信号,判断机房的资金服务是否可用,具体步骤包括:
3.如权利要求2所述的一种保证跨机房场景下资金账户数据一致性的方法,其特征在于,在所述步骤3中,单点服务模块从接收的请求中获取请求ID和客户端地址,保存所述请求的请求ID和更新的请求ID之间的映射关系。
4.如权利要求3所述的一种保证跨机房场景下资金账户数据一致性的方法,其特征在于,在所述步骤4中,所述机房内资金数据可用性的验证流程包含:根据机房的资金数据,判断是否达到请求处理的条件;所述资金数据包含账户状态、可用金额;若账户状态为正常,且可用金额大于请求金额,则按照操作类型及操作金额,执行资金数据更新,请求处理成功;否则不执行资金数据更新,请求处理失败。
5.如权利要求4所述的一种保证跨机房场景下资金账户数据一致性的方法,其特征在于,在所述步骤4中,所述经单点服务模块反馈结果至客户端,具体包
...【技术特征摘要】
1.一种保证跨机房场景下资金账户数据一致性的方法,其特征在于,包括:
2.如权利要求1所述的一种保证跨机房场景下资金账户数据一致性的方法,其特征在于,在所述步骤1中,所述单点服务模块定期发送心跳信号,判断机房的资金服务是否可用,具体步骤包括:
3.如权利要求2所述的一种保证跨机房场景下资金账户数据一致性的方法,其特征在于,在所述步骤3中,单点服务模块从接收的请求中获取请求id和客户端地址,保存所述请求的请求id和更新的请求id之间的映射关系。
4.如权利要求3所述的一种保证跨机房场景下资金账户数据一致性的方法,其特征在于...
【专利技术属性】
技术研发人员:张帅,贺晟,何健,张驰,
申请(专利权)人:焦点科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。