一种基于契约的实现服务依赖发现和服务访问的路由方法转让专利

申请号 : CN202111509260.8

文献号 : CN114201314B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黎明黄兆鹏吴文波崔张伟

申请人 : 优维科技(深圳)有限公司

摘要 :

本发明涉及微服务技术领域,具体是一种基于契约的实现服务依赖发现和服务访问的路由方法,包括以下步骤,S1.根据规范的微任务接连口建立服务契约,对服务契约进行命名,利用服务契约名称作为微任务接连口的默认名称,并依据规格契约生成服务的默认实现代码;S2.利用得到的契约对外发布生成契约服务的规格,将根据代码部署完一个服务后,在任务列表里记录下对象的信息,将对象信息更新到存储环境里,在任务启动的情况下,通过存储环境地址获取任务的地址。本发明利用构建虚拟本体服务器的方法,使得微服务在研发的过程中前后端研发解耦,进而使得前后端研发不用互相等待,缩短研发时间,因此提高了微服务研发开发效率。

权利要求 :

1.一种基于契约的实现服务依赖发现和服务访问的路由方法,其特征在于:包括以下步骤;

S1.根据规范的微任务接连口建立服务契约,对服务契约进行命名,利用服务契约名称作为微任务接连口的默认名称,并依据规格契约生成服务的默认实现代码;

S2.利用得到的契约对外发布生成契约服务的规格,将根据代码部署完一个服务后,在任务列表里记录下对象的信息,将对象信息更新到存储环境里,在任务启动的情况下,通过存储环境地址获取任务的地址,并发起启动时请求被劫持给署理生成策略,根据策略得到任务的启动地址,以实现任务的发现;

S3.依据代码自动生成任务的运行环境,并获取到依赖服务变更信息,并根据依赖服务变更信息分析微任务在正常流量下的每个方面的状态,并依据任务的节点和边构建接连口级别的依赖关系,静态分析将储节点修改、客户端日志上报频率回馈到系统稳态,微任务通过静态分析反映服务系统的健康状态与配置的改动状态;

S4.根据微任务的状态构建虚拟本地服务器,然后通过插件将微任务的客户端发送的请求转发给后端的服务器,并根据规定好的功能单元接连口设计出了一套功能单元文档,再处理功能单元文档并返回一些假数据;

S5.根据预设的微任务接连口,将服务对象循环依赖进行上移,通过在两个相互循环依赖的组件之间添加中间层,变循环依赖为间接依赖,并引入一个新组件,并对循环关系进行剥离,将预设接连口单一化,新组件的行为是命令或查询,查询过程中改变对象状态,查询过程中不应有返回值;

S6.对两个相互循环依赖之间的强依赖和弱依赖进行区分,将强依赖和弱依赖对应的消息进行区分可以得到可靠消息和非可靠消息,并对弱依赖设置开关组件,可靠消息通过系统级的方式进行保障,可靠消息实现关键服务能够运行,开关组件在关闭时实现非可靠消息进行丢弃;

S7.依据强依赖请求网关,通过网关中的逻辑层对请求进行过滤和处理后分发到各微任务接连口,重新启动网关服务,通过服务注册中心发现服务,构建高度低耦合系统,一个微任务负责产生和维护数据,这些数据以事件作为表现形式并通过消息传递系统发送到搜索引擎中,而另一个微任务则专门负责查询搜索引擎中的数据进行进一步处理。

2.根据权利要求1所述的一种基于契约的实现服务依赖发现和服务访问的路由方法,其特征在于:在所述S3中,通过动态分析定位和排查系统稳态中的性能问题,所述性能问题的起因与异常检测相似,所述性能问题不足以触发报警。

3.根据权利要求1所述的一种基于契约的实现服务依赖发现和服务访问的路由方法,其特征在于:在所述S3中,所述日志上报的内容包括任务响应次数和响应的时间,根据时间计算缩小任务识别的范围,并根据得到的范围查找服务对象。

