一种支持云原生架构的orm框架制造技术

技术编号:35923048 阅读:14 留言:0更新日期:2022-12-10 11:09
本发明专利技术提供了一种支持云原生架构的orm框架,其特征在于,包括通过统一的数据模型定义语句,来实现所有数据模型的统一化,避免多样化;通过统一的数据编排服务,完成数据模型到数据库模型的转义;通过抽象语法树将对应的orm查询翻译成适配各种数据库查询语句来统一实现对于所有数据模型的查询;框架总体架构采用领域驱动模型中的cqrs架构将对于数据的查询和操作指令分开,从而达到灵活的扩展、简化查询和提高性能的效果;本发明专利技术从数据层面上也进行了微服务的划分,减少了服务对于数据的加载,降低了系统的资源消耗,增加性能的同时,还可以保证数据的最终一致性,降低了开发人员开发系统的复杂度,解决了微服务在频繁升级过程中的不停机问题。中的不停机问题。中的不停机问题。

【技术实现步骤摘要】
一种支持云原生架构的orm框架


[0001]本专利技术涉及数据库领域,具体地说是一种支持云原生架构的orm框架。

技术介绍

[0002]目前数据架构中,随着系统规模增长,系统的数据模型复杂度呈指数级增长,各数据表耦合度高,导致变更及扩展困难、系统维护难度高。急需要一款能支持微服务架构下的数据架构。
[0003]传统的数据架构针对不同的存储介质需要采用不同的数据访问方式,对于同一数据往往存储在同一介质中,IO操作针对同一存储介质,容易造成IO性能瓶颈以及死锁。
[0004]传统的数据架构通常缺乏统一的数据变化侦听方式,大量的数据复制、监控程序采用轮询的方式访问原数据库。高频次的轮询将显著的增加系统IO压力,降低原系统的运行效率。低频次的轮询又使得镜像数据与原数据相比有明显的延时,无法保证多系统整体上的数据一致性。
[0005]目前,大部分成熟的orm框架基本是都是单机运行,单实例运行的。随着近些年云市场的普及,以及企业上云的大趋势,需要一款能支持云架构下的orm框架,且能保证兼容现有的软件体系。
[0006]随着业务量的增加,整体功能迭代的递进,不可避免的非出现一些问题(测试不足,服务中断等),这些问题会导致蒙受一系列的损失,随着企业对于sla等级要求的不断升高,整个软件都在不断优化自己的平台。目前一种完备的解决方案是用云原生架构来持续部署(如图1),升级软件平台。但目前能做到云原生架构的只局限于功能服务,可以做到服务之间的调用精准路由控制(如图2),但是功能服务中对于数据操作,还存在局限性,并不能做到数据流量的精准路由,目前很少能兼容云原生架构。

技术实现思路

[0007]本专利技术的目的在于提出一种支持云原生架构的orm框架,以解决上述
技术介绍
中提出的问题。
[0008]为实现上述目的,本专利技术提供以下技术方案:
[0009]一种支持云原生架构的orm框架,包括通过统一的数据模型定义语句,来实现所有数据模型的统一化,避免多样化;通过统一的数据编排服务,完成数据模型到数据库模型的转义;通过抽象语法树将对应的orm查询翻译成适配各种数据库查询语句来统一实现对于所有数据模型的查询;框架总体架构采用领域驱动模型中的cqrs架构,将对于数据的查询和操作指令分开,从而达到以下效果:
[0010]①
灵活的扩展——读写数据存储可以根据需求独立扩展;
[0011]②
简单查询——由于读取和写入的数据模型是分开的,读取数据模型可以设计成避免复杂查询的方式;
[0012]③
提高性能——通过优化读取操作并将数据存储副本放置在不同的存储介质,读
取繁重的操作可以显着提高性能;
[0013]内置对关系型数据库的读写分离支持,可以为服务配置多个数据源(oracle关系型数据库,mongo数据库,hbase列式数据库,redis内存数据库,mysql关系型数据库,gemfire内存数据库,elastic search全文索引库)并指定写库和只读库;查询与命令编排组件会自动的将数据更新操作转发至可写库中,查询操作转发至只读库中。
[0014]该orm框架分客户端和服务端,对应的主要流程分为公共步骤、客户端流程和服务端流程。
[0015]所述公共步骤具体包括:
[0016]①
微服务针对自己的业务范围定义涉及到的所有数据;
[0017]②
定义这些数据的具体字段,类型,以及具体写入到哪些数据库,从哪些数据库读取;
[0018]③
到处对应的二进制包;
[0019]对于同一对象,如果定义了多种存储介质(oracle,mongo,redis,gemfire);调用ORM命令更新对象时,数据会根据相应的映射定义,将数据同时存储在不同的存储介质中;查询对象时,编排组件会根据查询内容在定义阶段定义的优先级顺序(如果都没有定义,这根据每种存储介质的查询效率,gemfire>redis>全文索引>关系型数据库来确定),自动的选取效率最高的存储介质执行查询操作。
[0020]所述客户端流程具体包括:
[0021]①
加载数据对应的二进制包;
[0022]②
业务操作,具体对于数据的增删改查;
[0023]③
将对应的增删改查推送到消息队列中;
[0024]数据一致性以及集群服务:该orm框架是基于BASE*架构设计的(BASE是指基本可用(Basically Available)、软状态(Soft State)、最终一致性(Eventual Consistency)),核心思想是为提高系统可用性(Availability),即使无法做到强一致性(Strong Consistency),但采用分布式事务的实现方式,从而达到最终一致性(Eventual Consistency);
[0025]假定所有的数据操作都是可回溯的,它将数据更新操作放入命令缓存队列中顺序处理。群集中可以启动多个服务端实例并行的将数据写入多个存储介质中,最终实现多个存储介质中的数据一致;如果系统出现故障,服务端可以回溯命令缓存恢复数据。
[0026]所述服务端流程具体包括:
[0027]①
加载数据对应的二进制包。
[0028]②
对于数据定义中的每个类型的数据,初始化对应的字段,所需要操作的数据库执行器类(oracle的processor(处理器),mysql的processor,redis的processor等。)
[0029]③
根据消息tag(数据标签)实时监听消息总线中的消息,拿到消息后,对应调用步骤

