一种可适应系统单体化及分布式化的实现方法及装置与流程

文档序号:17719449发布日期:2019-05-22 02:03阅读:231来源:国知局
一种可适应系统单体化及分布式化的实现方法及装置与流程

本发明涉及计算机领域,特别涉及一种可适应系统单体化及分布式化的实现方法及装置。



背景技术:

随着技术的不断发展和云化商业概念的推动,越来越多公司在业务研发实现上都相继引入了分布式云化相关技术,虽然分布式云化一般都具备较好的性能、扩展性及稳定性,但对于系统部署的复杂度、系统运维能力水平的要求、运维难度等也随之提高了很多。

由于各行业特征不同,在现有的部分行业中,由于对数据安全性要求较高或者存在固定资产配备需求或者资产利旧的要求,通常情况下用户会希望把应用运行在他们自有的机房环境中,而拒绝使用托管式或云化saas版本;同时,由于企业无法备齐有云化运维相关能力的技术人才,在这种情况下,比较好的方案是提供一套单体化简单部署及运维的业务系统版本。

由于当下许多云化技术具备较强的侵入性,或对基础分布式能力具有较强的依赖性,使得在架构更换过程中的代价往往较大,例如,如果要实现从单体化到分布式化的升级,基本上都需要涉及架构调整和代码变更,不仅代价较高,而且无法做到无缝升级。因此,比较常见的做法是同时维护两套不同架构的应用版本,以支持不同规模的使用场景,如:使用微服务云版支持大用户数大并发请求,另外再维护一套单体化简易版本应用交付给中小规模不愿意接受多租户saas化的用户,而这种做法直接导致了应用版本分支,使得对于多个分支功能维护管理、bug修订、版本迭代、产品化等难度及代价都提高了不少。同时,在相关开源技术层面,由于受使用面的限制,目前大部分框架都未提供较为完整有效地解决方案。



技术实现要素:

本发明要解决的技术问题之一,在于提供一种可适应系统单体化及分布式化的实现方法,通过该方法可以有效解决现有架构能力平滑升级的难题,以及因架构能力变更所带来的业务应用多版本化的问题。

本发明是这样实现技术问题之一的:一种可适应系统单体化及分布式化的实现方法,所述方法包括如下步骤:

步骤s1、将业务应用按照分布式标准拆解成各个业务子模块,每所述业务子模块均全局具备元数据配置,且通过对各所述业务子模块的元数据配置来实现对应的业务逻辑;

步骤s2、各所述业务子模块与能力协议进行交互,并通过与能力协议的交互来匹配到对应的能力单元,且通过匹配的能力单元来完成具体架构功能;

步骤s3、根据能力集成规范对目标发布包所涉及的各业务子模块的执行能力进行契约式动态匹配,获得满足要求的各能力单元,并通过能力集成容器实现来对各能力单元进行集成;

步骤s4、解析目标发布包中所涉及的各业务子模块的内容,搜索并获取对应业务子模块的发布包,且将获取的发布包组合打包成应用包。

进一步地,所述元数据配置包含特定业务功能实现的元数据定义、能力协议的元数据定义或者sdk交互。

进一步地,所述能力协议是对架构能力的抽象化表示,所述能力协议描述了包含特定架构能力的元数据配置、通讯方式、请求内容要素、应答规范以及异常分支的信息要素。

进一步地,所述步骤s3具体为:

定义各能力单元的集成方式及规范来形成能力集成规范,并通过能力集成容器实现来为能力集成规范提供完整的集成实现;

对于目标发布包所涉及的各业务子模块,以深度遍历的执行方式来搜索每个业务子模块的元数据配置,根据能力集成规范以及各业务子模块的能力协议配置,动态匹配满足要求的各能力单元,并由能力集成容器实现来对匹配的各能力单元进行集成。

进一步地,所述步骤s3还包括:

能力集成容器实现根据能力集成规范转发请求的流量至对应的能力单元,从而实现请求从能力集成容器实现到能力单元再到业务子模块的正向或逆向处理。

本发明要解决的技术问题之二,在于提供一种可适应系统单体化及分布式化的实现装置,通过该实现装置可以有效解决现有架构能力平滑升级的难题,以及因架构能力变更所带来的业务应用多版本化的问题。

本发明是这样实现技术问题之二的:一种可适应系统单体化及分布式化的实现装置,所述实现装置包括业务应用拆解模块、能力匹配模块、能力集成模块以及应用包打包模块;

