基于依赖树拆分提高运算性能的方法及系统技术方案

技术编号:24331100 阅读:45 留言:0更新日期:2020-05-29 19:38
本发明专利技术提供基于依赖树拆分实现的分布式公式运算提高运算性能的方法,包括公式库,所述公式库包含存在依赖关系的公式;依赖分析模块,所述依赖分析模块用于分析公式库中的公式间存在的依赖关系;业务库,大数据框架,所述大数据框架用于联合依赖分析模块和业务库数据运行公式,本发明专利技术通过公式依赖分析+大数据框架实现公式库的快速执行,通过公式的依赖分析后,得到可以并发的拓扑结构,将拓扑结构提交到大数据框架,通过该方案的实施,提升了公式库的执行速度,保证了正确结果,可以满足海量的公式库的执行速度的需求。

Method and system of improving operation performance based on dependency tree splitting

【技术实现步骤摘要】
基于依赖树拆分提高运算性能的方法及系统
本专利技术涉及解决提升海量公式库执行速度、可靠性的
,尤其涉及基于依赖树拆分实现的分布式公式运算,提高运算性能,解决单体服务器运算崩溃死机方法及其系统。
技术介绍
公式是“规则”的具体描述,任何一个业务系统都会有无数的规则,它就像一个发动机是为了让我们更好的处理工作。假如在一个媒体发布系统里面,设置发布时间为“2019年10月10号上线”,那么这篇新闻必须等到这个时间点才能发布出去,又比如在一个系统里,输1得2,输2得4。这些就是规则的一种,通过它能够可以实现具体功能,系统里规则可能随时会发生变化,如政策法规、营销套路更新了,如果只是由程序员来修改规则,费时、费力,增加了控制成本。这个时候,如果用公式(表达式)来描述规则,事情就好办了,只需在公式编辑器里面修改公式,系统运行的规则就会跟着变化。系统中描述规则的公式有很多,称为“公式库”,公式库需要运行来驱动业务,运行的速度、可靠性直接关系到系统能力,目前公式引擎在设计存在一定的局限性:(1)性能不足:基于单体服务执行公式,受限于单台机器的性能上限,公式的执行速度慢;(2)可靠性低:服务异常崩溃、机器故障都会导致服务不可用,会有较长停机时间。(3)公式关联关系复杂:公式间有引用关系,如在一个新闻网页爬虫的业务中,先分析栏目页面中有哪些新增的新闻链接,再由爬虫去下载这些新闻页,“栏目分析”和“爬虫下载”属于两个公式规则,有依赖关系,执行时有先后顺序,在复杂的系统里面分析公式的依赖引用关系是件困难的事情,依赖分析错误会导致错误的执行结果。
技术实现思路
为了解决公式执行速度、可靠性问题,本专利技术提出了一种分析公式引用依赖、快速执行公式的方法,其先分析公式依赖关系,构造成带层次的拓扑结构,再由大数据框架并行、批量的运行公式,由此提高运算性能,解决服务器运算崩溃死机的难题。为实现上述目的,本专利技术提出一种基于依赖树拆分实现的分布式公式运算提高运算性能的方法,包括分析公式依赖关系的步骤。业务系统包含的规则库,其中的规则存在相互依赖的关系,执行时必须是被依赖的公式先执行,对公式的依赖关系进行分析,将公式库解析成由单个公式组成的多颗树,将公式库拆解成森林结构;构造带层次拓扑结构的步骤,按照公式库与单个公式之间相互依赖的关系,将单个公式与公式库组成有引用关系组成的有向图,将公式库构造成带层次拓扑结构的公式库;大数据框架并行、批量运行公式的步骤,大数据框架由“任务管理”、“协调者”、“agent”、“worker”角色组成:任务管理:负责接收任务,任务的分配和调度,没有状态,支持热备部署;协调者:存储任务,维护其他角色的心跳,本身是集群形态,集群内部通过gossip或者p2p协议同步状态数据,使用2pc协议同步数据;agent:从协调者拉取任务,将任务分配到worker执行;woker:执行任务,它可以是进程或者线程。进一步的,所述其他角色包括管理模块和服务器,心跳是为了在运行阶段检测各个模块的健康,由管理模块、服务器定时发送心跳至协调模块,它可以是tcp、http接口的rpc调用;协调模块用于存储任务和维护其他角色的心跳;拉取任务是指运行公式的任务,一个任务包含一个或多个公式数据,它是执行公式的最小单元;任务分配是指管理模块监控工作模块的任务执行情况,包括当前正在运行的任务数、任务积压数、机器资源负载情况,向协调者申请新的任务;并发执行是指公式的并发执行,同一层级中有很多公式,将公式封装到任务中,提交给大数据框架并发执行。进一步的,所述构造带层次拓扑结构的步骤,将公式依赖关系描述成拓扑图,图中节点为公式,边为公式之间的依赖关系,用有向无环图来表示依赖关系,拓扑排序能根据这些依赖给出公式执行的先后顺序;按排序值来划分层次,同一排序值处在一个层次,一个层次中的公式可以并发执行不存在依赖关系。进一步的,所述业务库是指实际的业务数据,不限于关系或非关系型的数据库,由多个数据库组成,它包含一个公司或企业所有的信息化的数据。本专利技术还提出一种基于依赖树拆分实现的分布式公式运算提高运算性能的系统,包括公式库,所述公式库包含存在依赖关系的公式。依赖分析模块,所述依赖分析模块用于分析公式库中的公式间存在的依赖关系。业务库,为实际的业务数据,不限于关系或非关系型的数据库,由多个数据库组成,它包含一个公司或企业所有的信息化的数据;业务库用户存储实际业务的数据,不限于各种关系(如mysql)、非关系(如redis)型数据库。大数据框架,所述大数据框架用于联合依赖分析模块和业务库数据运行公式。作为优化,所述大数据框架包括任务管理模块、协调模块、服务器,所述任务管理模块与依赖分析模块数据连接接收分析后的公式库中公式的依赖关系;所述任务管理模块用于接收任务并且分配和调度任务;所述协调模块用于存储任务和维护其他角色的心跳;所述协调模块与任务管理模块数据连接,所述服务器用于拉取任务和执行任务;所述服务器与协调模块数据连接获取任务,并从业务库中获取公式,进行运算。作为优化,所述服务器包括管理模块和工作模块,所述管理模块与协调模块数据连接,所述管理模块用于拉取协调模块的任务,所述管理模块与工作模块数据连接,所述管理模块用于分配任务发送到工作模块,所述工作模块用于执行任务。作为优化,所述业务库与工作模块数据连接,所述工作模块使用业务库数据用于执行公式。作为优化,所述依赖分析模块提交拓扑结构给任务管理模块,所述依赖分析模块的拓扑结构为层次结构,所述层次结构同一层次中的公式可以并发执行。作为优化,所述协调模块包括存储模块、维护模块,所述存储模块用于存储任务模块分配的任务和心跳数据,所述维护模块用于维护大数据框架下其他角色的心跳。作为优化,所述任务管理模块包括接受模块、生成模块和分配调度模块,所述接受模块用于接受依赖分析模块的分析数据和接受任务数据;所述接受模块与生成模块数据连接,所述生成模块用于生成任务和心跳数据;所述生成模块与分配调度模块数据连接,所述分配调度模块用于分配和调度任务和心跳数据;所述分配调度模块与协调模块数据连接。作为优化,所述协调模块内部使用gossip或者p2p协议同步状态数据,使用2pc协议同步任务数据和心跳数据。与现有技术相比,本专利技术的有益效果为:(1)通过公式依赖分析+大数据框架实现公式库的快速执行;(2)通过公式的依赖分析后,得到可以并发的拓扑结构即层次结构,将拓扑结构提交到大数据框架,通过该方案的实施,提升了公式库的执行速度,保证了正确结果,可以满足海量的公式库的执行速度的需求;(3)可以适应多个服务器,多个服务器可同时运算公式,弥补了性能不足,不再受限于单体服务器,加快了公式的执行速度;(4)大大提高了可靠性,多个服务器同时运算,可以防止单体服务器出现崩溃或机器故障导致不可用的现象,避免出现较长时间的停机;(5)预先进行公式的依赖本文档来自技高网
...