4.根据权利要求1所述的一种基于契约的实现服务依赖发现和服务访问的路由方法,其特征在于:在所述S3中,分析微任务从粒度、范围和角度进行出发,并将粒度进行排序,并依据粒度时间或大小获得有效的粒度序列,并将序列导入功能单元接连口。

5.根据权利要求4所述的一种基于契约的实现服务依赖发现和服务访问的路由方法,其特征在于:在所述S3中,所述范围为单个服务的请求或多个服务的请求,所述角度为埋点指标、依赖关系、流量大小中的一种或多种组合。

6.根据权利要求1所述的一种基于契约的实现服务依赖发现和服务访问的路由方法,其特征在于:在所述S6中,所述根据契约关系对强依赖和弱依赖中的信息进行计算权重,并通过权重的大小区分可靠消息和非可靠消息。

7.根据权利要求1所述的一种基于契约的实现服务依赖发现和服务访问的路由方法,其特征在于:在所述S5中,利用间接依赖弱化多个对象之间内的循环依赖的关系,使得多个对象相对独立,从而便于为对象进行编辑。

8.根据权利要求1所述的一种基于契约的实现服务依赖发现和服务访问的路由方法,其特征在于:在所述S5中,新组件用于剥离上下文之间的关系,当下文被导入时,实现上文保持原始状态,防止上下文关联被要求导入。

9.根据权利要求6所述的一种基于契约的实现服务依赖发现和服务访问的路由方法,其特征在于:所述非可靠消息为非核心服务内容,所述微任务的极端资源瓶颈出现时对非核心服务进行丢弃。

10.根据权利要求1所述的一种基于契约的实现服务依赖发现和服务访问的路由方法,其特征在于:在所述S7中,所述搜索引擎通过在互联网上爬行和抓取的方式获取网页信息,并将获取的信息存入服务数据集,根据数据集中的信息建立索引集,搜索引擎依据相关度进行排序。

说明书 :

一种基于契约的实现服务依赖发现和服务访问的路由方法

技术领域

[0001] 本发明涉及微服务技术领域,具体是一种基于契约的实现服务依赖发现和服务访问的路由方法。

背景技术

[0002] 微服务架构是一项在云中部署应用和服务的新技术,微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API(功能单元)进行沟通”关键在于该服务可以在自己的程序中运行,在服务公开中,许多服务都可以被内部独立进程所限制,如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。
[0003] 中国专利号202011215387.4提供了一种微服务动态路由的方法及系统,该方法为:获取消费端发送的包含待处理外部因子的数据处理请求;根据待处理外部因子在预设的微服务容器中进行路由,确定与待处理外部因子对应的待调用微服务;利用Dubbo,从配置中心中调用待调用微服务响应数据处理请求,得到响应结果;将响应结果反馈给消费端。
[0004] 现有技术的微服务研发中,微服务的前端和后端的研发需要相互等待,导致微服务研发的时间较长,进而降低了微服务研发开发效率,且微服务中循环依赖关系复杂,导致微服务的运行效率低下,因此,亟需设计一种基于契约的实现服务依赖发现和服务访问的路由方法来解决上述的问题。

发明内容