所述业务应用拆解模块,用于将业务应用按照分布式标准拆解成各个业务子模块,每所述业务子模块均全局具备元数据配置,且通过对各所述业务子模块的元数据配置来实现对应的业务逻辑;

所述能力匹配模块,用于各所述业务子模块与能力协议进行交互,并通过与能力协议的交互来匹配到对应的能力单元,且通过匹配的能力单元来完成具体架构功能;

所述能力集成模块,用于根据能力集成规范对目标发布包所涉及的各业务子模块的执行能力进行契约式动态匹配,获得满足要求的各能力单元,并通过能力集成容器实现来对各能力单元进行集成;

所述应用包打包模块,用于解析目标发布包中所涉及的各业务子模块的内容,搜索并获取对应业务子模块的发布包,且将获取的发布包组合打包成应用包。

进一步地,所述元数据配置包含特定业务功能实现的元数据定义、能力协议的元数据定义或者sdk交互。

进一步地,所述能力协议是对架构能力的抽象化表示,所述能力协议描述了包含特定架构能力的元数据配置、通讯方式、请求内容要素、应答规范以及异常分支的信息要素。

进一步地,所述能力集成模块具体为:

定义各能力单元的集成方式及规范来形成能力集成规范,并通过能力集成容器实现来为能力集成规范提供完整的集成实现;

对于目标发布包所涉及的各业务子模块,以深度遍历的执行方式来搜索每个业务子模块的元数据配置,根据能力集成规范以及各业务子模块的能力协议配置,动态匹配满足要求的各能力单元,并由能力集成容器实现来对匹配的各能力单元进行集成。

进一步地,所述能力集成模块还包括:

能力集成容器实现根据能力集成规范转发请求的流量至对应的能力单元,从而实现请求从能力集成容器实现到能力单元再到业务子模块的正向或逆向处理。

本发明具有如下优点:

1、可以对业务逻辑实现与架构能力实现进行抽象解耦,不仅能够保持业务逻辑实现的独立性,而且提供了架构能力接入及集成的规范,可用于各业务子模块及架构能力的无缝集成;

2、提供了能力协议匹配、能力单元及业务资源的集成方案,可很好的实现各业务子模块的逻辑实现与架构能力实现的可配置化的集成能力。该特性可以赋予应用具备分布式化或单体化的能力,既可以用于应用的策略化打包,也可以用于与碎片化业务子模块整合组装等相关的使用场景。因此,通过本发明的技术方案可以有效解决现有架构能力平滑升级的难题,以及因架构能力变更所带来的业务应用多版本化的问题,简化了此类场景下业务应用的产品化管控逻辑。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1为本发明一种可适应系统单体化及分布式化的实现方法的执行流程图。

图2为本发明一种可适应系统单体化及分布式化的实现装置的实现原理图。

图3为本发明中实现应用包封装示意图。

具体实施方式

请参阅图1至图3所示,一种可适应系统单体化及分布式化的实现方法,所述方法包括如下步骤:

步骤s1、将业务应用按照分布式标准拆解成各个业务子模块,每所述业务子模块均全局具备元数据配置,且通过对各所述业务子模块的元数据配置来实现对应的业务逻辑;

在本发明的技术方案中,未约束各业务子模块的模块化粒度,在具体实现时,可以但不限于使用如前后端分离法、微应用化、微服务化等方式来进行模块设计。

所述元数据配置包含特定业务功能实现的元数据定义、能力协议的元数据定义或者sdk交互,还可以包含其它其它元数据的配置。也就是说,在具体实施时,可以但不限于如资源配置、能力协议配置、模块业务配置等。

在本发明的技术方案中,由于各个业务子模块都主要关注业务逻辑实现,而对于具体架构功能的实现(例如服务管理、服务通讯、存储操作、消息通讯、身份权限认证等),都只需要在完成与对应的能力协议的交互后,通过外围匹配到的能力单元来完成具体架构功能。同时,为了简化对各业务子模块的能力协议的调用,通常还可以但不仅限于提供如:能力的sdk、上下文注解配置等形式来更加友好地提供能力协议交互。

步骤s2、各所述业务子模块与能力协议进行交互,并通过与能力协议的交互来匹配到对应的能力单元,且通过匹配的能力单元来完成具体架构功能;

在本发明的技术方案中,所述能力协议是对架构能力的抽象化表示,所述能力协议描述了包含特定架构能力的元数据配置、通讯方式、请求内容要素、应答规范以及异常分支的信息要素,当然,还可以包含其它的信息要素。在具体实施时,可以但不仅限于使用如:jsr系列的规范sdk、某类中间件能力的协议标准sdk、使用特定idl描述的服务能力等来实现。