【技术保护点】
1.基于依赖树拆分实现的分布式公式运算提高运算性能的方法,其特征在于:包括/n分析公式依赖关系的步骤,业务系统包含的规则库,其中的规则存在相互依赖的关系,执行时必须是被依赖的公式先执行,对公式的依赖关系进行分析,将公式库解析成由单个公式组成的多颗树,将公式库拆解成森林结构;/n构造带层次拓扑结构的步骤,按照公式库与单个公式之间相互依赖的关系,将单个公式与公式库组成有引用关系组成的有向图,将公式库构造成带层次拓扑结构的公式库;/n大数据框架并行、批量运行公式的步骤,大数据框架由“任务管理”、“协调者”、“agent”、“worker”角色组成:/n任务管理:负责接收任务,任务的分配和调度,没有状态,支持热备部署;/n协调者:存储任务,维护其他角色的心跳,本身是集群形态,集群内部通过gossip或者p2p协议同步状态数据,使用2pc协议同步数据;/nagent:从协调者拉取任务,将任务分配到worker执行;/nwoker:执行任务,它可以是进程或者线程。/n

【技术特征摘要】
1.基于依赖树拆分实现的分布式公式运算提高运算性能的方法,其特征在于:包括
分析公式依赖关系的步骤,业务系统包含的规则库,其中的规则存在相互依赖的关系,执行时必须是被依赖的公式先执行,对公式的依赖关系进行分析,将公式库解析成由单个公式组成的多颗树,将公式库拆解成森林结构;
构造带层次拓扑结构的步骤,按照公式库与单个公式之间相互依赖的关系,将单个公式与公式库组成有引用关系组成的有向图,将公式库构造成带层次拓扑结构的公式库;
大数据框架并行、批量运行公式的步骤,大数据框架由“任务管理”、“协调者”、“agent”、“worker”角色组成:
任务管理:负责接收任务,任务的分配和调度,没有状态,支持热备部署;
协调者:存储任务,维护其他角色的心跳,本身是集群形态,集群内部通过gossip或者p2p协议同步状态数据,使用2pc协议同步数据;
agent:从协调者拉取任务,将任务分配到worker执行;
woker:执行任务,它可以是进程或者线程。


