CN107391142B - 一种应用拆分的方法及装置 - Google Patents

一种应用拆分的方法及装置 Download PDF

Info

Publication number
CN107391142B
CN107391142B CN201710618192.6A CN201710618192A CN107391142B CN 107391142 B CN107391142 B CN 107391142B CN 201710618192 A CN201710618192 A CN 201710618192A CN 107391142 B CN107391142 B CN 107391142B
Authority
CN
China
Prior art keywords
service
micro
application
input
splitting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710618192.6A
Other languages
English (en)
Other versions
CN107391142A (zh
Inventor
董爱强
刘泽三
夏元轶
刘迪
张治志
冯扬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
State Grid Corp of China SGCC
State Grid Information and Telecommunication Co Ltd
Beijing China Power Information Technology Co Ltd
Information and Telecommunication Branch of State Grid Jiangsu Electric Power Co Ltd
Original Assignee
State Grid Corp of China SGCC
State Grid Information and Telecommunication Co Ltd
Beijing China Power Information Technology Co Ltd
Information and Telecommunication Branch of State Grid Jiangsu Electric Power Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by State Grid Corp of China SGCC, State Grid Information and Telecommunication Co Ltd, Beijing China Power Information Technology Co Ltd, Information and Telecommunication Branch of State Grid Jiangsu Electric Power Co Ltd filed Critical State Grid Corp of China SGCC
Priority to CN201710618192.6A priority Critical patent/CN107391142B/zh
Publication of CN107391142A publication Critical patent/CN107391142A/zh
Application granted granted Critical
Publication of CN107391142B publication Critical patent/CN107391142B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供一种应用拆分的方法及装置,根据业务名称,利用应用解耦和数据解耦方式拆分应用,每个业务名称对应的业务包括能够完成此项业务的所有功能,因此将一项业务包括的所有功能单元以组合的形式,从单体式应用中拆分出来,生成与各个业务对应的微服务。相较于根据最小功能单元将应用拆分成能够实现最小服务功能的微服务,在接收到服务请求以提供服务功能时,即需要完成某项业务时,可以直接调用与此业务对应的微服务,而不需要与最小服务功能单元分别对应的微服务之间交互后,才能实现此业务。解决了现有技术中拆分粒度过细,导致接收到服务请求而完成一项业务时需要多个微服务之间交互,进而导致响应服务请求时间较长的问题。

Description

一种应用拆分的方法及装置
技术领域
本发明属于微应用技术领域,尤其涉及一种应用拆分的方法及装置。
背景技术
单体式应用将所有功能模块都集中在应用内部。为了满足用户新的需求,需要在单体式应用中添加能够满足用户需求的新的功能模块,使得单体式应用越来越复杂,导致后续开发以及维护单体式应用的工作量大。
为了解决单体式应用开发以及维护工作量大的问题,现有技术采用将单体式应用拆分成多个微服务,每个微服务实现一个服务功能,通过多个微服务之间的交互完成单体式应用所提供的功能。为了满足用户新的需求,只需要独立开发能够满足用户需求的微服务并建立此微服务与其他微服务之间的交互。由于不需要在原有单体式应用上不断增加新的功能模块,因此避免了单体式应用开发以及维护工作量大的问题产生。
但是,由于拆分单体式应用是按照能够实现最小功能的模块拆分的,因此拆分后的每个微服务都是用于实现最小功能的模块。由于单体式应用所实现的完整功能比较复杂,为了实现一个功能可能需要多次与一个或不同的微服务交互。例如,将工程初步设计评审管理设计为一个单体式应用,此单体式应用包括申请初步设计评审、制定初步设计评审计划、组织初设内审、提交初设文件、组织初设预审、初步设计评审、提交评审意见以及初步设计批复这几项服务功能,每项服务功能又进一步包括最小功能单元,以申请初步设计评审这一服务功能为例,其包括项目信息、工程核准文件以及可研批复文件查询这三个最小功能单元。按照现有技术对工程初步设计评审管理进行拆分,即将每项服务功能包括的最小功能单元均拆分成一个微服务,将得到项目信息微服务、工程核准文件微服务、可研批复文件查询微服务等,并将单体式应用对应的数据库拆分成与每个微服务分别对应一个数据库。
然而,当接收到服务请求以提供申请初步设计评审这一功能时,需要项目信息微服务、工程核准文件微服务、可研批复文件查询微服务这三个微服务之间进行交互,才能实现申请初步设计评审的功能。因此,现有技术中根据最小功能单元对应用进行拆分,导致拆分粒度过细,在接收到服务请求以提供服务功能时,微服务之间的交互次数较多,进而存在响应服务请求的时间较长的问题。
发明内容
有鉴于此,本发明的目的在于提供一种应用拆分的方法及装置,用于解决现有技术中根据最小功能单元对应用进行拆分,导致拆分粒度过细,在接收到服务请求以提供服务功能时,微服务之间的交互次数较多,进而存在响应服务请求的时间较长的问题。
技术方案如下:
本发明提供一种应用拆分的方法,包括:
确定业务名称;
根据所述业务名称,利用应用解耦方式拆分应用得到至少一个与所述业务名称对应的微服务;
根据所述微服务,利用数据解耦方式拆分与所述应用对应的数据库,得到与所述微服务对应的数据库;其中,所述数据库用于存储实现所述微服务的服务功能的数据。
优选地,所述根据所述业务名称,利用应用解耦方式拆分应用得到至少一个与所述业务名称对应的微服务包括:
根据所述业务名称,从预置的业务架构表中获取与所述业务名称对应的所有业务活动;
根据每个所述业务活动,从应用中拆分出分别实现每个所述业务活动对应的服务功能的功能单元;
在每个所述功能单元上分别设置接口,得到与每个所述业务活动分别对应的微服务。
优选地,所述根据每个所述业务活动,从应用中拆分出分别实现每个所述业务活动对应的服务功能的功能单元包括:
根据每个所述业务活动,从所述业务架构表中获取与每个所述业务活动对应的输入服务;
根据输入服务,从所述业务架构表中分别获取与每个所述输入服务对应的输入服务类型;
根据每个所述输入服务对应的输入服务类型,分别判断每个所述输入服务是否是共享服务;
判断所述输入服务是共享服务,则从应用中拆分出与所述共享服务对应的功能单元,得到共享功能单元;
判断所述输入服务不是共享服务,则从应用中拆分出不是所述共享服务的输入服务对应的功能单元,得到与所述业务活动对应的服务功能的功能单元。
优选地,所述根据所述微服务,利用数据解耦方式拆分与所述应用对应的数据库,得到与所述微服务对应的数据库包括:
根据每个所述微服务,从业务架构表中获取与每个所述微服务对应的输入数据对象;
根据每个所述微服务的输入数据对象,从与所述应用对应的数据库中查找与每个所述微服务的输入数据对象对应的数据表;
从与所述应用对应的数据库中拆分出所述数据表,生成与所述微服务对应的数据库。
优选地,所述根据所述业务名称,利用应用解耦方式拆分应用得到至少一个与所述业务名称对应的微服务之后,还包括:
获取与所述业务名称对应的所有业务活动分别对应的微服务;
组件化所述与所述业务名称对应的所有业务活动分别对应的微服务,得到与所述业务名称对应的微应用。
本发明还提供一种应用拆分的装置,包括:
确定单元,用于确定业务名称;
应用解耦单元,用于根据所述业务名称,利用应用解耦方式拆分应用得到至少一个与所述业务名称对应的微服务;
数据解耦单元,用于根据所述微服务,利用数据解耦方式拆分与所述应用对应的数据库,得到与所述微服务对应的数据库;其中,所述数据库用于存储实现所述微服务的服务功能的数据。
优选地,所述应用解耦单元包括:
第一获取单元,用于根据所述业务名称,从预置的业务架构表中获取与所述业务名称对应的所有业务活动;
第一拆分单元,用于根据每个所述业务活动,从应用中拆分出分别实现每个所述业务活动对应的服务功能的功能单元;
设置单元,用于在每个所述功能单元上分别设置接口,得到与每个所述业务活动分别对应的微服务。
优选地,所述第一拆分单元包括:
第一获取子单元,用于根据每个所述业务活动,从所述业务架构表中获取与每个所述业务活动对应的输入服务;
第二获取子单元,用于根据输入服务,从所述业务架构表中分别获取与每个所述输入服务对应的输入服务类型;
判断子单元,用于根据每个所述输入服务对应的输入服务类型,分别判断每个所述输入服务是否是共享服务;
第一拆分子单元,用于在所述判断子单元判断所述输入服务是共享服务时,从应用中拆分出与所述共享服务对应的功能单元,得到共享功能单元;
第二拆分子单元,用于在所述判断子单元判断所述输入服务不是共享服务,则从应用中拆分出不是所述共享服务的输入服务对应的功能单元,得到与所述业务活动对应的服务功能的功能单元。
优选地,所述数据解耦单元包括:
第二获取单元,用于根据每个所述微服务,从业务架构表中获取与每个所述微服务对应的输入数据对象;
查找单元,用于根据每个所述微服务的输入数据对象,从与所述应用对应的数据库中查找与每个所述微服务的输入数据对象对应的数据表;
第二拆分单元,用于从与所述应用对应的数据库中拆分出所述数据表,生成与所述微服务对应的数据库。
优选地,还包括:
第三获取单元,用于获取与所述业务名称对应的所有业务活动分别对应的微服务;
组件化单元,用于组件化所述与所述业务名称对应的所有业务活动分别对应的微服务,得到与所述业务名称对应的微应用。
本发明还提供一种计算机程序产品,当所述计算机程序产品被执行时,用于执行根据应用拆分的方法中的任一种方法的指令。
与现有技术相比,本发明提供的上述技术方案具有如下优点:
从上述技术方案可知,本申请中根据业务名称,利用应用解耦和数据解耦方式拆分应用,每个业务名称对应的业务包括能够完成此项业务的所有功能,因此将一项业务包括的所有功能单元以组合的形式,从单体式应用中拆分出来,生成与各个业务对应的微服务。相较于根据最小功能单元将应用拆分成能够实现最小服务功能的微服务,在接收到服务请求以提供服务功能时,即需要完成某项业务时,可以直接调用与此业务对应的微服务,而不需要与最小服务功能单元分别对应的微服务之间交互后,才能实现此业务。解决了现有技术中拆分粒度过细,导致接收到服务请求而完成一项业务时需要多个微服务之间交互,进而导致响应服务请求时间较长的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种应用拆分的方法的流程图;
图2是本发明实施例提供的另一种应用拆分的方法的流程图;
图3是本发明实施例提供的一种应用拆分的装置的结构示意图;
图4是本发明实施例提供的另一种应用拆分的装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明公开了一种应用拆分的方法,参见图1,该实施例包括以下步骤:
S101、确定业务名称;
业务人员从业务架构角度,根据系统所提供的业务对系统进行分解,生成业务架构表。
业务架构表包括:业务名称,业务活动,业务活动编号,业务活动微服务名称,业务活动微服务分类,输入数据对象,输入来源业务域,输入来源类型,输入服务,输入服务类型,输出数据对象等内容。
其中,业务名称为业务流程的名称,例如:工程初步设计评审管理流程;
业务活动为业务流程的最小单元,通过拆分业务流程节点而得到,例如:工程初步设计评审管理这一流程包括申请初步设计评审、制定初步设计评审计划、组织初设内审、提交初设文件、组织初设预审、初步设计评审、提交评审意见以及初步设计批复这几个业务活动;
业务活动编号用于唯一标识业务活动,例如:JS-108-01,JS-108-02,JS-108-03,JS-108-04,JS-108-05,JS-108-06,JS-108-07,JS-108-08;
业务活动微服务名称为与每个业务活动对应的微服务的名称,每个微服务中包含本业务活动中所需的增、删、改、查等功能;例如:申请初步设计评审微服务、制定初步设计评审计划微服务、组织初设内审微服务、提交初设文件微服务、组织初设预审微服务、初步设计评审微服务、提交评审意见微服务以及初步设计批复微服务;
业务活动微服务分类包括企业核心资源、业务处理、统计查询和决策分析,例如:与申请初步设计评审微服务这一业务活动对应的业务活动微服务分类为业务处理;
输入数据对象为执行业务活动需调用的数据和信息,例如:与业务活动申请初步设计评审对应的输入数据对象为项目信息、工程核准文件以及可研批复文件;与制定初步设计评审计划这一业务活动对应的输入数据对象为初步设计评审申请;
输入来源业务域用于标识业务活动的输入数据对象来自哪个业务域,例如:与申请初步设计评审这一业务活动对应的输入来源业务域为规划计划业务;与制定初步设计评审计划这一业务活动对应的输入来源业务域为电网建设业务;
输入来源类型用于标识输入数据对象是来自本业务域、跨业务域还是来自多业务域组合,例如:与申请初步设计评审这一业务活动对应的输入来源类型为跨业务域获取;与制定初步设计评审计划这一业务活动对应的输入来源类型为业务域内部获取;
输入服务与每个业务活动的输入数据对象一一对应,输入服务包含输入数据对象所需调用的功能和信息;例如:与申请初步设计评审这一业务活动对应的输入服务为项目信息服务、工程核准文件服务以及可研批复文件服务;与制定初步设计评审计划这一业务活动对应的输入服务为初步设计评审申请查询服务;
输入服务类型与业务活动微服务分类相同,例如:与项目信息服务对应的输入服务类型为企业资源;与工程核准文件服务对应的输入服务类型为业务处理;
输出数据对象为执行业务活动后输出的信息,例如:与申请初步设计评审这一业务活动对应的输出数据对象为初步设计评审申请;与制定初步设计评审计划这一业务活动对应的输出数据对象为初步设计评审计划。
从业务架构表中业务名称这一内容处确定业务名称。
S102、根据所述业务名称,利用应用解耦方式拆分应用得到至少一个与所述业务名称对应的微服务;
确定业务名称后,利用应用解耦方式拆分应用得到与所述业务名称对应的微服务。其中,不同的业务名称拆分出的微服务的数量是不同的。无论拆分出多少微服务,拆分出的每个微服务分别与业务名称对应。
本实施例中,应用为单体式应用。
S103、根据所述微服务,利用数据解耦方式拆分与所述应用对应的数据库,得到与所述微服务对应的数据库;其中,所述数据库用于存储实现所述微服务的服务功能的数据。
在应用层面利用应用解耦方式将单体式应用拆分成多个不同的微服务后,为了保证每个微服务可以实现自身所要求提供的服务功能,需要进一步保证每个微服务可以调用实现服务功能所需的数据和信息。在此基础上,需要将单体式应用对应的一个数据库,根据微服务所需要实现的服务功能,通过数据解耦方式拆分成与每个微服务一一对应的数据库。
从上述技术方案可知,本实施例中根据业务名称,利用应用解耦和数据解耦方式拆分应用,每个业务名称对应的业务包括能够完成此项业务的所有功能,因此将一项业务包括的所有功能单元以组合的形式,从单体式应用中拆分出来,生成与各个业务对应的微服务。相较于根据最小功能单元将应用拆分成能够实现最小服务功能的微服务,本实施例拆分后的微服务粒度大,在接收到服务请求以提供服务功能时,即需要完成某项业务时,可以直接调用与此业务对应的微服务,而不需要与最小服务功能单元分别对应的微服务之间交互后,才能实现此业务。解决了现有技术中拆分粒度过细,导致接收到服务请求而完成一项业务时需要多个微服务之间交互,进而导致响应服务请求时间较长的问题。
本发明公开了另一种应用拆分的方法,参见图2,该实施例包括以下步骤:
S201、确定业务名称;
本实施例中S201的实现方式与上一实施例中S101的实现方式相同,此处不在赘述。
S202、根据所述业务名称,从预置的业务架构表中获取与所述业务名称对应的所有业务活动;
与业务名称对应的业务包括流程类业务和非流程类业务,流程类业务指的是通过多个流程节点顺序执行才能完成的业务,非流程类业务指的是不需要通过多个流程节点顺序执行就能完成的业务。
在执行此步骤之前,还可以包括:判断所述业务名称对应的业务是否为流程类业务。
业务人员在根据系统所提供的业务对系统进行分解以生成业务架构表后,根据业务是否可以进一步被拆分成多个流程节点,确定业务是否是流程类业务。在确定业务是否流程类业务后,生成业务架构表时可以为不同类型的业务设置不同的标识,以便于后续根据业务架构表判断与业务名称对应的业务是否是流程类业务。
只有在判断所述业务名称对应的业务为流程类业务时,才存在多个流程节点,进而才存在与每个流程节点一一对应的业务活动,因此只有在判断所述业务名称对应的业务为流程类业务时,才执行根据所述业务名称,从预置的业务架构表中获取与所述业务名称对应的所有业务活动的这一步骤。
通过业务架构表,获取与同一业务名称对应的所有业务活动。
以业务名称为工程初步设计评审管理流程的这一业务为例进行说明,工程初步设计评审管理流程包括申请初步设计评审、制定初步设计评审计划、组织初设内审、提交初设文件、组织初设预审、初步设计评审、提交评审意见以及初步设计批复这几个业务活动。
而在判断所述业务名称对应的业务为非流程类业务时,直接从应用中将实现此业务的功能单元拆分出来,生成与此业务对应的微服务。
S203、根据每个所述业务活动,从应用中拆分出分别实现每个所述业务活动对应的服务功能的功能单元;
具体实现方式为:
A、根据每个所述业务活动,从所述业务架构表中获取与每个所述业务活动对应的输入服务;
以申请初步设计评审这一业务活动为例,从业务架构表中获取到与申请初步设计评审这一业务活动对应的输入服务为:项目信息、工程核准文件以及可研批复文件;
依次获取与业务名称对应的所有业务活动分别对应的输入服务。
B、根据输入服务,从所述业务架构表中分别获取与每个所述输入服务对应的输入服务类型;
从业务架构表中获取与项目信息输入服务对应的输入服务类型为企业资源;与工程核准文件输入服务对应的输入服务类型为业务处理;与可研批复文件输入服务对应的输入服务类型为业务处理。
C、根据每个所述输入服务对应的输入服务类型,分别判断每个所述输入服务是否是共享服务;
判断所述输入服务是共享服务,则执行D;
判断所述输入服务不是共享服务,则执行E;
输入服务类型为企业资源,则判断与此输入服务类型对应的输入服务是共享服务;即项目信息输入服务是共享服务;
输入服务类型为业务处理,则判断与此输入服务类型对应的输入服务不是共享服务;即工程核准文件输入服务和可研批复文件输入服务都不是共享服务。
D、从应用中拆分出与所述共享服务对应的功能单元,得到共享功能单元;
项目信息输入服务包括项目信息增加、删除、修改以及查询服务;工程核准文件输入服务包括工程核准文件上传、下载以及查询服务;可研批复文件输入服务包括可研批复文件查询服务。
根据与所述共享服务所能够提供的功能,从应用中拆分出与所述共享服务对应的功能单元,即将项目信息的增加、删除、修改以及查询的功能单元从应用中拆分出来,得到共享功能单元。
E、从应用中拆分出不是所述共享服务的输入服务对应的功能单元,得到与所述业务活动对应的服务功能的功能单元;
根据与不是所述共享服务所能够提供的功能,从应用中拆分出与不是所述共享服务对应的功能单元,即将工程核准文件上传、下载以及查询、可研批复文件查询服务对应的功能单元,从应用中拆分出来,得到与所述业务活动对应的服务功能的功能单元。
本实施例中,针对一个业务活动而言,将与所述业务活动对应的所有功能单元拆分成两部分,一部分是用于共享的共享功能单元,另一部分是不用于共享的功能单元。
S204、在每个所述功能单元上分别设置接口,得到与每个所述业务活动分别对应的微服务;
其中,所述功能单元包括共享功能单元和与所述业务活动对应的服务功能的功能单元;
设置的接口包括服务访问请求接口以及数据访问接口,其中,服务访问请求接口是微服务与路由组件之间的交互接口,用于接收路由组件分发的服务请求,数据访问接口是微服务之间的交互接口,用于发送数据访问请求以及接收响应数据访问请求后的数据。
具体地,本实施例中接口为RestFul接口,微服务之间通过RestFul接口实现交互的方式是基于HTTP协议进行JSON格式的数据交互。
在所述共享功能单元上设置接口,得到共享微服务;
在与所述业务活动对应的服务功能的功能单元上设置接口,得到与所述业务活动对应的微服务。
由于共享功能单元所提供的服务功能是企业资源类服务,在执行不同的业务时,可能都需要访问由所述共享功能单元生成的共享微服务,因此将其单独拆分出来,而并不将其作为某一特定业务活动对应的微服务,使得各个业务活动共享所述共享微服务。
S205、根据每个所述微服务,从业务架构表中获取与每个所述微服务对应的输入数据对象;其中,所述微服务包括所述共享微服务和与所述业务活动对应的微服务。
每个微服务需要访问支持服务功能的数据才能提供自身的服务功能。
由于微服务是由输入服务分别对应的功能单元构成的,因此先获取与每个所述微服务对应的输入服务,再从业务架构表中获取与每个输入服务分别对应的输入数据对象。
S206、根据每个所述微服务的输入数据对象,从与所述应用对应的数据库中查找与每个所述微服务的输入数据对象对应的数据表;
数据库是由数据表组成的,数据表与输入数据对象相对应。S207、从与所述应用对应的数据库中拆分出所述数据表,生成与所述微服务对应的数据库。一个微服务可能对应多个输入数据对象,每个输入数据对象分别对应数据表,从数据库中拆分出与一个微服务对应的所有输入数据对象对应的数据表后,将所有的数据表组合起来,生成与所述微服务对应的数据库。
拆分方式为垂直切分,拆分的原则是从数据库中将与各个业务对应的数据表拆分出来后,由业务紧密即数据表之间关联密切的多个数据表组成一个数据库。
在数据拆分时,可以结合数据库ER图或业务领域模型图,仿照活动图中的泳道概念,一个泳道代表一个节点,把数据表划分到不同的泳道中。
根据实现业务的流程可以获知每个业务功能之间的关联,例如,订单明细与订单、条目关联,订单与账单关联,账单与属性关联,条目与产品、存货、供应商关联,产品又与分类关联。在拆分之前所有的业务分别对应的数据表均存储在一个数据库中。
拆分时,根据输入数据对象提取数据表,并由业务紧密即数据表之间关联密切的多个数据表组成一个新的数据库。
例如将一个数据库拆分成4个数据库,其中,账单与属性对应的数据表组成数据库1,订单、订单状态以及订单明细对应的数据表组成数据库2,条目、供应商以及存货对应的数据表组成数据库3,产品和产品分类对应的数据表组成数据库4。
当所述微服务为共享微服务时,从与应用对应的数据库中拆分出数据表,生成与共享微服务对应的数据库后,可以将其存储到共享位置处。不仅便于业务内部的其他微服务访问共享微服务时,调取与此共享微服务对应的数据库,而且当跨业务访问微服务时,避免了一个业务的微服务需要从另一个业务对应的数据库中获取数据,进而避免了跨数据库访问数据导致的交互时间长的问题产生。
当所述微服务为与所述业务活动对应的微服务时,从与应用对应的数据库中拆分出数据表,生成与所述业务活动对应的微服务对应的数据后,将其存储到与业务名称对应的存储位置处。使得在提供特定的业务功能时,可以从相同的存储位置处获取数据,相较于从多个存储位置处分别获取实现不同服务功能的方案,节省了获取数据的时间。
在本实施例中,只有与业务活动对应的微服务的数据库,才存储到与业务名称对应的存储位置,而共享微服务的数据库存储到共享位置。
S208、获取与所述业务名称对应的所有业务活动分别对应的微服务;
由于在拆分与所述业务活动对应的服务功能的功能单元以生成与所述业务活动对应的微服务时,已经利用所述业务活动对应的服务功能中的共享服务对应的功能单元生成共享微服务。因此,业务活动对应的微服务中并不包括共享微服务,而只包括由不是共享服务的功能单元生成的微服务。
S209、组件化所述与所述业务名称对应的所有业务活动分别对应的微服务,得到与所述业务名称对应的微应用。
组件化具体指的是OSGI组件化,OSGI组件化包括前端组件化和后端组件化,前端组件化指的是客户端与服务端的组件化,在本实施例中客户端基于MXFramework构建,服务端基于Java构建,建立不同客户端与服务端之间的通信,其中通信协议可以为Rest、Http、MQ或SOAP协议。后端组件化指的是微服务之间的组件化,建立微服务之间的通信。
经过组件化后,得到与每个业务名称分别对应的微应用。微应用通过调用一个或多个微服务完成特定的服务功能。
从上述技术方案可知,本实施例中通过输入服务类型判断与业务活动对应的输入服务中是否存在共享服务,当判断存在共享服务时,将实现共享服务的功能单元单独拆分出来,生成共享微服务,并将共享微服务对应的数据库存储在共享位置。避免了当跨业务访问微服务时,一个业务的微服务需要从另一个业务对应的数据库中获取数据,导致的跨数据库访问数据交互时间长的问题产生,进一步减小了微服务之间的交互时间。
对应上述应用拆分的方法,本发明还提供了一种应用拆分的装置,所述装置的结构示意图请参阅图3所示,本实施例中装置包括:
确定单元301、应用解耦单元302和数据解耦单元303。
确定单元301,用于确定业务名称;
应用解耦单元302,用于根据所述业务名称,利用应用解耦方式拆分应用得到至少一个与所述业务名称对应的微服务;
数据解耦单元303,用于根据所述微服务,利用数据解耦方式拆分与所述应用对应的数据库,得到与所述微服务对应的数据库;其中,所述数据库用于存储实现所述微服务的服务功能的数据。
从上述技术方案可知,本实施例中根据业务名称,利用应用解耦单元和数据解耦单元拆分应用,每个业务名称对应的业务包括能够完成此项业务的所有功能,因此将一项业务包括的所有功能单元以组合的形式,从单体式应用中拆分出来,生成与各个业务对应的微服务。相较于根据最小功能单元将应用拆分成能够实现最小服务功能的微服务,本实施例拆分后的微服务粒度大,在接收到服务请求以提供服务功能时,即需要完成某项业务时,可以直接调用与此业务对应的微服务,而不需要与最小服务功能单元分别对应的微服务之间交互后,才能实现此业务。解决了现有技术中拆分粒度过细,导致接收到服务请求而完成一项业务时需要多个微服务之间交互,进而导致响应服务请求时间较长的问题。
本发明还提供了另一种应用拆分的装置,所述装置的结构示意图请参阅图4所示,本实施例中应用解耦单元302包括:
第一获取单元401、第一拆分单元402和设置单元403;
数据解耦单元303包括:
第二获取单元404、查找单元405、第二拆分单元406;
本实施例中所述装置还包括:
第三获取单元407和组件化单元408。
第一获取单元401,用于根据所述业务名称,从预置的业务架构表中获取与所述业务名称对应的所有业务活动;
第一拆分单元402,用于根据每个所述业务活动,从应用中拆分出分别实现每个所述业务活动对应的服务功能的功能单元;
设置单元403,用于在每个所述功能单元上分别设置接口,得到与每个所述业务活动分别对应的微服务。
可选地,第一拆分单元402包括:
第一获取子单元、第二获取子单元、判断子单元、第一拆分子单元和第二拆分子单元;
所述第一获取子单元,用于根据每个所述业务活动,从所述业务架构表中获取与每个所述业务活动对应的输入服务;
所述第二获取子单元,用于根据输入服务,从所述业务架构表中分别获取与每个所述输入服务对应的输入服务类型;
所述判断子单元,用于根据每个所述输入服务对应的输入服务类型,分别判断每个所述输入服务是否是共享服务;
所述第一拆分子单元,用于在所述判断子单元判断所述输入服务是共享服务时,从应用中拆分出与所述共享服务对应的功能单元,生成共享功能单元;
所述第二拆分子单元,用于在所述判断子单元判断所述输入服务不是共享服务,则从应用中拆分出不是所述共享服务的输入服务对应的功能单元,生成与所述业务活动对应的服务功能的功能单元。
第二获取单元404,用于根据每个所述微服务,从业务架构表中获取与每个所述微服务对应的输入数据对象;
查找单元405,用于根据每个所述微服务的输入数据对象,从与所述应用对应的数据库中查找与每个所述微服务的输入数据对象对应的数据表;
第二拆分单元406,用于从与所述应用对应的数据库中拆分出所述数据表,生成与所述微服务对应的数据库。
第三获取单元407,用于获取与所述业务名称对应的所有业务活动分别对应的微服务;
组件化单元408,用于组件化所述与所述业务名称对应的所有业务活动分别对应的微服务,得到与所述业务名称对应的微应用。
从上述技术方案可知,本实施例中通过输入服务类型判断与业务活动对应的输入服务中是否存在共享服务,当判断存在共享服务时,将实现共享服务的功能单元单独拆分出来,生成共享微服务,并将共享微服务对应的数据库存储在共享位置。避免了当跨业务访问微服务时,一个业务的微服务需要从另一个业务对应的数据库中获取数据,导致的跨数据库访问数据交互时间长的问题产生,进一步减小了微服务之间的交互时间。
对应上述应用拆分的方法,本发明还提供了一种计算机程序产品,当所述计算机程序产品被执行时,用于执行根据图2所示的方法的指令。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的装置而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
为了描述的方便,以上所述装置的各部分以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各模块或单元的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

Claims (7)

1.一种应用拆分的方法,其特征在于,包括:
确定业务名称;
根据所述业务名称,利用应用解耦方式拆分应用得到至少一个与所述业务名称对应的微服务;
根据所述微服务,利用数据解耦方式拆分与所述应用对应的数据库,得到与所述微服务对应的数据库;其中,所述数据库用于存储实现所述微服务的服务功能的数据;
所述根据所述业务名称,利用应用解耦方式拆分应用得到至少一个与所述业务名称对应的微服务包括:
根据所述业务名称,从预置的业务架构表中获取与所述业务名称对应的所有业务活动;
根据每个所述业务活动,从应用中拆分出分别实现每个所述业务活动对应的服务功能的功能单元;
在每个所述功能单元上分别设置接口,得到与每个所述业务活动分别对应的微服务;
所述根据每个所述业务活动,从应用中拆分出分别实现每个所述业务活动对应的服务功能的功能单元包括:
根据每个所述业务活动,从所述业务架构表中获取与每个所述业务活动对应的输入服务;
根据输入服务,从所述业务架构表中分别获取与每个所述输入服务对应的输入服务类型;
根据每个所述输入服务对应的输入服务类型,分别判断每个所述输入服务是否是共享服务;
判断所述输入服务是共享服务,则从应用中拆分出与所述共享服务对应的功能单元,得到共享功能单元;
判断所述输入服务不是共享服务,则从应用中拆分出不是所述共享服务的输入服务对应的功能单元,得到与所述业务活动对应的服务功能的功能单元。
2.根据权利要求1所述的方法,其特征在于,所述根据所述微服务,利用数据解耦方式拆分与所述应用对应的数据库,得到与所述微服务对应的数据库包括:
根据每个所述微服务,从业务架构表中获取与每个所述微服务对应的输入数据对象;
根据每个所述微服务的输入数据对象,从与所述应用对应的数据库中查找与每个所述微服务的输入数据对象对应的数据表;
从与所述应用对应的数据库中拆分出所述数据表,生成与所述微服务对应的数据库。
3.根据权利要求1所述的方法,其特征在于,所述根据所述业务名称,利用应用解耦方式拆分应用得到至少一个与所述业务名称对应的微服务之后,还包括:
获取与所述业务名称对应的所有业务活动分别对应的微服务;
组件化所述与所述业务名称对应的所有业务活动分别对应的微服务,得到与所述业务名称对应的微应用。
4.一种应用拆分的装置,其特征在于,包括:
确定单元,用于确定业务名称;
应用解耦单元,用于根据所述业务名称,利用应用解耦方式拆分应用得到至少一个与所述业务名称对应的微服务;
数据解耦单元,用于根据所述微服务,利用数据解耦方式拆分与所述应用对应的数据库,得到与所述微服务对应的数据库;其中,所述数据库用于存储实现所述微服务的服务功能的数据;
所述应用解耦单元包括:
第一获取单元,用于根据所述业务名称,从预置的业务架构表中获取与所述业务名称对应的所有业务活动;
第一拆分单元,用于根据每个所述业务活动,从应用中拆分出分别实现每个所述业务活动对应的服务功能的功能单元;
设置单元,用于在每个所述功能单元上分别设置接口,得到与每个所述业务活动分别对应的微服务;
所述第一拆分单元包括:
第一获取子单元,用于根据每个所述业务活动,从所述业务架构表中获取与每个所述业务活动对应的输入服务;
第二获取子单元,用于根据输入服务,从所述业务架构表中分别获取与每个所述输入服务对应的输入服务类型;
判断子单元,用于根据每个所述输入服务对应的输入服务类型,分别判断每个所述输入服务是否是共享服务;
第一拆分子单元,用于在所述判断子单元判断所述输入服务是共享服务时,从应用中拆分出与所述共享服务对应的功能单元,得到共享功能单元;
第二拆分子单元,用于在所述判断子单元判断所述输入服务不是共享服务,则从应用中拆分出不是所述共享服务的输入服务对应的功能单元,得到与所述业务活动对应的服务功能的功能单元。
5.根据权利要求4所述的装置,其特征在于,所述数据解耦单元包括:
第二获取单元,用于根据每个所述微服务,从业务架构表中获取与每个所述微服务对应的输入数据对象;
查找单元,用于根据每个所述微服务的输入数据对象,从与所述应用对应的数据库中查找与每个所述微服务的输入数据对象对应的数据表;
第二拆分单元,用于从与所述应用对应的数据库中拆分出所述数据表,生成与所述微服务对应的数据库。
6.根据权利要求4所述的装置,其特征在于,还包括:
第三获取单元,用于获取与所述业务名称对应的所有业务活动分别对应的微服务;
组件化单元,用于组件化所述与所述业务名称对应的所有业务活动分别对应的微服务,得到与所述业务名称对应的微应用。
7.一种计算机可读存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现权利要求1-3任一项所述的方法。
CN201710618192.6A 2017-07-26 2017-07-26 一种应用拆分的方法及装置 Active CN107391142B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710618192.6A CN107391142B (zh) 2017-07-26 2017-07-26 一种应用拆分的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710618192.6A CN107391142B (zh) 2017-07-26 2017-07-26 一种应用拆分的方法及装置

Publications (2)

Publication Number Publication Date
CN107391142A CN107391142A (zh) 2017-11-24
CN107391142B true CN107391142B (zh) 2020-11-06

Family

ID=60341749

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710618192.6A Active CN107391142B (zh) 2017-07-26 2017-07-26 一种应用拆分的方法及装置

Country Status (1)

Country Link
CN (1) CN107391142B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110704061B (zh) * 2017-12-26 2022-11-25 杭州数梦工场科技有限公司 基于微服务的部署交付件的运行方法及装置
CN108279926B (zh) * 2018-01-10 2021-06-08 浙江网新恒天软件有限公司 一种单体应用微服务化的方法
CN108279892B (zh) * 2018-02-27 2021-05-28 郑州云海信息技术有限公司 一种拆分大型应用服务为微服务的方法、装置及设备
CN109033435A (zh) * 2018-08-14 2018-12-18 安徽云才信息技术有限公司 一种跨微服务的模糊搜索方法
CN110162414B (zh) * 2019-02-01 2024-01-30 腾讯科技(深圳)有限公司 基于微服务架构实现人工智能服务的方法及装置
CN110210828A (zh) * 2019-05-30 2019-09-06 四川长虹电器股份有限公司 一种微服务治理方法
US11099820B2 (en) 2019-06-19 2021-08-24 International Business Machines Corporation Reconfiguring application software into microservice architecture
CN110716765B (zh) * 2019-09-29 2023-04-07 浙江网新恒天软件有限公司 一种单体应用Faas化的方法
CN111078315B (zh) * 2019-12-12 2020-12-08 拉扎斯网络科技(上海)有限公司 微服务编排、执行方法及系统、架构、设备、存储介质
CN113672200A (zh) * 2020-05-15 2021-11-19 京东方科技集团股份有限公司 微服务处理方法及装置、存储介质及电子设备
CN112068812B (zh) * 2020-09-02 2024-04-02 数字广东网络建设有限公司 一种微服务生成方法、装置、计算机设备和存储介质
CN112346717A (zh) * 2020-09-18 2021-02-09 长沙市到家悠享网络科技有限公司 微服务系统创建方法、装置、设备、介质、微服务系统
CN112433776B (zh) * 2020-10-16 2022-06-28 广东电力信息科技有限公司 电网业务处理系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3428850B2 (ja) * 1997-03-11 2003-07-22 三菱電機株式会社 無線通信システム
CN105550130A (zh) * 2015-12-14 2016-05-04 中电科华云信息技术有限公司 基于容器的应用环境动态编排的方法及其应用系统
CN105577780A (zh) * 2015-12-21 2016-05-11 武汉理工大学 一种基于微服务的高校教学云平台
CN105573751A (zh) * 2015-12-12 2016-05-11 天津南大通用数据技术股份有限公司 商业智能中应用微服务的方法及敏捷开发管理模式
CN106850832A (zh) * 2017-03-01 2017-06-13 郑州云海信息技术有限公司 一种基于微服务架构的云管理系统
CN106878393A (zh) * 2017-01-16 2017-06-20 深圳市商沃科技发展有限公司 一种基于融合微服务架构的系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10069891B2 (en) * 2015-09-30 2018-09-04 Bank Of America Corporation Channel accessible single function micro service data collection process for light analytics

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3428850B2 (ja) * 1997-03-11 2003-07-22 三菱電機株式会社 無線通信システム
CN105573751A (zh) * 2015-12-12 2016-05-11 天津南大通用数据技术股份有限公司 商业智能中应用微服务的方法及敏捷开发管理模式
CN105550130A (zh) * 2015-12-14 2016-05-04 中电科华云信息技术有限公司 基于容器的应用环境动态编排的方法及其应用系统
CN105577780A (zh) * 2015-12-21 2016-05-11 武汉理工大学 一种基于微服务的高校教学云平台
CN106878393A (zh) * 2017-01-16 2017-06-20 深圳市商沃科技发展有限公司 一种基于融合微服务架构的系统
CN106850832A (zh) * 2017-03-01 2017-06-13 郑州云海信息技术有限公司 一种基于微服务架构的云管理系统

Also Published As

Publication number Publication date
CN107391142A (zh) 2017-11-24

Similar Documents

Publication Publication Date Title
CN107391142B (zh) 一种应用拆分的方法及装置
US8612406B1 (en) Sharing business data across networked applications
CN102682052B (zh) 过滤数据存储上的查询数据
US9077717B2 (en) Propagation and adoption of extensions across applications in networked solutions
CN105468720A (zh) 集成分布式数据处理系统的方法、相应系统及其数据处理方法
CN108509523A (zh) 区块链数据的结构化处理方法、设备及可读存储介质
CN112925647A (zh) 云边协同系统、集群资源的控制方法及装置
Di Martino et al. Towards a unified owl ontology of cloud vendors' appliances and services at paas and saas level
US9830385B2 (en) Methods and apparatus for partitioning data
Márquez et al. A pattern language for scalable microservices-based systems
CN105814864B (zh) 一种输入输出io请求处理方法及文件服务器
US20180225317A1 (en) System and method in a database system for sharing a data item with an entity in another tenant domain
CN112416923A (zh) 一种元数据管理方法及装置、设备、存储介质
CN103984713A (zh) 一种基于云计算的财务数据查询方法
US9355166B2 (en) Clustering signifiers in a semantics graph
CN111124589A (zh) 一种服务发现系统、方法、装置及设备
US11704327B2 (en) Querying distributed databases
CN111814020A (zh) 一种数据的获取方法和装置
CN109040311B (zh) 服务信息的推送处理方法与装置
US11727022B2 (en) Generating a global delta in distributed databases
Vijay Survey on Role of Hadoop In Cloud Computing Environment
CN113326305A (zh) 一种处理数据的方法和装置
US20160191339A1 (en) Systems, devices, and methods for incident management interactions
CN115017185A (zh) 一种数据处理方法、装置及存储介质
Dissanayake A study on real-time database technology and its applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant