基于表达式的分布式分级计算系统、电子设备及存储介质的制作方法

文档序号:33824201发布日期:2023-04-19 20:57阅读:45来源:国知局
基于表达式的分布式分级计算系统、电子设备及存储介质的制作方法

本发明属于分布式分级计算领域,尤其涉及基于表达式的分布式分级计算系统、电子设备及存储介质。


背景技术:

1、通常表达式的计算有落地和不落地两种方案,不落地的方案存在明显的短板,需要在每次查询数据的时候对表达式进行实时计算,这种方案对接口性能影响会比较大,而且不能对表达式的值进行筛选和统计。

2、落地的方案传统方案的实现方式,是在数据创建或者改变时,通过同步或异步的接口去更新表达式的值,这些方案的痛点在于:

3、第一,同步的接口效率比较低下会影响用户操作体验,异步的接口存在并发更新的问题,可能导致数据不一致;

4、第二,普遍无法支持存量数据的运算,导致当计算公式发生变化后只能影响新的数据;即便是支持存量数据运算,对于运算效率和数据最终一致性,在海量数据下依然是非常大的挑战;而且大量数据可能会造成计算拥堵,导致需要实时计算的数据无法及时计算,影响用户业务;

5、第三,数据的变更来源多种多样,包括但不限于用户直接从界面提交、通过api写入、通过导入工具直接入库,变更来源的多样性导致计算覆盖的难度极大提升。


技术实现思路

1、为解决上述技术问题,本发明提出一种基于表达式的分布式分级计算系统、电子设备及存储介质的技术方案,以解决上述技术问题。

2、本发明第一方面公开了一种基于表达式的分布式分级计算系统,所述系统包括:

3、所述系统包括:表达式管理模块、业务数据模块、任务调度模块、计算预处理模块、消息聚合分发模块、计算模块、业务库、任务库以及消息库;

4、所述业务库:一种数据库存储,结构化存储业务数据信息;

5、所述任务库:一种数据库存储,结构化存储所述任务调度模块的计算任务的信息;

6、所述消息库:一种数据库存储,结构化存储所述消息聚合分发模块的计算聚合消息;

7、所述表达式管理模块:配置表达式规则,表达式配置完成以后向所述任务调度模块提交存量数据的全量的计算任务的请求,并把配置后的表达式规则发送给所述业务库;

8、所述业务数据模块:维护业务数据,数据变更成功之后向所述计算预处理模块发送数据变更消息,并将变更后数据保存到所述业务库;

9、所述任务调度模块:根据所述计算任务的请求,向所述消息聚合分发模块发送提交任务的第二计算消息clmsg2和取消任务,向所述计算模块做任务回调;将计算任务的信息发送给所述任务库;

10、所述计算预处理模块:接收业务数据模块发出的数据变更消息,根据数据变更前后数据解析表达式依赖关系,生成第一计算消息clmsg1,并将所述第一计算消息clmsg1发送至消息聚合分发模块;

11、所述消息聚合分发模块:接收计算预处理模块发送的所述第一计算消息clmsg1与任务调度模块发出的第二计算消息clmsg2,将所述第一计算消息clmsg1或所述第二计算消息clmsg2聚合,得到计算聚合消息并存入消息库,定时查询消息库中的计算聚合消息并分发给计算模块;

12、所述计算模块:接收消息聚合分发模块发出的计算聚合消息,计算表达式的值并保存至业务库,返回处理结果。

13、根据本发明第一方面的系统,所述业务数据信息包含:对象描述信息、字段描述信息以及对象实例信息;

14、所述对象描述信息的具体内容包含:对象id、对象名称以及字段列表;

15、表达式规则属于字段描述信息,其具体内容包含:字段id、字段名称、所属对象id、字段类型、表达式的返回值类型以及表达式的计算公式;

16、所述对象实例信息的具体内容包含:数据id、所属对象id、版本号以及各字段的值。

17、根据本发明第一方面的系统,所述数据变更消息包括:数据操作类型、数据id、变更前数据以及变更后数据;

18、所述维护业务数据,数据变更成功之后向所述计算预处理模块发送数据变更消息,并将变更后数据保存到所述业务库的方法包括:

19、用户通过网页或终端提交操作业务数据的请求,请求的参数包含数据操作类型、数据id、所属对象id以及数据内容;

20、根据所述数据id和所属对象id从业务库查询业务数据,将查询到的数据内容和请求的参数中的数据内容进行比较,生成变更前数据和变更后数据;

21、根据所述请求的参数,按数据操作类型和数据id将请求的参数中的变更后数据保存到业务库,并将数据的版本号加一;

22、根据变更前后数据,生成数据变更消息,发送至计算预处理模块。

23、根据本发明第一方面的系统,所述根据所述计算任务的请求,向所述消息聚合分发模块发送提交任务的第二计算消息clmsg2的方法包括:

24、接收表达式管理模块的计算任务的请求,生成计算任务job1将其保存到任务库;

25、存在一个或一组线程,定时轮训查询出任务状态为待处理的计算任务job1,同时将任务状态设置为处理中;