2.根据权利要求1所述的基于依赖树拆分实现的分布式公式运算提高运算性能的方法,其特征在于:
所述其他角色包括管理模块和服务器,心跳是为了在运行阶段检测各个模块的健康,由管理模块、服务器定时发送心跳至协调模块,它可以是tcp、http接口的rpc调用;协调模块用于存储任务和维护其他角色的心跳;
拉取任务是指运行公式的任务,一个任务包含一个或多个公式数据,它是执行公式的最小单元;
任务分配是指管理模块监控工作模块的任务执行情况,包括当前正在运行的任务数、任务积压数、机器资源负载情况,向协调者申请新的任务;
并发执行是指公式的并发执行,同一层级中有很多公式,将公式封装到任务中,提交给大数据框架并发执行。


3.根据权利要求1所述的基于依赖树拆分实现的分布式公式运算提高运算性能的方法,其特征在于:所述构造带层次拓扑结构的步骤,将公式依赖关系描述成拓扑图,图中节点为公式,边为公式之间的依赖关系,用有向无环图来表示依赖关系,拓扑排序能根据这些依赖给出公式执行的先后顺序;按排序值来划分层次,同一排序值处在一个层次,一个层次中的公式可以并发执行不存在依赖关系。


4.根据权利要求1所述的基于依赖树拆分实现的分布式公式运算提高运算性能的方法,其特征在于:所述业务库是指实际的业务数据,不限于关系或非...

【专利技术属性】
技术研发人员:范羊羊章晋
申请(专利权)人:南京云帐房网络科技有限公司
类型:发明
国别省市:江苏;32

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

1