中的processor处理;
[0030]④
processor的处理逻辑,将数据对应写到自己负责的数据库中;
[0031]对于配置了一致性校验的数据类型,再去每种数据库中查询下数据的状态。
[0032]在单实例中,通过一个先进先出的队列,当取走数据时不需要移动数组中的其他元素,在单消费者单生产者的模型下,不需要加锁,可以更快的存取数据,这种数据结构即
Consistency);
[0069]如图7所示,假定所有的数据操作都是可回溯的,它将数据更新操作放入命令缓存队列中顺序处理。群集中可以启动多个服务端实例并行的将数据写入多个存储介质中,最终实现多个存储介质中的数据一致;如果系统出现故障,服务端可以回溯命令缓存恢复数据。
[0070]所述服务端流程具体包括:
[0071]①
加载数据对应的二进制包。
[0072]②
对于数据定义中的每个类型的数据,初始化对应的字段,所需要操作的数据库执行器类(oracle的processor(处理器),mysql的processor,redis的processor等。)
[0073]③
根据消息tag(数据标本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种支持云原生架构的orm框架,其特征在于,包括通过统一的数据模型定义语句,来实现所有数据模型的统一化,避免多样化;通过统一的数据编排服务,完成数据模型到数据库模型的转义;通过抽象语法树将对应的orm查询翻译成适配各种数据库查询语句来统一实现对于所有数据模型的查询;框架总体架构采用领域驱动模型中的cqrs架构,将对于数据的查询和操作指令分开,从而达到以下效果:

灵活的扩展——读写数据存储可以根据需求独立扩展;

简单查询——由于读取和写入的数据模型是分开的,读取数据模型可以设计成避免复杂查询的方式;

提高性能——通过优化读取操作并将数据存储副本放置在不同的存储介质,读取繁重的操作可以显着提高性能;内置对关系型数据库的读写分离支持,可以为服务配置多个数据源(oracle关系型数据库,mongo数据库,hbase列式数据库,redis内存数据库,mysql关系型数据库,gemfire内存数据库,elastic search全文索引库)并指定写库和只读库;查询与命令编排组件会自动的将数据更新操作转发至可写库中,查询操作转发至只读库中。2.根据权利要求1所述的支持云原生架构的orm框架,其特征在于,该orm框架分客户端和服务端,对应的主要流程分为公共步骤、客户端流程和服务端流程。3.根据权利要求2所述的支持云原生架构的orm框架,其特征在于,所述公共步骤具体包括:

微服务针对自己的业务范围定义涉及到的所有数据;

定义这些数据的具体字段,类型,以及具体写入到哪些数据库,从哪些数据库读取;

导出这些数据对应在第

步骤中定义的属性,生成一个二进制包给后续步骤使用;对于同一对象,如果定义了多种存储介质(oracle,mongo,redis,gemfire);调用ORM命令更新对象时,数据会根据相应的映射定义,将数据同时存储在不同的存储介质中;查询对象时,编排组件会根据查询内容在定义阶段定义的优先级顺序(如果都没有定义,这根据每种存储介质的查询效率,gemfire>redis>全文索引>关系型数据库来确定),自动的选取效率最高的存储介质执行查询操作。4.根据权利要求2所述的支持云原生架构的orm框架,其特征在于,所述客户端流程具体包括:

加载数据对应的二进制包;
...

【专利技术属性】
技术研发人员:朱凯邓若冰
申请(专利权)人:江苏润和软件股份有限公司
类型:发明
国别省市:

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

1