[发明专利]一种分布式系统执行脚本的方法及装置在审
| 申请号: | 201911017059.0 | 申请日: | 2019-10-24 |
| 公开(公告)号: | CN110839064A | 公开(公告)日: | 2020-02-25 |
| 发明(设计)人: | 马晓 | 申请(专利权)人: | 苏宁云计算有限公司 |
| 主分类号: | H04L29/08 | 分类号: | H04L29/08;G06F9/46;G06F9/50 |
| 代理公司: | 江苏圣典律师事务所 32237 | 代理人: | 许峰 |
| 地址: | 210042 江苏省南*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 分布式 系统 执行 脚本 方法 装置 | ||
本发明实施例公开了一种分布式系统执行脚本的方法,分布式系统包括协调者节点和参与者节点,所述方法包括,获取并解析脚本,所述脚本包括节点key值和操作命令;获取参与者节点的状态信息,所述状态信息包括节点key分布槽位信息;根据所述节点key值和所述节点key分布槽位信息,发送所述操作命令给参与者节点,采用本发明能够实现在分布式系统中执行脚本,并且降低开发成本,提高效率。本发明还公开了相应的装置。
技术领域
本发明涉及计算机数据库技术领域,具体涉及一种分布式系统执行脚本的方法及装置。
背景技术
如今的计算机数据库技术领域中,会使用Redis内存数据库技术,同时,Lua脚本是一种开发成本较低的脚本语言,可以将一段逻辑用脚本的方式组合在一起,可以解决Redis不具备原子性的问题。
但是,如今的技术中,Redis开源项目仅支持单分片的Lua脚本命令,在很多业务场景中,需要采用分片的Redis集群,非单点模式。分片Redis集群执行Lua脚本存在不准确和不一致等问题。因此迫切需要一种可以在分布式系统环境下执行Lua脚本的方法。
发明内容
本发明的实施例提供一种分布式系统执行脚本的方法,用于在分布式环境下,执行脚本命令,完成操作。
为达到上述目的,本发明的实施例采用如下技术方案:
依据本发明的一个方面,本发明的实施例提供一种分布式系统执行脚本的方法,所述分布式系统包括协调者节点和参与者节点,所述方法包括:
获取并解析脚本,所述脚本包括节点key值和操作命令;
获取参与者节点的状态信息,所述状态信息包括节点key分布槽位信息;
根据所述节点key值和所述节点key分布槽位信息,发送所述操作命令给参与者节点。
可选的,所述根据所述节点key值和所述节点key分布槽位信息,发送所述操作命令给参与者节点,具体包括:
所述协调者节点向所述参与者节点发送状态询问请求,收到所述参与者节点响应后,向所述参与者节点发送预提交请求;
所述参与者节点接收所述预提交请求,执行预提交操作,并记录undo信息,同时向所述协调者节点返回响应;
所述协调者节点接收所述响应后,向所有参与者节点发送执行提交请求;
所述参与者节点接收所述执行提交请求后,执行事务提交,同时向所述协调者节点返回事务完成响应。
可选的,所述协调者节点向所述参与者节点发送状态询问请求,收到所述参与者节点响应后,向所述参与者节点发送预提交请求,具体包括:
所述协调者节点向所述参与者节点发送状态询问请求,所述参与者节点接收所述状态询问请求后,根据自身状态,向所述协调者节点作出回复响应;当状态良好时,则回复响应为YES响应,当状态异常或不在线时,则回复响应为NO响应;
若所述协调者节点接收的回复响应均为YES响应,则向所述参与者节点发送预提交请求。
可选的,若所述协调者节点接收的回复响应中包含至少一个NO响应,则执行事务的中断,所述协调者节点向所有的参与者节点发送中止请求,所述参与者节点接收所述中止请求后,执行事务中断。
可选的,所述参与者节点接收所述预提交请求,执行预提交操作,并记录undo信息,同时向所述协调者节点返回响应之后,还包括:
若所述协调者节点没有接收到所述响应,则向所有参与者节点发送中止请求;
所述参与者节点接收所述中止请求之后,利用所述undo信息,执行事务的回滚,并在完成回滚之后,释放所有的事务资源,并向所述协调者节点发送响应;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏宁云计算有限公司,未经苏宁云计算有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911017059.0/2.html,转载请声明来源钻瓜专利网。