通过本发明的能力协议,可很好的实现各业务子模块与架构性功能之间的松耦合,使各业务子模块的实现具备更好的独立性,为后续可进行策略分包、打包以及集成打下基础。

其中,所述能力单元是对某个能力协议的具体实现,对应到系统架构中可以是某个中间件能力如:消息能力、服务能力、日志等能力的内嵌形式功能实现或者作为外部独立部署能力的客户端通讯代理封装。能力单元需要满足可集成规范要求,在能力的供求模型上扮演的是“提供者”角色,同时能力单元具备高内聚低耦合特性,可以间接依赖其它低级的能力单元,并与业务子模块(即“能力消费者”)进行契约式协议动态匹配操作,这样使得,即使在某个能力协议存在有多种能力单元实现的情况下,也能够根据能力需求以及集成实现找到对应的能力。与此同时,每个能力单元都具备有完整的生命周期,在集成时需要满足能力集成规范,以此来达到对于能力集成实现的解耦。

步骤s3、根据能力集成规范对目标发布包所涉及的各业务子模块的执行能力进行契约式动态匹配,获得满足要求的各能力单元,并通过能力集成容器实现来对各能力单元进行集成;

所述步骤s3具体为:

定义各能力单元的集成方式及规范来形成能力集成规范,并通过能力集成容器实现来为能力集成规范提供完整的集成实现;在具体实施时,能力集成规范定义了包含如能力协议匹配、能力协议生命周期管理、进程生命周期管理、流量控制、资源加载等功能。通过构建能力集成规范可进一步解耦能力单元与能力集成容器实现的依赖,以此来达到基础设施能力实现的多样性;

对于目标发布包所涉及的各业务子模块,以深度遍历的执行方式来搜索每个业务子模块的元数据配置,根据能力集成规范以及各业务子模块的能力协议配置,动态匹配满足要求的各能力单元,并由能力集成容器实现来对匹配的各能力单元进行集成;

能力集成容器实现为能力集成规范提供了一套完整的集成实现,可以独立运行并可以以插件化的方式加载能力单元,能力集成容器实现可以但不仅限于扩展如:springcloud版本容器、kubernetes版本容器等实现,因此只要保证集成规范实现的完整性,就可以实现对各业务子模块按照策略来融合打包可运行的程序成品,从而实现可以适配分布式化及单体化的灵活打包部署。

所述步骤s3还包括:

能力集成容器实现根据能力集成规范转发请求的流量至对应的能力单元,从而实现请求从能力集成容器实现到能力单元再到业务子模块的正向或逆向处理,这也是架构能力基础设施化的关键所在。

步骤s4、解析目标发布包中所涉及的各业务子模块的内容,搜索并获取对应业务子模块的发布包,且将获取的发布包组合打包成应用包,该应用包既可以是单体化应用包,也可以是微应用化应用包。在具体实施时,可以但不仅限于通过集成ci以及发布仓库套件来搜索或者及时的编译各业务子模块,通过资源的集成和规整,可以完成任意组合方式的模块打包效果。

请参阅图1至图3所示,一种可适应系统单体化及分布式化的实现装置,所述实现装置包括业务应用拆解模块、能力匹配模块、能力集成模块以及应用包打包模块;

所述业务应用拆解模块,用于将业务应用按照分布式标准拆解成各个业务子模块,每所述业务子模块均全局具备元数据配置,且通过对各所述业务子模块的元数据配置来实现对应的业务逻辑;

在本发明的技术方案中,未约束各业务子模块的模块化粒度,在具体实现时,可以但不限于使用如前后端分离法、微应用化、微服务化等方式来进行模块设计。

所述元数据配置包含特定业务功能实现的元数据定义、能力协议的元数据定义或者sdk交互,还可以包含其它其它元数据的配置。也就是说,在具体实施时,可以但不限于如资源配置、能力协议配置、模块业务配置等。

在本发明的技术方案中,由于各个业务子模块都主要关注业务逻辑实现,而对于具体架构功能的实现(例如服务管理、服务通讯、存储操作、消息通讯、身份权限认证等),都只需要在完成与对应的能力协议的交互后,通过外围匹配到的能力单元来完成具体架构功能。同时,为了简化对各业务子模块的能力协议的调用,通常还可以但不仅限于提供如:能力的sdk、上下文注解配置等形式来更加友好地提供能力协议交互。