26、根据轮训到的计算任务job1中的对象id,从业务库分批查询数据id,生成多条第二计算消息clmsg2并发送至消息聚合分发模块;第二计算消息clmsg2的消息体包含:任务id、字段id列表、所属对象id以及数据id;

27、向所述计算模块做任务回调的方法包括:

28、接收来自计算模块任务回调的请求,根据任务id将任务库中的计算任务的计算状态更新为已完成。

29、根据本发明第一方面的系统,所述根据数据变更前后数据解析表达式依赖关系,生成第一计算消息clmsg1,并将所述第一计算消息clmsg1发送至消息聚合分发模块的方法包括:

30、多台计算机设备多个进程同时接收数据变更消息,从数据变更消息的消息体的变更前后数据解析出变更的字段列表fl1;

31、根据数据变更消息的所属对象id,查询数据所属对象描述信息以及关联对象描述信息,查找其中所有的表达式规则字段,解析其计算公式中的变量,根据所述变量之间的依赖关系生成有向无环图gp1;所述有向无环图gp1的节点为对象中存在关联关系的字段,边为依赖关系,边的方向由依赖方指向被依赖方;

32、根据生成的有向无环图gp1和解析的字段列表fl1,遍历有向无环图gp1中所有节点查找属于fl1的节点,得到所述fl1的节点的前置节点字段列表fl2;

33、根据前置节点字段列表fl2和数据变更消息查询需要计算的数据id,生成所述第一计算消息clmsg1,并发送至消息聚合分发模块;

34、所述第一计算消息clmsg1的消息体包含:字段id列表、所属对象id以及数据id。

35、根据本发明第一方面的系统,所述将所述第一计算消息clmsg1或所述第二计算消息clmsg2聚合的方法包括:

36、从所述第一计算消息clmsg1或所述第二计算消息clmsg2的消息体解析出数据id、所属对象id和字段id列表;

37、基于数据id的大小、所属对象id或字段id列表中的字段类型,计算消息优先级的值;

38、根据解析的数据id,从消息库查询待处理的计算聚合消息,如查询结果为空,则设置消息优先级为p,将所述待处理的计算聚合消息保存至消息库;如查询结果不为空,则与查询结果的数据比较取优先级最高值p1,与查询结果的数据的字段id列表计算合集,将新的优先级p1与计算合集后的字段id列表保存至消息库。

39、根据本发明第一方面的系统,所述定时查询消息库中的计算聚合消息并分发给计算模块的方法包括:

40、将消息优先级分成若干个区间:r1,r2...rn,每个区间均有起始优先级sp和终止优先级ep,区间之间不重叠,区间加一起为所有优先级,各区间均执行以下流程;

41、根据所述区间分配线程资源,各线程均执行以下流程;

42、线程定期查询优先级属于本区间消息状态为待处理的计算聚合消息,查询到的计算聚合消息按优先级从高至低排序,让所述计算模块可按优先级从高至低进行计算;

43、将查询到的计算聚合消息的消息状态更新为处理中,并将查询到的计算聚合消息发送至计算模块进行处理,计算模块经过计算后返回处理结果;

44、根据所述处理结果,若处理成功,则将处理后的计算聚合消息从消息库中删除,否则更新计算聚合消息的状态为待处理,等待再次重试处理。

45、根据本发明第一方面的系统,所述接收消息聚合分发模块发出的计算聚合消息,计算表达式的值并保存至业务库,返回处理结果的方法包括:

46、多台计算机设备多个进程同时接收消息聚合分发模块发出的计算聚合消息,从所述计算聚合消息的消息体解析出数据、数据id、所属对象id和字段id列表;

47、根据析出的数据从业务库查询数据的业务数据信息、表达式信息以及关联关系的数据的信息;

48、根据查询出的结果,解析表达式的计算公式中的变量,从所述数据的业务数据信息中查找变量的值并代入计算公式,计算出表达式的值;

49、根据查询出的结果,基于业务库数据版本号v1生成新版本号v2,使用v1作为条件,将表达式的值以及新版本号v2更新到业务库,如更新失败则表示所述数据在业务库被其他线程修改过,则回到业务库查询,重新计算当前数据,直至成功更新到业务库为止;

50、所述表达式的值以及新版本号v2成功更新到业务库后,返回处理结果成功。

51、本发明第二方面提供了一种电子设备,所述设备包括存储器和处理器,所述存储器上存储有计算机程序,该计算机程序被所述处理器执行时,执行如本发明第一方面所述的一种基于表达式的分布式分级计算系统中的方法。

52、本发明第三方面提供了一种存储介质,该存储介质存储的计算机程序,能够被一个或多个处理器执行,能够用来实现如本发明第一方面所述的一种基于表达式的分布式分级计算系统中的方法。

53、本发明提出的方案,针对基于业务数据的表达式计算场景,使用消息机制实现表达式的分布式异步计算。对于新增数据通过计算预处理模块进行预处理确认计算任务,对于存量数据通过任务调度模块处理海量数据的重新计算,通过消息聚合分发模块对计算消息进行聚合再分发,在聚合重复计算任务提升整体计算效率的同时,通过优先级分发方法,赋予指定的计算任务以更高优先级执行,进一步提升关键业务的计算效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1