[0005] 本发明的目的在于提供一种基于契约的实现服务依赖发现和服务访问的路由方法,以解决上述背景技术中提出的研发效率低、运行效率低的问题。
[0006] 本发明的技术方案是:一种基于契约的实现服务依赖发现和服务访问的路由方法,S1.根据规范的微任务接连口建立服务契约,对服务契约进行命名,利用服务契约名称作为微任务接连口的默认名称,并依据规格契约生成服务的默认实现代码;
[0007] S2.利用得到的契约对外发布生成契约服务的规格,将根据代码部署完一个服务后,在任务列表里记录下对象的信息,将对象信息更新到存储环境里,在任务启动的情况下,通过存储环境地址获取任务的地址,并发起启动时请求被劫持给署理生成策略,根据策略得到任务的启动地址,以实现任务的发现;
[0008] S3.依据代码自动生成任务的运行环境,并获取到依赖服务变更信息,并根据依赖服务变更信息分析微任务在正常流量下的每个方面的状态,并依据任务的节点和边构建接连口级别的依赖关系,静态分析将储节点修改、客户端日志上报频率回馈到系统稳态,微任务通过静态分析反映服务系统的健康状态与配置的改动状态;
[0009] S4.根据微任务的状态构建虚拟本地服务器,然后通过插件将微任务的客户端发送的请求转发给后端的服务器,并根据规定好的功能单元接连口设计出了一套功能单元文档,再处理功能单元文档并返回一些假数据;
[0010] S5.根据预设的微任务接连口,将服务对象循环依赖进行上移,通过在两个相互循环依赖的组件之间添加中间层,变循环依赖为间接依赖,并引入一个新组件,并对循环关系进行剥离,将预设接连口单一化,新组件的行为是命令或查询,查询过程中改变对象状态,查询过程中不应有返回值;
[0011] S6.对两个相互循环依赖之间的强依赖和弱依赖进行区分,将强依赖和弱依赖对应的消息进行区分可以得到可靠消息和非可靠消息,并对弱依赖设置开关组件,可靠消息通过系统级的方式进行保障,可靠消息实现关键服务能够运行,开关组件在关闭时实现非可靠消息进行丢弃;
[0012] S7.依据强依赖请求网关,通过网关中的逻辑层对请求进行过滤和处理后分发到各微任务接连口,重新启动网关服务,通过服务注册中心发现服务,构建高度低耦合系统,一个微任务负责产生和维护数据,这些数据以事件作为表现形式并通过消息传递系统发送到搜索引擎中,而另一个微任务则专门负责查询搜索引擎中的数据进行进一步处理。
[0013] 进一步地,在所述S3中,通过动态分析定位和排查系统稳态中的性能问题,所述性能问题的起因与异常检测相似,所述性能问题不足以触发报警。
[0014] 进一步地,在所述S3中,所述日志上报的内容包括任务响应次数和响应的时间,根据时间计算缩小任务识别的范围,并根据得到的范围查找服务对象。
[0015] 进一步地,在所述S3中,分析微任务从粒度、范围和角度进行出发,并将粒度进行排序,并依据粒度时间或大小获得有效的粒度序列,并将序列导入功能单元接连口。
[0016] 进一步地,在所述S3中,所述分析范围为单个服务的请求或多个服务的请求,所述分析角度为埋点指标、依赖关系、流量大小中的一种或多种组合。
[0017] 进一步地,在所述S6中,所述根据契约关系对强依赖和弱依赖中的信息进行计算权重,并通过权重的大小区分可靠消息和非可靠消息。
[0018] 进一步地,在所述S5中,利用间接依赖弱化多个对象之间内的循环依赖的关系,使得多个对象相对独立,从而便于为对象进行编辑。
[0019] 进一步地,在所述S5中,新组件用于剥离上下文之间的关系,当下文被导入时,实现上文保持原始状态,防止上下文关联被要求导入。
[0020] 进一步地,所述非可靠消息为非核心服务内容,所述微任务的极端资源瓶颈出现时对非核心服务进行丢弃。
[0021] 进一步地,在所述S7中,所述搜索引擎通过在互联网上爬行和抓取的方式获取网页信息,并将获取的信息存入服务数据集,根据数据集中的信息建立索引集,搜索引擎依据相关度进行排序。
[0022] 本发明通过改进在此提供一种基于契约的实现服务依赖发现和服务访问的路由方法,与现有技术相比,具有如下改进及优点:
[0023] (1)本发明利用构建虚拟本体服务器的方法,使得微服务在研发的过程中前后端研发解耦,进而使得前后端研发不用互相等待,缩短研发时间,因此提高了微服务研发开发效率。
[0024] (2)本发明利用在两个相互循环依赖的组件之间添加中间层,使得将循环依赖变为间接依赖,进而简化的微服务之间依赖关系,使得微服务的运行效率更加高效。
[0025] (3)本发明利用逻辑层对微服务的请求进行过滤和处理,使得微服务架构中,能够确保跨多个服务调用的关键行为的正常运行,进而使得微服务架构的运行更加的稳定。

附图说明

[0026] 下面结合附图和实施例对本发明作进一步解释:
[0027] 图1是本发明的整体流程图;
[0028] 图2是本发明的服务发现流程图;
[0029] 图3是本发明的逻辑层流程图。

具体实施方式

[0030] 下面将结合附图1至图3对本发明进行详细说明,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0031] 需要说明的是,当组件被称为“固定于”另一个组件,它可以直接在另一个组件上或者也可以存在居中的组件。当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中组件。当一个组件被认为是“设置于”另一个组件,它可以是直接设置在另一个组件上或者可能同时存在居中组件。本文所使用的术语“垂直的”、“水平的”、“左”、“右”以及相似的表述只是为了说明的目的。
[0032] 除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
[0033] 本发明通过改进在此提供一种基于契约的实现服务依赖发现和服务访问的路由方法,如图1‑3所示,包括以下步骤;
[0034] S1.根据规范的微任务接连口建立服务契约,对服务契约进行命名,利用服务契约名称作为微任务接连口的默认名称,并依据规格契约生成服务的默认实现代码;
[0035] S2.利用得到的契约对外发布生成契约服务的规格,将根据代码部署完一个服务后,在任务列表里记录下对象的信息,将对象信息更新到存储环境里,在任务启动的情况下,通过存储环境地址获取任务的地址,并发起启动时请求被劫持给署理生成策略,根据策略得到任务的启动地址,以实现任务的发现;
[0036] S3.依据代码自动生成任务的运行环境,并获取到依赖服务变更信息,并根据依赖服务变更信息分析微任务在正常流量下的每个方面的状态,并依据任务的节点和边构建接连口级别的依赖关系,静态分析将储节点修改、客户端日志上报频率回馈到系统稳态,微任务通过静态分析反映服务系统的健康状态与配置的改动状态;
[0037] S4.根据微任务的状态构建虚拟本地服务器,然后通过插件将微任务的客户端发送的请求转发给后端的服务器,并根据规定好的功能单元接连口设计出了一套功能单元文档,再处理功能单元文档并返回一些假数据;
[0038] S5.根据预设的微任务接连口,将服务对象循环依赖进行上移,通过在两个相互循环依赖的组件之间添加中间层,变循环依赖为间接依赖,并引入一个新组件,并对循环关系进行剥离,将预设接连口单一化,新组件的行为是命令或查询,查询过程中改变对象状态,查询过程中不应有返回值;
[0039] S6.对两个相互循环依赖之间的强依赖和弱依赖进行区分,将强依赖和弱依赖对应的消息进行区分可以得到可靠消息和非可靠消息,并对弱依赖设置开关组件,可靠消息通过系统级的方式进行保障,可靠消息实现关键服务能够运行,开关组件在关闭时实现非可靠消息进行丢弃;
[0040] S7.依据强依赖请求网关,通过网关中的逻辑层对请求进行过滤和处理后分发到各微任务接连口,重新启动网关服务,通过服务注册中心发现服务,构建高度低耦合系统,一个微任务负责产生和维护数据,这些数据以事件作为表现形式并通过消息传递系统发送到搜索引擎中,而另一个微任务则专门负责查询搜索引擎中的数据进行进一步处理。
[0041] 本发明的有益效果为
[0042] 本发明提供的一个实施例为,在S3中,通过动态分析定位和排查系统稳态中的性能问题,性能问题的起因与异常检测相似,性能问题不足以触发报警。
[0043] 本发明提供的又一个实施例为,在S3中,日志上报的内容包括任务响应次数和响应的时间,根据时间计算缩小任务识别的范围,并根据得到的范围查找服务对象。
[0044] 本发明提供的再一个实施例为,在S3中,分析微任务从粒度、范围和角度进行出发,并将粒度进行排序,并依据粒度时间或大小获得有效的粒度序列,并将序列导入功能单元接连口。
[0045] 本发明提供的再一个实施例为,在S3中,分析范围为单个服务的请求或多个服务的请求,分析角度为埋点指标、依赖关系、流量大小中的一种或多种组合。
[0046] 本发明提供的再一个实施例为,在S6中,根据契约关系对强依赖和弱依赖中的信息进行计算权重,并通过权重的大小区分可靠消息和非可靠消息。
[0047] 本发明提供的再一个实施例为,在S5中,利用间接依赖弱化多个对象之间内的循环依赖的关系,使得多个对象相对独立,从而便于为对象进行编辑。
[0048] 本发明提供的再一个实施例为,在S5中,新组件用于剥离上下文之间的关系,当下文被导入时,实现上文保持原始状态,防止上下文关联被要求导入。
[0049] 本发明提供的再一个实施例为,非可靠消息为非核心服务内容,微任务的极端资源瓶颈出现时对非核心服务进行丢弃。
[0050] 本发明提供的再一个实施例为,在S7中,搜索引擎通过在互联网上爬行和抓取的方式获取网页信息,并将获取的信息存入服务数据集,根据数据集中的信息建立索引集,搜索引擎依据相关度进行排序。
[0051] 本发明的工作原理为:S1.根据规范的微任务接连口建立服务契约,对服务契约进行命名,利用服务契约名称作为微任务接连口的默认名称,并依据规格契约生成服务的默认实现代码;S2.利用得到的契约对外发布生成契约服务的规格,将根据代码部署完一个服务后,在任务列表里记录下对象的信息,将对象信息更新到存储环境里,在任务启动的情况下,通过存储环境地址获取任务的地址,并发起启动时请求被劫持给署理生成策略,根据策略得到任务的启动地址,以实现任务的发现;S3.依据代码自动生成任务的运行环境,并获取到依赖服务变更信息,并根据依赖服务变更信息分析微任务在正常流量下的每个方面的状态,并依据任务的节点和边构建接连口级别的依赖关系,静态分析将储节点修改、客户端日志上报频率回馈到系统稳态,微任务通过静态分析反映服务系统的健康状态与配置的改动状态;S4.根据微任务的状态构建虚拟本地服务器,然后通过插件将微任务的客户端发送的请求转发给后端的服务器,并根据规定好的功能单元接连口设计出了一套功能单元文档,再处理功能单元文档并返回一些假数据;S5.根据预设的微任务接连口,将服务对象循环依赖进行上移,通过在两个相互循环依赖的组件之间添加中间层,变循环依赖为间接依赖,并引入一个新组件,并对循环关系进行剥离,将预设接连口单一化,新组件的行为是命令或查询,查询过程中改变对象状态,查询过程中不应有返回值;S6.对两个相互循环依赖之间的强依赖和弱依赖进行区分,将强依赖和弱依赖对应的消息进行区分可以得到可靠消息和非可靠消息,并对弱依赖设置开关组件,可靠消息通过系统级的方式进行保障,可靠消息实现关键服务能够运行,开关组件在关闭时实现非可靠消息进行丢弃;S7.依据强依赖请求网关,通过网关中的逻辑层对请求进行过滤和处理后分发到各微任务接连口,重新启动网关服务,通过服务注册中心发现服务,构建高度低耦合系统,一个微任务负责产生和维护数据,这些数据以事件作为表现形式并通过消息传递系统发送到搜索引擎中,而另一个微任务则专门负责查询搜索引擎中的数据进行进一步处理。
[0052] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。