所述能力匹配模块,用于各所述业务子模块与能力协议进行交互,并通过与能力协议的交互来匹配到对应的能力单元,且通过匹配的能力单元来完成具体架构功能;

在本发明的技术方案中,所述能力协议是对架构能力的抽象化表示,所述能力协议描述了包含特定架构能力的元数据配置、通讯方式、请求内容要素、应答规范以及异常分支的信息要素,当然,还可以包含其它的信息要素。在具体实施时,可以但不仅限于使用如:jsr系列的规范sdk、某类中间件能力的协议标准sdk、使用特定idl描述的服务能力等来实现。

通过本发明的能力协议,可很好的实现各业务子模块与架构性功能之间的松耦合,使各业务子模块的实现具备更好的独立性,为后续可进行策略分包、打包以及集成打下基础。

其中,所述能力单元是对某个能力协议的具体实现,对应到系统架构中可以是某个中间件能力如:消息能力、服务能力、日志等能力的内嵌形式功能实现或者作为外部独立部署能力的客户端通讯代理封装。能力单元需要满足可集成规范要求,在能力的供求模型上扮演的是“提供者”角色,同时能力单元具备高内聚低耦合特性,可以间接依赖其它低级的能力单元,并与业务子模块(即“能力消费者”)进行契约式协议动态匹配操作,这样使得,即使在某个能力协议存在有多种能力单元实现的情况下,也能够根据能力需求以及集成实现找到对应的能力。与此同时,每个能力单元都具备有完整的生命周期,在集成时需要满足能力集成规范,以此来达到对于能力集成实现的解耦。

所述能力集成模块,用于根据能力集成规范对目标发布包所涉及的各业务子模块的执行能力进行契约式动态匹配,获得满足要求的各能力单元,并通过能力集成容器实现来对各能力单元进行集成;

所述能力集成模块具体为:

定义各能力单元的集成方式及规范来形成能力集成规范,并通过能力集成容器实现来为能力集成规范提供完整的集成实现;在具体实施时,能力集成规范定义了包含如能力协议匹配、能力协议生命周期管理、进程生命周期管理、流量控制、资源加载等功能。通过构建能力集成规范可进一步解耦能力单元与能力集成容器实现的依赖,以此来达到基础设施能力实现的多样性;

对于目标发布包所涉及的各业务子模块,以深度遍历的执行方式来搜索每个业务子模块的元数据配置,根据能力集成规范以及各业务子模块的能力协议配置,动态匹配满足要求的各能力单元,并由能力集成容器实现来对匹配的各能力单元进行集成;

能力集成容器实现为能力集成规范提供了一套完整的集成实现,可以独立运行并可以以插件化的方式加载能力单元,能力集成容器实现可以但不仅限于扩展如:springcloud版本容器、kubernetes版本容器等实现,因此只要保证集成规范实现的完整性,就可以实现对各业务子模块按照策略来融合打包可运行的程序成品,从而实现可以适配分布式化及单体化的灵活打包部署。

所述能力集成模块还包括:

能力集成容器实现根据能力集成规范转发请求的流量至对应的能力单元,从而实现请求从能力集成容器实现到能力单元再到业务子模块的正向或逆向处理,这也是架构能力基础设施化的关键所在。

所述应用包打包模块,用于解析目标发布包中所涉及的各业务子模块的内容,搜索并获取对应业务子模块的发布包,且将获取的发布包组合打包成应用包,该应用包既可以是单体化应用包,也可以是微应用化应用包。在具体实施时,可以但不仅限于通过集成ci以及发布仓库套件来搜索或者及时的编译各业务子模块,通过资源的集成和规整,可以完成任意组合方式的模块打包效果。

综上所述,本发明具有如下优点:

1、可以对业务逻辑实现与架构能力实现进行抽象解耦,不仅能够保持业务逻辑实现的独立性,而且提供了架构能力接入及集成的规范,可用于各业务子模块及架构能力的无缝集成;

2、提供了能力协议匹配、能力单元及业务资源的集成方案,可很好的实现各业务子模块的逻辑实现与架构能力实现的可配置化的集成能力。该特性可以赋予应用具备分布式化或单体化的能力,既可以用于应用的策略化打包,也可以用于与碎片化业务子模块整合组装等相关的使用场景。因此,通过本发明的技术方案可以有效解决现有架构能力平滑升级的难题,以及因架构能力变更所带来的业务应用多版本化的问题,简化了此类场景下业务应用的产品化管控逻辑。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

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