[发明专利]一种提升分布式系统处理请求稳定性的方法在审
申请号: | 201711179984.4 | 申请日: | 2017-11-23 |
公开(公告)号: | CN107832165A | 公开(公告)日: | 2018-03-23 |
发明(设计)人: | 莫展鹏;季统凯 | 申请(专利权)人: | 国云科技股份有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07;H04L29/08 |
代理公司: | 北京科亿知识产权代理事务所(普通合伙)11350 | 代理人: | 汤东凤 |
地址: | 523808 广东省东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 提升 分布式 系统 处理 请求 稳定性 方法 | ||
技术领域
本发明涉及分布式系统开发技术领域,特别是指一种提升分布式系统处理请求稳定性的方法。
背景技术
随着分布式计算的发展以及大数据分析挖掘技术的兴起,单一请求处理的计算量越来越大,处理单一请求所需要协同计算的节点规模越来越大,比如目前有部分搜索引擎为了提高速度,搜索结果往往都放在内存中,而单一节点的内存有限,因此需要在多个节点上并行执行搜索处理。与此同时,随着程序开发模式的改变,程序的迭代周期越来越短,程序中不可避免存在一些缺陷,某些严重的缺陷如果在多节点上执行,可能导致整个计算集群的崩溃,进而影响整个分布式系统处理请求的稳定性。在这种情况下,如何排除程序错误,提高分布式处理请求稳定性就显得尤为重要。目前一般采用重放日志的方法来排除错误,一般步骤如下:
1、重放近期的日志;
2、搜索日志中系统挂起的日志;
3、通过查看系统挂起前请求的详细信息来定位错误原因。
上述方法对于程序员来说是有意义的,但是存在以下问题:
1、并不能阻止程序错误的蔓延,也就不能真正提高整个分布式系统的稳定性;
2、通过查看大量日志排除错误所需的时间较长,针对性不强;
因此,需要设计一种有效的提高分布式系统处理请求时稳定性的方法。
发明内容
本发明解决的技术问题在于提出一种提升分布式系统处理请求稳定性的方法。
本发明解决上述技术问题的技术方案是:
所述的方法是先将服务请求向分布式系统的某个节点发生处理请求,再确认处理成功后再向其他节点发送请求;如失败则向另一节点发送请求;如再次失败则拒绝在系统的节点执行请求。
所述的方法具体包括以下步骤:
步骤1:分布式系统的后台服务运行在多个节点组成的集群上,服务端先向后台服务所在的其中一个节点发送请求;
步骤2:如果请求被成功执行,那么请求在所有节点上都不会出错,将请求发送到后台服务的整个集群上;
步骤3:如果请求失败,那么再选一个后台服务所在的节点,向其发送请求,重新验证请求执行的结果;
步骤4:如果请求再次执行失败,则拒绝在任何节点上执行请求,同时把请求的信息写入日志,将来用于进一步调试。
所述分布式系统的后台服务指的是可重复执行请求的集群服务,每个后台服务有相同的若干个节点。
所述请求被成功执行指的请求在后台服务节点上执行过程中没有引起节点程序抛出异常,而且能返回执行结果,包括正确的结果和错误的结果;所述错误的结果指的是后台服务程序能正常退出,但是执行的程序路径是非正常路径;
所述请求失败指的是在请求在后台服务节点上执行后引起节点程序异常,包括后台服务崩溃不返回结果以及返回异常的结果。
所述拒绝在任何节点上执行请求指的是相同的请求在服务端就被拦截,不发送到任何一个后台服务的节点上。
本发明的有益效果:
本发明的方法能在增加的性能开销不多的情况下明显缩短大型分布式系统整体的响应时间。本发明可以提升分布式系统处理请求的稳定性。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明的流程图。
具体实施方式
下面以Scala下的akka框架为例,描述一种在其上实现本发明的方法。
首先定义一个正常的Web请求响应流程
在第一请求执行失败时,嵌入处理的代码:
在akka框架的代码中如下进行修改:
本发明的请求可以并行在多个节点上执行,执行完成后各自结果进行合并得到最后结果。但本发明方法首先不使用并行的特性,而是先在其中一个后台服务所在的节点上执行请求;运用试探的方法对分布式系统的请求进行处理,避免在大规模分布式系统中服务频繁迭代遗留缺陷所导致的服务大规模崩溃的问题。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国云科技股份有限公司,未经国云科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711179984.4/2.html,转载请声明来源钻瓜专利网。