一种微服务划分方法和装置与流程
未命名
10-09
阅读:113
评论:0
1.本发明涉及计算机技术领域:
:,特别是涉及一种微服务划分方法和装置。
背景技术:
::2.微服务是一种应用广泛的软件开发架构与思想,它提倡通过可各自独立开发、相互解耦、可相互通信协调以及可独立部署的服务来构建应用。微服务将原本单体的系统转化为多个服务的开发,在微服务开发的过程中,开发者首先需要考虑的就是如何进行微服务的划分。不合适的微服务划分可能会导致开发者需要编写大量服务之间通信的代码,这不仅会使得服务之间的通信所消耗的资源增多,影响系统的性能,而且还有可能随着开发的不断深入,在后期出现需要重构部分服务的风险。微服务的划分是影响整个项目的开发效率以及系统性能稳定性的重要因素,也是微服务技术邻域所研究的一个重要问题。3.相关技术中,通过已有的单体项目或者代码文件来梳理出业务之间的关联与耦合,划分出多个微服务。这类相关技术是建立在存在完整的单体项目或已有项目代码的基础上,主要应用场景是老旧项目改造。而对于开发新的微服务工程的场景,开发者面对的是全新的项目,没有已存在的相关单体项目与项目代码。这类技术没有可以应用的基础,则开发者无法通过这类相关技术进行微服务的划分。4.另一些相关技术忽略了数据库对微服务划分的影响,并未考虑到微服务的一则重要思想,即“每个微服务对应单独的数据库”。忽略了数据库因素,在后续开发过程中仍然需要依靠开发者的经验来划分数据库,若划分不合适仍会增大微服务之间的通信开销,有降低系统性能以及增加系统故障概率的风险。5.鉴于此,克服该现有技术所存在的缺陷是本
技术领域:
:亟待解决的问题。技术实现要素:6.本发明要解决的技术问题是现有的微服务划分未考虑接口与数据库之间的关系,导致微服务划分后,各个微服务需要与多个数据库进行通信,导致微服务之间的通信开销增大。7.本发明采用如下技术方案:8.第一方面,本发明提供了一种微服务划分方法,包括:9.根据接口的参数和数据表单中的数据,找到接口与数据表单之间的关联关系;10.根据接口与数据表单之间的关联关系,生成一个或多个第一关系图,以便于根据所述第一关系图进行微服务的划分;11.其中,在第一关系图中,以数据表单作为顶点,以与多个数据表单相关联的接口作为所述多个数据表单之间用于两两连接的边。12.优选的,所述根据接口的参数和数据表单中的数据,找到接口与数据表单之间的关联关系,具体包括:13.将接口的参数转换为相应的参数向量,将数据表单中数据的字段名转换为相应的数据向量;14.计算各参数向量与各数据向量之间的相似度;15.若至少一个第一参数向量与至少一个第一数据向量之间的相似度大于预设相似度,则第一接口与第一数据表单相关联;其中,所述第一参数向量是由第一接口的参数转换得到的参数向量,所述第一数据向量是由第一数据表单中数据的字段名转换得到的数据向量。16.优选的,当第一关系图的数量小于预设微服务粒度时,所述根据第一关系图进行微服务的划分,具体包括:17.根据各第一关系图中数据表单的数量,对数据表单数量最多的第一关系图进行拆分;其中,在一次拆分中,将一个第一关系图拆分为多个联通关系图,将所述多个联通关系图作为多个第一关系图参与下一次拆分,直至拆分得到联通关系图与未拆分的第一关系图的数量总和等于预设微服务粒度;18.将各联通关系图和未拆分的各第一关系图作为第二关系图,根据各第二关系图,进行微服务的划分。19.优选的,所述将一个第一关系图拆分为多个联通关系图,具体包括:20.将第一数据表单的权重值、第二数据表单的权重值以及既关联于第一数据表单又关联于第二数据表单的接口的权重值进行加权求和,得到连接第一数据表单和第二数据表单的边的边权重值;21.根据第一关系图中所有边的边权重值,选择性地对第一关系图中的相应边进行拆分,以将第一关系图拆分为多个关系图,且所拆分的所有边的边权重值的和最小。22.优选的,所述根据各第二关系图,进行微服务的划分,具体包括:23.对应每个第二关系图,建立相应的微服务,将第二关系图中的所有未拆分边所对应接口划分到相应的微服务中;将已拆分边所对应接口划分到与该接口关联最密切的微服务中;其中,以第一接口所关联数据表单数量最多的第二关系图所对应的微服务作为与第一接口关联最密切的微服务;24.和/或,对应每个第二关系图,建立相应的数据库,将第二关系图中的所有数据表单划分到相应的数据库中。25.优选的,当第一关系图的数量大于预设微服务粒度时,所述根据第一关系图进行微服务的划分,具体包括:26.根据各第一关系图中数据表单的数量,对数据表单数量最少的两个第一关系图进行合并;其中,在一次合并中,将多个第一关系图合并为多个合并关系图,将所述合并关系图作为第一关系图参与下一次合并,直至合并得到合并关系图与未合并的第一关系图的数量总和等于预设微服务粒度;27.将各合并关系图和未合并的各第一关系图作为第二关系图,根据各第二关系图,进行微服务的划分。28.优选的,所述根据各第二关系图,进行微服务的划分,具体包括:29.对应每个第二关系图,建立相应的微服务,将第二关系图中的所有边所对应接口划分到相应的微服务中;30.和/或,对应每个第二关系图,建立相应的数据库,将第二关系图中的所有数据表单划分到相应的数据库中。31.优选的,所述接口通过请求响应综合体进行存储,所述请求响应综合体中存储接口的请求参数和接口的响应参数;32.所述请求响应综合体还存储有与接口相关联的数据表单,以表现接口与数据表单之间的关联关系。33.优选的,所述接口从api设计文档中读取得到,所述数据表单从数据表单设计文档中读取得到。34.第二方面,本发明还提供了一种微服务划分装置,用于实现第一方面所述的微服务划分方法,所述装置包括:35.至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行第一方面所述的微服务划分方法。36.第三方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的微服务划分方法。37.本发明通过接口与数据表单之间的关联关系,根据关联关系生成第一关系图,从而根据关系图进行微服务的划分,在第一关系图中,以接口作为连接各数据表单的边,从而使第一关系图能够综合表现接口与接口之间的关系、接口与数据表单之间的关系以及数据表单与数据表单之间的关系,从而能够综合考虑这些关系进行微服务的划分,实现微服务和/或数据库的合理划分,使一个微服务所对应通信的数据库尽可能少,从而减少微服务之间的通信开销。附图说明38.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。39.图1是本发明实施例提供的一种微服务划分方法的流程示意图;40.图2是本发明实施例提供的一种微服务划分方法中请求响应综合体的示意图;41.图3是本发明实施例提供的又一种微服务划分方法中请求响应综合体的示意图;42.图4是本发明实施例提供的一种微服务划分方法中生成第一关系图的示意图;43.图5是本发明实施例提供的又一种微服务划分方法中生成第一关系图的示意图;44.图6是本发明实施例提供的另一种微服务划分方法中生成第一关系图的示意图;45.图7是本发明实施例提供的一种微服务划分方法中找到关联关系的流程示意图;46.图8是本发明实施例提供的一种微服务划分方法中进行第一关系图的拆分的示意图;47.图9是本发明实施例提供的一种微服务划分方法中进行第一关系图的拆分的流程示意图;48.图10是本发明实施例提供的另一种微服务划分方法的流程示意图;49.图11是本发明实施例提供的一种微服务划分方法中获取请求响应综合体的流程示意图;50.图12是本发明实施例提供的另一种微服务划分方法中找到关联关系的流程示意图;51.图13是本发明实施例提供的又一种微服务划分方法的流程示意图;52.图14是本发明实施例提供的一种微服务划分方法中计算全局最小割的流程示意图;53.图15是本发明实施例提供的一种微服务划分装置的架构示意图。具体实施方式54.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。55.本发明中术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本技术的描述中,除非另有说明,“多个”的含义是两个或两个以上。56.此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。57.实施例1:58.现有的微服务划分未考虑接口与数据库之间的关系,导致微服务划分后,各个微服务需要与多个数据库进行通信,导致微服务之间的通信开销增大,为了解决此问题,本发明实施例1提供了一种微服务划分方法,如图1所示,包括:59.在步骤201中,根据接口的参数和数据表单中的数据,找到接口与数据表单之间的关联关系;所述关联关系通常表现为接口中参数所代表的数据存储于相应数据表单的对应字段中。60.所述接口从api(applicationprogramminginterface,应用程序接口)设计文档中读取得到,所述数据表单从数据表单设计文档中读取得到。所述接口通过请求响应综合体进行存储,所述请求响应综合体中存储接口的请求参数和接口的响应参数,如图2所示,其中,request_param为请求参数,reponse_param为响应参数,将请求参数和响应参数进行去重后作为综合参数synthetic_param存储在请求响应综合体中;所述请求响应综合体还存储有与接口相关联的数据表单,以表现接口与数据表单之间的关联关系,如图3所示,其中,在请求响应综合体中新增table_list参数,用于存储数据表单链表指针,该数据表单链表指针所指向的链表中存储与该接口关联的所有数据表单。61.在步骤202中,根据接口与数据表单之间的关联关系,生成一个或多个第一关系图,以便于根据所述第一关系图进行微服务的划分;其中,在第一关系图中,以数据表单作为顶点,以与多个数据表单相关联的接口作为所述多个数据表单之间用于两两连接的边。所述第一关系图可以是无向图,所形成的第一关系图如图6所示,其中,数据表单table1、table2、table3、table4和table5之间连接形成第一关系图1,接口6仅与数据表单table6相关联,且数据表单table6也不与其它接口关联,故table6单独形成第一关系图2,数据表单table8和table9均与接口7关联,数据表单table8和table9连接形成第一关系图3。当一个接口仅与单个数据表单相关联,或一个数据表单所关联的接口都不与其他数据表单相关联时,则所述数据表单和所述接口相对独立,在各个微服务划分后,将相对独立的数据表单划分到数据表单相对较少的数据库中,将与相应数据表单关联的接口划分到与该数据表单匹配的微服务中。所述微服务通常指代一个或多个接口的集合,通常基于一个图对应一个微服务的方式进行划分,所述根据所述第一关系图进行微服务的划分可以是将一个第一关系图中的所有边所对应接口划分到一个微服务中,并对应该微服务,建立对应的数据库,将该第一关系图中的所有数据表单划分到该数据库中。62.其中,所述以数据表单作为顶点是指第一关系图中的顶点代表数据表单,所述以与多个数据表单相关联的接口作为所述多个数据表单之间用于两两连接的边是指第一关系图中的边代表接口,在实际使用中,一条边可代表多个接口。63.所述两两连接所指代的是每两个数据表单之间相互连接,以图4举例而言,当接口a与table1、table2和table3相关联时,则形成如图4中类似三角形的第一关系图,其中,table1、table2和table3分别为3个顶点,3个顶点之间相互连接,每个顶点之间相互连接的边均代表接口a。64.当多个接口与多个数据表单相关联时,如图5所示,接口a与table1、table2和table3相关联,接口b与table1、table2和table3相关联,则table1、table2和table3分别为3个顶点,3个顶点之间相互连接,形成第一关系图,其中,3个顶点所连接的边代表接口a和接口b。65.本实施例通过接口与数据表单之间的关联关系,根据关联关系生成第一关系图,从而根据关系图进行微服务的划分,在第一关系图中,以接口作为连接各数据表单的边,从而使第一关系图能够综合表现接口与接口之间的关系、接口与数据表单之间的关系以及数据表单与数据表单之间的关系,从而能够综合考虑这些关系进行微服务的划分,实现微服务和/或数据库的合理划分,使一个微服务所对应通信的数据库尽可能少,从而减少微服务之间的通信开销。66.在实际使用中,所述根据接口的参数和数据表单中的数据,找到接口与数据表单之间的关联关系,如图7所示,具体包括:67.在步骤301中,将接口的参数转换为相应的参数向量,将数据表单中数据的字段名转换为相应的数据向量;举例而言,将每个请求响应综合体中的参数以及每个数据表单中的字段名导入预先训练好的词向量模型之中,所述词向量模型分别输出每个参数以及字段名的预设维度的词向量。其中,所述词向量模型可以是word2vec(wordtovector)模型、glove模型或bert(bidirectionalencoderrepresentationfromtransformers)模型等。68.在步骤302中,计算各参数向量与各数据向量之间的相似度;所述相似度可通过欧式距离、余弦相似度等方式进行计算,如使用余弦相似度来计算向量的相似度,即其中,xi为参数向量的第i维数据,yi为数据向量的第i维数据。69.在步骤303中,若至少一个第一参数向量与至少一个第一数据向量之间的相似度大于预设相似度,则第一接口与第一数据表单相关联;其中,所述第一参数向量是由第一接口的参数转换得到的参数向量,所述第一数据向量是由第一数据表单中数据的字段名转换得到的数据向量。举例而言,接口a中包含有3个参数,则对应转换得到3个参数向量,当以接口a为第一接口时,这3个参数向量均为第一参数向量;数据表单table1中包含有4个字段名,对应转换得到4个数据向量,当以数据表单table1为第一数据表单时,这4个数据向量均为第一数据向量,当3个参数向量中的任意一个与4个数据向量中的任意一个之间的相似度大于预设相似度时,则接口a与数据表单table1相关联。所述预设相似度由本领域技术人员根据接口设计特性与数据表单的设计特性分析得到,在可选的实施例中,所述预设相似度可以是0.9,如在获得每个请求响应综合体中的参数以及数据表单的字段名所对应的300维的词向量(即所述参数向量和数据向量)之后,依次遍历每个请求响应综合体中的参数,将当前参数的词向量与所有数据表单的字段名的词向量进行相似度校验,当两者的词向量相似度大于等于0.9时,认为两者可以匹配。70.在具体的应用场景下,在进行微服务划分时往往需要控制所划分的微服务的数量,针对此场景提供了以下可选的实施方式,即当第一关系图的数量小于预设微服务粒度时,所述根据第一关系图进行微服务的划分,具体包括:71.根据各第一关系图中数据表单的数量,对数据表单数量最多的第一关系图进行拆分;其中,在一次拆分中,将一个第一关系图拆分为多个联通关系图,将所述多个联通关系图作为多个第一关系图参与下一次拆分,直至拆分得到联通关系图与未拆分的第一关系图的数量总和等于预设微服务粒度;所述预设微服务粒度由本领域技术人员根据微服务划分需求分析得到。72.将各联通关系图和未拆分的各第一关系图作为第二关系图,根据各第二关系图,进行微服务的划分。其中,一个联通关系图作为一个第二关系图,一个第一关系图作为一个第二关系图。其中,将各联通关系图和未拆分的各第一关系图作为第二关系图即为将进行拆分后所形成的所有图的集合中的各个图作为第二关系图,未拆分的各第一关系图可理解为在生成后,未经过一次拆分的第一关系图,如图8中的关系图b和关系图c即为未拆分的各第一关系图,此处的各联通关系图可理解为凡是进行过一次拆分的,均可理解为联通关系图,如图8所示的关系图d、关系图f和关系图g。73.以图8所示举例而言,若预设微服务粒度为5,生成的第一关系图分别为关系图a、关系图b和关系图c,数量为3个,则在第一次拆分中,将数据表单的数量最多(在第一关系图中表现为顶点数量最多)的关系图a拆分为关系图d和关系图e(即所述联通关系图),在第二次拆分中,在关系图d、关系图e、关系图b和关系图c中,选择数据表单的数量最多的关系图e进行拆分,将关系图e拆分为关系图f和关系图g,则得到各关系图(包括联通关系图和第一关系图)为关系图d、关系图f、关系图g、关系图b和关系图c,数量为5,等于预设微服务粒度,则这些关系图即为第二关系图。74.在实际使用中,不同接口与不同数据表单之间、或不同数据表单与不同数据表单之间的关联紧密程度可能不同,如在实际使用中,若相应接口与相应数据表单交互较频繁,则关联较紧密,反之,若相应接口与相应数据表单交互较少,则关联较松散,若不考虑关联的紧密程度,则在拆分时,可能使关联较紧密的对象被拆分到不同第二关系图中,最终导致被划分到不同微服务或与相应微服务不对应的数据库中,为了解决此问题,本实施例还提供了一种优选的实施方式,即所述将一个第一关系图拆分为多个联通关系图,如图9所示,具体包括:75.在步骤401中,将第一数据表单的权重值、第二数据表单的权重值以及既关联于第一数据表单又关联于第二数据表单的接口的权重值进行加权求和,得到连接第一数据表单和第二数据表单的边的边权重值。76.举例而言,假设每一个接口的权重值为we,若相应数据表单被开发者标记为核心表单,则该核心表单的权重值为wt,wt≥we,否则,数据表单的权重值为0。则两个数据表单(如第一数据表单与第二数据表单)之间的连接的边的权重值w=we*n1+wt*n2,其中,n1为既关联于第一数据表单又关联于第二数据表单的接口的数量,即第一数据表单与第二数据表单所连接的边所对应的所有接口的数量,n2为这两个数据表单中被标记为核心表单的数量。需要说明的是,在此仅以一种较简单的形式举例而言,在实际使用中,各接口的权重值可能不同,各数据表单的权重值也可能不同,第一数据表单与第二数据表单之间的连接的边的权重值其中,wei为第一数据表单与第二数据表单之间的连接的边所对应的第i个接口的权重值,wt1为第一数据表单的权重值,wt2为第二数据表单的权重值。其中,每个接口的权重值由本领域技术人员根据接口与数据表单之间的交互需求分析得到,每个数据表单的权重值由本领域技术人员根据数据表单的使用需求分析得到。77.在步骤402中,根据第一关系图中所有边的边权重值,选择性地对第一关系图中的相应边进行拆分,以将第一关系图拆分为多个关系图,且所拆分的所有边的边权重值的和最小。78.所述选择性地对第一关系图中的相应边进行拆分可以是计算第一关系图的全局最小割,对全局最小割所对应的各边进行拆分,全局最小割的原理为将第一关系图中的一些边删除,使得原无向图被划分为两个联通分量,当被删除的边集的权重总和最小时,则该边集为该第一关系图的全局最小割。79.在本实施例中,第一关系图的顶点代表各数据表单,边表示各接口,找出该第一关系图的全局最小割就是找出能够将这些数据表单划分为两个数据库,使得数据库之间的进行的接口通信最少的边。根据“每个微服务对应一个数据库”的思想,即微服务中的绝大部分业务与数据应当直接从对应的数据库中获取,较少部分的数据可以通过微服务之间的通信获取数据表单的划分已基本确定了微服务的划分基础。计算第一关系图的全局最小割所使用的算法可以是stoer-wagner算法。80.在优选的实施方式中,每个接口的权重值还根据接口所关联的数据表单的数量确定,接口所关联的数据表单越多,权重值越高,接口所关联数据表单越少,权重值越低,从而使关联数据表单数量最多的接口所对应边由于边权重高,使在拆分时,优先保留这些边不进行拆分。81.被拆分的边所对应的接口可划分至任意一个拆分得到的第二关系图所对应的微服务中,还存在一种优选的实施方式,即所述根据各第二关系图,进行微服务的划分,具体包括:对应每个第二关系图,建立相应的微服务,将第二关系图中的所有未拆分边所对应接口划分到相应的微服务中;将已拆分边所对应接口划分到与该接口关联最密切的微服务中;其中,以第一接口所关联数据表单数量最多的第二关系图所对应的微服务作为与第一接口关联最密切的微服务;和/或,对应每个第二关系图,建立相应的数据库,将第二关系图中的所有数据表单划分到相应的数据库中。82.所述未拆分边为在进行第一关系图的拆分过程中未被拆分的边。所述已拆分边为在进行第一关系图的拆分过程中被拆分的边,所述已拆分边可代表在进行拆分后,与多个第二关系图中的数据表单具有关联关系的接口。其中,当一个接口既对应一条已拆分边又对应一条未拆分边时,将该接口按照已拆分边所对应接口进行处理,所述未拆分边可代表在进行拆分后,仅与一个第二关系图中的数据表单具有关联关系的接口。83.当第一关系图的数量大于预设微服务粒度时,所述根据第一关系图进行微服务的划分,具体包括:84.根据各第一关系图中数据表单的数量,对数据表单数量最少的两个第一关系图进行合并;其中,在一次合并中,将多个第一关系图合并为多个合并关系图,将所述合并关系图作为第一关系图参与下一次合并,直至合并得到合并关系图与未合并的第一关系图的数量总和等于预设微服务粒度。85.将各合并关系图和未合并的各第一关系图作为第二关系图,根据各第二关系图,进行微服务的划分。此处未合并的各第一关系图可理解为在生成后,未经过一次合并的第一关系图,此处的各合并关系图可理解为凡是进行过一次合并的,均可理解为合并关系图。在此需要说明的是,本实施例中对两个第一关系图进行合并并非代指将两个第一关系图之间通过边进行连接,而是将两个第一关系图作为一个整体进行看待。86.当第一关系图的数量大于预设微服务粒度时,由于不涉及边的拆分,故所述根据各第二关系图,进行微服务的划分,具体包括:87.对应每个第二关系图,建立相应的微服务,将第二关系图中的所有边所对应接口划分到相应的微服务中;和/或,对应每个第二关系图,建立相应的数据库,将第二关系图中的所有数据表单划分到相应的数据库中。88.当第一关系图的数量等于预设微服务粒度时,直接根据各第一关系图进行微服务和/或数据库的划分。89.在实际使用中,第一关系图的拆分和合并并非全然根据预设微服务粒度决定,在实际使用中,还可能出于各微服务之间或各数据库之间的资源平衡考虑,进行第一关系图的拆分或合并,相应拆分和合并过程与上述实施例中基于同一构思实现,在此不加以赘述。90.实施例2:91.本发明基于实施例1所描述的方法基础上,结合具体的应用场景,并借由相关场景下的技术表述来阐述本发明特性场景下的实现过程。92.本发明以根据开发者的api设计文档和数据表单设计文档进行微服务和数据库的划分场景举例而言,即开发者根据需求分析撰写标准的api设计文档,和数据表单设计文档。当开发者将这两件文档撰写完毕之后,设定期望的微服务粒度,并使用本发明所述的方法进行微服务的划分,如图10所示,具体包括:93.在步骤501中,开发者输入标准api设计文档与数据表单设计文档,并输入期望的微服务粒度k(k≥2)。其中,开发者输入的标准api设计文档需要符合一般软件开发的api设计文档撰写规范,即对每个接口都需包含:接口url(uniformresourcelocator,统一资源定位符)、接口说明、请求参数表、响应参数表。开发者输入的数据表单设计需要符合一般软件开发的数据表单的设计规范,可以是创建表单的sql(structuredquerylanguage,结构化查询语言)文件,也可以是包含该表单的字段名与数据类型的参数列表。94.在步骤502中,提取标准api设计文档中的每个接口的请求参数与响应参数,经过数据的转化、清洗、去重等操作之后,获得一个完整的请求响应参数列表,称其为“请求响应综合体”。在此需要说明的是,请求响应综合体在本质上可理解为接口,在后续实施例中,也将使用请求响应综合体作为接口的替代形式表现。95.在步骤503中,提取每个数据表单设计中的各个字段名,形成对应的参数列表,对于一些特殊的字段名,如:id等,添加“表名_”前缀。提示开发者可以标记出核心表单。96.在步骤504中,将每个请求响应综合体中的每个参数与所有提取的数据表单的参数进行参数匹配,构建请求响应综合体与数据表单的关联关系(可理解为实施例1中接口与数据表单之间的关联关系)。这种关联关系揭示了接口与接口之间、接口与数据表单之间、数据表单与数据表单之间所隐含的关系,是微服务划分的关键所在。97.在步骤505中,根据请求响应综合体与数据表单的关联关系,构建出对应的无向图集合,其中的每个无向图均可理解为实施例1中的第一关系图,标记出相对独立的数据表单,并根据开发者所期望的微服务粒度(即实施例1中的预设微服务粒度)对无向图集合中的元素进行划分,获得候选数据库的划分标准。98.在步骤506中,将在步骤505中标记的数据表单随机分配到无向图集合中顶点数量较低的元素中,获得最终的微服务划分标准。这些数据表单在业务上是相对独立的,不与其他数据库发生业务数据上的通信。当将这些数据表单分配完成之后,所有的数据表单都包含于无向图集合中的元素,各元素体现了数据表单的聚合关系,是微服务划分的基础。最终,各元素所包含的数据表单会各自构成数据库遍历各个元素,筛选出各元素中的数据表单,以及请求响应综合体所对应的接口,作为一个微服务划分。99.在步骤507中,根据获得的最终数据库划分标准,产生对应数量的临时数据库名,将临时数据库名与其相关的数据表单的表名存储于集合中。根据请求响应综合体与数据表单的关联关系,建立请求响应综合体所属接口与数据库的关联,并进一步划分各接口与数据库,输出最终的微服务划分标准。100.在所述步骤502中,所述提取标准api设计文档中的每个接口设计的请求参数与响应参数,经过数据的转化、清洗、去重等操作获取请求响应综合体,如图11所示,具体包括:101.在步骤601中,获取标准api设计文档。102.在步骤602中,提取所有接口设计的请求参数与响应参数。103.在步骤603中,分别将请求参数与响应参数中的对象、集合分解为单独的参数。需要说明的是,在接口设计中,部分请求参数或响应参数不可避免的会通过对象或集合来包装更多的信息,如:list《t》、map《k,v》等数据结构,标准的api设计文档会对数据结构中的对象、参数等进行列举说明。若开发者在撰写api设计文档的过程中存在疏漏,相关参数并未列举说明,则将其标记并提示开发者进行处理。104.在步骤604中,去除请求参数与响应参数中的公共参数以及与业务关联性较小的参数。举例而言,去除请求参数与响应参数中的公共参数以及与业务关联性较小的参数可以是code(编码)、desc(描述)、time(时间)、createtime(创建时间)和updatetime(更新时间)等参数,该类型的参数与实际的业务数据的关联小,是前后端信息交互过程中所设定的一般性标识与描述。105.在步骤605中,合并请求参数与响应参数,进行数据去重(即对同一接口中相同的请求参数和响应参数进行去重),得到请求响应综合体。106.在步骤606中,获得api设计文档中所有的请求响应综合体。107.在可选的实施方式中,在提取出所有数据表单的参数列表之后,还为开发者推送选定核心数据表单的提示,开发者可视需要进行选定或跳过,在一个系统或业务流程中,某些数据表单在数据查询、修改的频率上远超过其他数据表单,此类表单是核心业务的重要依托,对微服务划分具有重大的影响。108.在所述步骤504中,所述将每个请求响应综合体中的每个参数与所有提取的数据表单的参数(可理解为实施例1中的表单数据)进行参数匹配,构建请求响应综合体与数据表单的关联关系,如图12所示,具体包括:109.在步骤701中,将所有的请求响应综合体与转化后的数据表单参数,导入训练好的词向量模型,获得每个参数所对应的300维词向量。本发明实施例所训练的词向量模型为word2vec模型,该模型相比于bert的训练时间更少,并且在一般规范的api设计文档设计与数据表单设计中,请求响应参数、数据表单字段要求精炼且含义明确,综合考虑语义复杂度、训练时间以及实际的参数匹配的表现,word2vec模型能够更好地满足这些要求。110.在步骤702中,遍历所有的请求响应综合体,选取一个请求响应综合体。111.在步骤703中,遍历当前请求响应综合体的每个参数,选取一个请求响应综合体参数(即选取一个参数向量),初始化该参数的匹配列表,用于存放匹配成功的数据表单参数。112.在步骤704中,遍历数据表单的所有参数,与当前请求响应综合体的参数进行词向量相似度比较,即计算当前正在遍历的参数向量与当前正在遍历的数据向量之间的相似度;本发明实施例中,采用余弦相似度来衡量词向量的相似度,其公式为:其中,xi为参数向量的第i维数据,yi为数据向量的第i维数据。113.在步骤705中,判断当前数据表单的参数与当前请求响应综合体参数的相似度是否大于等于0.9(即实施例1中的预设相似度);若相似度大于等于0.9,则认为当前请求响应综合体参数与当前数据表单参数匹配,进入步骤706;否则跳转到707。114.在步骤706中,存储该数据表单参数到该请求响应综合体参数的匹配列表中。115.在步骤707中,判断数据表单参数是否遍历完毕。若已经遍历完毕,则跳转到步骤708,否则跳转到步骤704。116.在步骤708中,判断当前请求响应综合体的参数是否遍历完毕。若已经遍历完毕,则跳转到步骤709,否则跳转到703。117.在步骤709中,判断当前请求响应综合体是否为最后一个请求响应综合体。若当前请求响应综合体是最后一个请求响应综合体,则表示所有的请求响应综合体与数据表单之间的参数相似度比较完毕,直接跳转到步骤710,否则跳转到步骤702。118.在步骤710中,获得所有的请求响应综合体参数的匹配列表,筛选出匹配列表中元素个数为0或多个的列表,并提示开发者进行确认。在请求响应综合体与数据表单的参数匹配过程中,由于数据表单设计存在的冗余字段、一词多义等客观情况,匹配列表中元素个数为0或多个的列表的正确性是需要进一步确认的。对此,系统会将这些列表筛选出并提示开发者进行确认以及修改。119.在步骤711中,获得正确无误的所有的请求响应综合体参数的匹配列表,建立请求响应综合体与数据表单的关联关系。120.在所述步骤505中,所述根据请求响应综合体与数据表单的关联关系,构建出对应的无向图集合,具体包括:以数据表单作为顶点,以与多个数据表单相关联的接口作为所述多个数据表单之间用于两两连接的边,形成对应的无向图,从而构建得到所述无向图集合。无向图集合中的元素为无向图,每一个无向图的顶点表示数据表单,当一个请求响应综合体的所有参数的匹配列表中存在来自多个不同数据表单的参数时,这些数据表单对应于无向图中的顶点可以两两相连接,其边记作e,边e权重w由请求响应综合体的权重以及核心数据表的权重所共同决定,其权重计算规则如下所示:121.每个请求响应综合体为边e赋予的权重we相同。若数据表单被开发者标记为核心表单,则该核心表单也可以为边e赋予权重wt,其中wt≥we。122.若两个数据表单之间可以通过多个请求响应综合体构建关联,即其中每个请求响应综合体都与这两个数据表单形成关联,则两数据表单的边e的权重需要累加多个请求响应综合体的权重:w=we*n1+wt*n2。其中n1为上述请求响应综合体的数量,n2为当前两数据表单中被标记为核心表单的数量。123.需要说明的是,不是所有的数据表单都可以构建出无向图,存在部分接口只与一个数据表单进行数据通信,即存在独立的数据表单无法通过其关联的请求响应综合体与其他数据表单建立联系。将这些独立的数据表单筛选出来并单独存储。其余的数据表单所构建的无向图直接体现了这些表单的聚集性、关联性,按照“每个微服务对应一个单独的数据库”的思想,这些存在聚集关系的数据表单应当分配到一个数据库,与相关联的请求响应综合体对应的接口一起构成一个微服务。因此无向图可以作为候选的微服务划分标准,根据开发者所期望的微服务粒度k与无向图集合中元素数量β之间的关系,候选的微服务划分标准存在以下情况:124.若k=β(第一关系图的数量等于预设微服务粒度),则直接按当前无向图集合中的各元素作为划分标准,划分出的候选微服务粒度可以满足开发者所期望的微服务粒度。125.若k《β(第一关系图的数量大于预设微服务粒度),则将无向图集合中的元素以顶点的数量按从小到大的顺序进行排序,将第一与第二元素划分到一组,合并为一个元素。不断迭代,直到集合中元素的个数与开发者所期望的微服务粒度一致。最终以集合中的元素作为候选的微服务划分标准。126.若k》β(第一关系图的数量小于预设微服务粒度),则将无向图集合中的元素进行图的分割以增加集合中元素的数量,直到集合中元素的数量与开发者所期望的微服务粒度一致。127.综合考虑以上三种情况,在步骤506中,所述根据开发者所期望的微服务粒度对无向图集合中的元素进行划分,获得候选数据库的划分标准,如图13所示,包括步骤:128.在步骤801中,判断期望的微服务粒度β与无向图集合元素数量k是否相等,若相等则跳转到步骤802,否则跳转到步骤803。129.在步骤802中,输出当前无向图集合,其各元素为候选数据库划分标准。130.在步骤803中,将无向图集合中的元素,按照顶点数量从小到大进行排序。131.在步骤804中,判断期望的微服务粒度β是否大于无向图集合元素数量k,若符合条件则跳转到步骤805,否则跳转到步骤807。132.在步骤805中,提取出最后一个元素,计算该无向图的全局最小割,通过计算无向图的全局最小割使得无向图分割所损失的边集权重最小。133.在步骤806中,按照全局最小割,将该元素切割为两个新元素,即把第一关系图拆分为两个联通关系图,并更新原无向图集合,更新后的无向图集合包括未拆分的第一关系图和拆分得到的联通关系图。134.在步骤807中,将第一个元素与第二个元素合并为一个元素,即把两个第一关系图合并为多个合并关系图,并更新原无向图集合,更新后的无向图集合包括合并得到的合并关系图和未合并的第一关系图。135.其中,在本实施例中,无向图的顶点代表各数据表单,边表示各请求响应综合体,请求响应综合体进一步代表了接口。找出该无向图的全局最小割就是找出能够将这些数据表单划分为两个数据库,使得数据库之间的进行的接口通信最少。根据“每个微服务对应一个数据库”的思想,即微服务中的绝大部分业务与数据应当直接从对应的数据库中获取,较少部分的数据可以通过微服务之间的通信获取数据表单的划分已基本确定了微服务的划分基础。在本实施例中,使用stoer-wagner算法计算无向图的全局最小割,如图14所示,具体包括:136.在步骤901中,定义一个子集a属于初始无向图(即需要进行拆分的第一关系图),随机选取初始无向图的一个顶点tn放入子集a中,a视作为一个顶点。137.需要说明的是,子集a在无向图中视为一个顶点,与其相连的顶点为原本与该子集中的顶点相连接的其他顶点。同理,子集a与其相连顶点的边权重,为原本与该子集中的顶点相连接的其他顶点的边权重之和。138.在步骤902中,复制初始无向图,在新的无向图中进行计算。139.在步骤903中,从当前无向图的其余顶点中选取一个与子集a相连,并且边权重最大的顶点放入子集a中。140.在步骤904中,判断当前无向图中顶点个数是否等于3。若顶点个数等于3,则跳转到905,否则跳转到步骤903。141.在步骤905中,计算除子集a之外,其余的每个顶点各自相连的边集的最小权重和,记作当前最小割,并记录当前最小割、切割顶点及切割边集。142.在步骤906中,将除a之外的两个顶点合并为一个子集,视作为一个顶点,更新到初始无向图。143.在步骤907中,判断初始无向图中顶点个数是否小于3,若符合条件则跳转到步骤908,否则直接跳转步骤902。144.在步骤908中,停止迭代,从记录中筛选出最小的当前最小割,作为全局最小割,并筛选出其对应的切割边集与切割点集。145.在实际使用中,通过上述实施方式得到数据表单的聚合关系,能够进行数据库的划分之后,还需将各接口与数据库一一对应,才能构成完整的微服务,具体包括:在获得最终的无向图集合之后,依次提取该集合中各元素,根据集合元素的数量生成对应数量的临时数据库名,并将临时数据库名与所包含的数据表单的表名存储于第一集合。根据请求响应综合体与数据表单的关联关系,建立所有接口与数据表单的关联,将接口url与数据表单的表名存储于第二集合中。遍历第一集合与第二集合,建立所有接口与数据库的关联,将数据库的库名与所关联的接口url存储于第三集合中。遍历第三集合,筛选出与2个及以上的数据库相关联的接口url。这些接口url存在跨数据库的通信行为。对此,根据接口url与相关联的数据库中,实际与接口相关联的数据表单的数量进行划分,具体的:若在与接口url相关联的多个数据库中,实际与接口相关联的数据表单的最大数量相等时,该接口url可以随机分配到与之相关联的多个数据库中的一个数据库;若在与接口url相关联的多个数据库中,实际与接口相关联的数据表单的最大数量不相等时,则接口url可以分配到数据库中与接口相关联的数据表单的数量最多的数据库中去。146.下面将具体应用场景与本实施例中的关联步骤相结合,进行相对完整逻辑展示,具体包括:147.开发者需要根据需求分析,撰写标准的api文档,进行数据表单的设计。当开发者将这两件文档撰写完毕之后,便可以将其上传到承载本发明的软件系统中,并输入期望的微服务粒度。148.本实施例会分别解析开发者上传的标准api文档与数据表单设计的sql文件。本实施例会识别标准的api文档中的接口url以及该接口url所包含的请求参数与响应参数。首先将api文档中写明了包含其他参数的部分参数进行分解,例如:请求响应体中的devicelist会包含设备相关的参数,本实施例会将devicelist中的参数提取出来,将其与请求参数与响应参数一起进行数据的过滤。本实施例中数据过滤需要去除泛用参数,如:code、desc、createtime等等。随后会将过滤之后的数据进行去重,最终得到完整包含请求参数与响应参数的数据列表,后文将其称作“请求响应综合体”,并将接口url与请求响应综合体存储于一个键为接口url,值为请求响应综合体的集合中。最终,会获得包含标准api文档中所有接口url与其请求响应综合体的集合。同理,本实施例会对用户上传的数据表单sql(structuredquerylanguage,结构化查询语言)文件进行数据的过滤,形成键为表名,值为字段名列表的集合。最终,完成了数据的提取、过滤,将输入的文件转化为可被计算执行与存储的数据。在完成了数据表单sql文件的解析之后,本实施例会提示用户来选取核心数据表单,系统会赋予核心数据表单单独的权重,影响微服务的划分。149.本实施例在这些数据集合的基础上,会将每个集合的请求响应综合体或字段名列表中的元素,导入预先训练好的词向量模型之中,分别获得每个请求响应综合体中的属性以及字段名列表中的元素的300维词向量。将其存储到键为“接口url_请求响应综合体属性名”或“数据表单名_字段名”,值为对应300维词向量的集合中。150.在获得每个请求响应综合体中的参数以及数据表单的字段名所对应的300维的词向量之后,本实施例会将依次遍历每个请求响应综合体中的参数,将当前参数的词向量与所有数据表单的字段名的词向量进行相似度校验,当两者的词向量相似度大于等于0.9时,认为两者可以匹配。将匹配上的数据表单的字段名结合数据表单名存储到数据列表中,形成一个以当前请求响应综合体中当前参数为键,以当前请求响应综合体中当前参数所匹配的数据表单字段名的数据列表为值的集合。最终,遍历集合可以获取到每个请求响应综合体与数据表单的匹配关系,形成以请求响应综合体为键,数据表单列表为值的集合。遍历该集合,获取每个请求响应综合体所匹配的数据表单数量,对于请求响应综合体所匹配的数据表单数量为1的情况,本实施例认为该请求响应综合体与该数据表单匹配。由于数据库表单设计存在的冗余字段、一词多义等客观情况,当一个请求响应综合体所匹配的数据表单数量为0或多个时,匹配的正确性是需要进一步确认的。对此,系统会将这些请求响应综合体筛选出并提示开发者进行确认以及修改。151.经过上述步骤,获得所有的请求响应综合体参数与数据表单的匹配关系之后,可以发现部分的请求响应综合体所匹配的数据表单的数量是大于等于2个的。这表明该请求响应综合体所属的接口与多个数据表单存在数据通信。当一个接口与多个数据表单存在通信时,本实施例认为这多个数据表单通过这个接口,存在数据的交互,即这多个数据表单存在一定的相关性、聚集性。基于数据表单之间展现出的聚集性、相关性,可以将数据表单构建出一个无向图,该无向图的顶点为数据表单,连接顶点的边的权重由请求响应综合体的权重以及核心数据表的权重所共同决定。需要说明的是,顶点之间的边不是实际存在的,只是数学上用于说明与承载数据表单之间关联的一种方式。152.本实施例中,每个请求响应综合体为边所赋予的权重一致,每个核心数据表单为边所赋予的权重一致。通过遍历所有请求响应综合体与数据表单的匹配关系,可以获得所有数据表单之间的关联性,并建立无向图。最终,可以获取到一个无向图集合,其子元素就是一个个聚集的数据表单构成的无向图。不是所有的数据库表单都可以构建出无向图,存在部分接口只与一个数据库表单进行数据通信,即存在独立的数据库表单无法通过其关联的请求响应综合体与其他数据库表单建立联系。对此,本发明实施例中会将这些独立的数据库表单筛选出来并单独存储。153.上文所得到的无向图集合的元素,既是数据表单聚合为数据库的基础。根据“每一个微服务对应一个数据库”的思想,当获得了数据库的划分标准,那么在很大程度上,微服务的划分就已经确定了。154.这时,按照当前无向图集合的元素进行数据库的划分是最合理的划分方式,在此基础上所划分出的微服务是最理想的。开发者所输入微服务粒度是影响微服务划分的重要因素,因此本实施例根据用户所期望的微服务粒度与无向图集合中元素的数量进行对比,分为以下几种情况:155.若微服务粒度与无向图集合中元素的数量一致,则直接按当前无向图集合中的各元素作为数据库划分标准。156.若微服务粒度小于无向图集合中元素的数量,则将无向图集合中的元素以顶点的数量按从小到大的顺序进行排序,将第一与第二元素划分到一组,合并为一个元素。不断迭代,直到集合中元素的个数与开发者所期望的微服务粒度一致。最终以集合中的元素作为候选的微服务划分标准。157.若微服务粒度大于无向图集合中元素的数量,则将无向图集合中的元素进行图的分割以增加集合中元素的数量,直到集合中元素的数量与开发者所期望的微服务粒度一致。本实施例所采用的分割方法为求取该无向图的全局最小割,按照全局最小割将无向图划分为两个联通分量。158.在获得最终的无向图集合之后,依次提取该集合中各元素,根据集合元素的数量生成对应数量的临时数据库名,并将临时数据库名与所包含的数据表单的表名存储于第一集合。根据请求响应综合体与数据表单的关联,建立所有接口与数据表单的关联,将接口url与数据表单的表名存储于第二集合中。遍历第一集合与第二集合,建立所有接口与数据库的关联,将数据库的库名与所关联的接口url存储于第三集合中。遍历第三集合,筛选出与2个及以上的数据库相关联的接口url。这些接口url存在跨数据库的通信行为。对此,需要根据接口url与相关联的数据库中,实际与接口相关联的数据表单的数量进行划分。接口url与相关联的多个数据库中,实际与接口相关联的数据表单的最大数量相等时,该接口url可以随机分配到与之相关联的多个数据库中的一个数据库。接口url与相关联的多个数据库中,实际与接口相关联的数据表单的最大数量不相等时,则接口url可以分配到数据库中与接口相关联的数据表单的数量最多的数据库中去。159.完成了数据表单与接口url的聚合与划分之后,便完成了微服务的划分。最终,本实施例会为用户输出最理想的微服务划分标准以及满足用户所期望的微服务粒度的划分标准。160.实施例3:161.如图15所示,是本发明实施例的微服务划分装置的架构示意图。本实施例的微服务划分装置包括一个或多个处理器21以及存储器22。其中,图15中以一个处理器21为例。162.处理器21和存储器22可以通过总线或者其他方式连接,图15中以通过总线连接为例。163.存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例1中的微服务划分方法。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行微服务划分方法。164.存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。165.所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的微服务划分方法。166.值得说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。167.本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取存储器(ram,randomaccessmemory)、磁盘或光盘等。168.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
技术特征:
1.一种微服务划分方法,其特征在于,包括:根据接口的参数和数据表单中的数据,找到接口与数据表单之间的关联关系;根据接口与数据表单之间的关联关系,生成一个或多个第一关系图,以便于根据所述第一关系图进行微服务的划分;其中,在第一关系图中,以数据表单作为顶点,以与多个数据表单相关联的接口作为所述多个数据表单之间用于两两连接的边。2.根据权利要求1所述的微服务划分方法,其特征在于,所述根据接口的参数和数据表单中的数据,找到接口与数据表单之间的关联关系,具体包括:将接口的参数转换为相应的参数向量,将数据表单中数据的字段名转换为相应的数据向量;计算各参数向量与各数据向量之间的相似度;若至少一个第一参数向量与至少一个第一数据向量之间的相似度大于预设相似度,则第一接口与第一数据表单相关联;其中,所述第一参数向量是由第一接口的参数转换得到的参数向量,所述第一数据向量是由第一数据表单中数据的字段名转换得到的数据向量。3.根据权利要求1所述的微服务划分方法,其特征在于,当第一关系图的数量小于预设微服务粒度时,所述根据第一关系图进行微服务的划分,具体包括:根据各第一关系图中数据表单的数量,对数据表单数量最多的第一关系图进行拆分;其中,在一次拆分中,将一个第一关系图拆分为多个联通关系图,将所述多个联通关系图作为多个第一关系图参与下一次拆分,直至拆分得到联通关系图与未拆分的第一关系图的数量总和等于预设微服务粒度;将各联通关系图和未拆分的各第一关系图作为第二关系图,根据各第二关系图,进行微服务的划分。4.根据权利要求3所述的微服务划分方法,其特征在于,所述将一个第一关系图拆分为多个联通关系图,具体包括:将第一数据表单的权重值、第二数据表单的权重值以及既关联于第一数据表单又关联于第二数据表单的接口的权重值进行加权求和,得到连接第一数据表单和第二数据表单的边的边权重值;根据第一关系图中所有边的边权重值,选择性地对第一关系图中的相应边进行拆分,以将第一关系图拆分为多个关系图,且所拆分的所有边的边权重值的和最小。5.根据权利要求3所述的微服务划分方法,其特征在于,所述根据各第二关系图,进行微服务的划分,具体包括:对应每个第二关系图,建立相应的微服务,将第二关系图中的所有未拆分边所对应接口划分到相应的微服务中;将已拆分边所对应接口划分到与该接口关联最密切的微服务中;其中,以第一接口所关联数据表单数量最多的第二关系图所对应的微服务作为与第一接口关联最密切的微服务;和/或,对应每个第二关系图,建立相应的数据库,将第二关系图中的所有数据表单划分到相应的数据库中。6.根据权利要求1所述的微服务划分方法,其特征在于,当第一关系图的数量大于预设微服务粒度时,所述根据第一关系图进行微服务的划分,具体包括:
根据各第一关系图中数据表单的数量,对数据表单数量最少的两个第一关系图进行合并;其中,在一次合并中,将多个第一关系图合并为多个合并关系图,将所述合并关系图作为第一关系图参与下一次合并,直至合并得到合并关系图与未合并的第一关系图的数量总和等于预设微服务粒度;将各合并关系图和未合并的各第一关系图作为第二关系图,根据各第二关系图,进行微服务的划分。7.根据权利要求6所述的微服务划分方法,其特征在于,所述根据各第二关系图,进行微服务的划分,具体包括:对应每个第二关系图,建立相应的微服务,将第二关系图中的所有边所对应接口划分到相应的微服务中;和/或,对应每个第二关系图,建立相应的数据库,将第二关系图中的所有数据表单划分到相应的数据库中。8.根据权利要求1-7任一所述的微服务划分方法,其特征在于,所述接口通过请求响应综合体进行存储,所述请求响应综合体中存储接口的请求参数和接口的响应参数;所述请求响应综合体还存储有与接口相关联的数据表单,以表现接口与数据表单之间的关联关系。9.根据权利要求1-7任一所述的微服务划分方法,其特征在于,所述接口从api设计文档中读取得到,所述数据表单从数据表单设计文档中读取得到。10.一种微服务划分装置,其特征在于,所述装置包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行权利要求1-9任一所述的微服务划分方法。
技术总结
本发明涉及计算机技术领域,提供了一种微服务划分方法和装置。其中所述方法包括:根据接口的参数和数据表单中的数据,找到接口与数据表单之间的关联关系;根据接口与数据表单之间的关联关系,生成一个或多个第一关系图,以便于根据所述第一关系图进行微服务的划分;其中,在第一关系图中,以数据表单作为顶点,以与多个数据表单相关联的接口作为所述多个数据表单之间用于两两连接的边。本发明综合考虑接口与接口之间的关系、接口与数据表单之间的关系以及数据表单与数据表单之间的关系,从而进行微服务的划分,实现微服务和/或数据库的合理划分,使一个微服务所对应通信的数据库尽可能少,从而减少微服务之间的通信开销。从而减少微服务之间的通信开销。从而减少微服务之间的通信开销。
技术研发人员:王雪璁 夏冉 代强 姜壮
受保护的技术使用者:烽火通信科技股份有限公司
技术研发日:2023.07.05
技术公布日:2023/10/7
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
