一种快速构建微服务的应用系统及方法与流程

文档序号:29820433发布日期:2022-04-27 11:00阅读:128来源:国知局
一种快速构建微服务的应用系统及方法与流程
一种快速构建微服务的应用系统及方法
1.相关申请参考:本身请根据《专利法》第二十九条要求2021年12月28日向国家知识产权局提交的发明专利申请(一种快速构建微服务的应用系统,申请号为:2021116245780)的优先权,本文以此申请的内容为基础并通过参考将其完整地结合于此。
技术领域
2.本发明涉及微服务技术领域,尤其涉及一种快速构建微服务的应用系统及方法。


背景技术:

3.随着软件技术的快速迭代更新,传统的单体式应用已经暴露出越来越多的缺点,许多企业已经开始转型微服务架构开发。一个微服务只会关注一个特定的业务功能,所以业务清晰、代码量较少。单个微服务启动较快,局部修改容易部署:单体应用只要有修改,就得重新部署整个应用。微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可。按需伸缩:可根据需求,实现细粒度的扩展。但是微服务的构建难度较高,每个服务需要多个基础服务,还要需要结合注册中心,网关服务,配置中心等,这些导致很多开发人员无法快速入门微服务开发企业应用系统。
4.现有技术中关于微服务的构建具有如下缺陷:微服务的构建难度较高,需要含有注册中心,网关服务,权限服务,统一配置中心服务,才能搭建出一个微服务的架构;另外每个微服务都需要众多基础模块,需要含有数据库适配模块、缓存模块、消息队列模块、日志收集模块、对象存储模块、定制任务模块等等,因此造成开发人员一时间很难都熟悉并运用到项目中构建一个健全的微服务系统。


技术实现要素:

5.基于上述现有技术存在的问题,本发明公开了一种快速构建微服务的应用系统及方法,具体方案包括:第一方面,本发明提供了种快速构建微服务的应用系统,包括:网关服务模块,用于对外提供唯一调用入口、对内提供路由的上下游配对方式,该方式包括请求聚合、认证、鉴权、限流和熔断;授权中心模块,用于所有的微服务的授权和鉴权;权限管理模块,对系统用户进行角色配置和赋权;注册中心模块,对每一个微服务进行注册管理、并含有键值配置和心跳检查功能;微服务快速构建模块,快速构建直接运行的微服务;服务间调度模块,用于寻找对应调用的微服务和接口名,将一个微服务的请求传送至另一个微服务;配置中心模块,用于配置模块运行的参数,当参数配置变更,以主动推送的方式通知各微服务模块更新参数;
数据库适配模块,用于适配mysql、mssql和sqllite三个数据库;缓存模块,用于缓存系统交互频次较高的数据;消息队列模块,用于存储消息和消费消息;对象存储模块,用于对接阿里云的oss、七牛云的oss以及本地的minio三种对象存储服务;定时任务模块,用于定时执行服务中的指定接口;日志收集模块,用于将系统的日志存储供监控和查询。
6.进一步的,所述网关服务模块包括负载均衡器;所述微服务快速构建模块能够快速构建一个内含多个基础模块的微服务,所述微服务能够到注册中心服务模块中、并将路由配置信息存储在注册中心模块的键值存储中。
7.进一步的,当前端通过网关服务模块访问授权中心模块获取令牌,当获取到令牌后,接下来的每次访问都需要将令牌传送至微服务,微服务首先会将令牌传送至授权中心模块进行鉴权、如果通过即访问微服务、如果不通过则将授权不通状态返回给客户端。
8.进一步的,所述注册中心服务模块采用服务注册组件进行用户管理,其中所有的微服务注册到注册中心服务模块进行管理和调用;所述网关服务模块与注册中心模块相结合读取注册中心模块的路由配置信息并自动生成路由配置文件。
9.进一步的,所述服务间调度模块与注册中心服务模块相配合,当微服务a需要调用微服务b的某个接口时,微服务a只需要获取微服务b的服务名称、所要调用的接口路由地址和参数信息,将上述三个信息传送至服务间调度模块,所述服务间调度模块通过注册中心服务模块寻找微服务b的内部调用地址,再通过负载均衡器访问到微服务b的具体地址。
10.进一步的,还包括协调模块,所述协调模块包括主协调者以及从协调者,所述主协调者以及所述从协调者通过消息队列模块与单个微服务发生数据交换;所述主协调者以及所述从协调者通过消息队列模块进行信息同步;所述主协调者通过所述服务间调度模块感知微服务的状态;所述从协调者通过所述服务间调度模块感知主协调者的状态。
11.进一步的,所述配置中心模块采用apollo组件进行微服务的加载配置,首先获取apollo配置信息,如果apollo上存在需要的配置信息,微服务将配置信息获取并替换本地配置。
12.进一步的,所述定时任务模块包括调度器、任务资源和触发器,所述调度器用于管理任务资源和触发器,所述任务资源为存储每个任务的基本信息,所述触发器根据配置规则触发执行计划任务。
13.第二方面,本技术还提供了一种快速构建微服务的方法,包括以下步骤:s1、通过nexus搭建私有nuget仓库;s2、将数据库适配模块、缓存模块、消息队列模块、日志收集模块、对象存储模块、定时任务模块、各个模块打包上传到nuget仓库;s3、在开发工具中添加nuget仓库地址,再通过系统提供的快速构建服务,填入微服务名,下载微服务源码压缩包,完成微服务构建。
14.进一步的,所述步骤s3中“完成微服务构建”还包括:s31、读取配置中心模块的配置覆盖与本地配置;s32、将微服务注册到注册中心模块,将微服务中的路由配置存在注册中心模块的
键值存储中;s33、通知网关服务模块有新服务的注入到注册中心模块;s34、网关服务模块获取注册中心键值存储中最新的路由配置信息进行热加载。
15.本技术的有益效果是:由于采用了上述技术方案,本发明提供的一种快速构建微服务的应用系统,该系统通过服务注册中心模块管理所有的微服务,它提供心跳健康检查功能,在心跳检查期间发现服务丢失,无法访问,注册中心将该服务标记为异常;通过配置心中模块能够统一配置所有微服务,配置中心的优点还能够存储应用的敏感配置,如秘钥,阿里云的oss的accesstoken等信息;授权中心模块使得微服务的授权,鉴权过程变得简单,开发人员只需要配置授权中心的url和发牌者信息即可实现;同时采用快速构建方式使得微服务的开发变得相对容易,快速构建出的微服务含有基础组件模块,能够自动注册到配置中心,能够将路由存储在注册中心,能够自动从apollo服务中获取配置;另外本发明将权限管理开发一个微服务,开发人员配置导航菜单,配置角色,权限角色即可实现应用的权限管理。
附图说明
16.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1 为本发明快速构建微服务的应用系统的功能模块图;图2为本发明实施例中微服务在启动过程的四大步骤示意图;图3为本发明实施例中从客户端调用微服务的示意图;图4为本发明实施例提供的一种快速构建微服务的方法步骤图;图5为本发明实施例步骤s3的子流程。
具体实施方式
18.以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
19.为了能够更清楚地理解本技术的上述目的、特征和优点,下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。此处所描述的具体实施例仅仅用于解释本公开,而非对本技术的限定。基于所描述的本技术的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本技术保护的范围。
20.图1 为本发明快速构建微服务的应用系统的功能模块图,如图1所示,一种快速构建微服务的应用系统,包括:网关服务模块,用于对外提供唯一调用入口、对内提供路由的上下游配对方式,该方式包括请求聚合、认证、鉴权、限流和熔断;授权中心模块,用于所有的微服务的授权和鉴权;权限管理模块,对系统用户进行角色配置和赋权;
注册中心模块,对每一个微服务进行注册管理、并含有键值配置和心跳检查功能;微服务快速构建模块,快速构建直接运行的微服务;服务间调度模块,用于寻找对应调用的微服务和接口名,将一个微服务的请求传送至另一个微服务;配置中心模块,用于配置模块运行的参数,当参数配置变更,以主动推送的方式通知各微服务模块更新参数;数据库适配模块,用于适配mysql、mssql和sqllite三个数据库;缓存模块,用于缓存系统交互频次较高的数据;消息队列模块,用于存储消息和消费消息;对象存储模块,用于对接阿里云的oss、七牛云的oss以及本地的minio三种对象存储服务;定时任务模块,用于定时执行服务中的指定接口;日志收集模块,用于将系统的日志存储供监控和查询。
21.具体的,网关服务模块用于对外提供唯一调用入口,对内提供路由的上下游配对,网关服务主要由ocelot组件实现。请求聚合是将多个api请求结果合并为一个返回。认证是对下游api进行认证以及鉴权服务。鉴权是通过认证中的allowedscopes拿到claims之后,对其解析并验证配置,验证失败将无法访问下游服务。限流是对请求可以防止下游服务器因为访问过载而崩溃。熔断是停止将请求转发到下游服务,当下游服务已经出现故障的时候再请求也是功而返,并且增加下游服务器和api网关的负担,这个功能是用的pollly来实现。
22.所述定时任务模块包括调度器,任务资源和触发器三个基础部分,调度器是核心功能,它是用来管理任务和触发器。任务资源就是表示存储每个任务的基本信息;触发器是根据配置规则来触发执行计划任务。
23.在一些实施例中,所述网关服务模块包括负载均衡器;所述微服务快速构建模块能够快速构建一个内含多个基础模块的微服务,所述微服务能够到注册中心服务模块中、并将路由配置信息存储在注册中心模块的键值存储中。
24.具体的,负载均衡器含有三种类型,roundrobin:轮询机制,循环找到可以用的服务,leastconnection:最少连接数,跟踪发现现在有最少请求或处理的可用服务,noloadbalancer:不使用负载均衡,直接访问config配置或者服务发现的第一个可用服务;微服务快速构建模块用于快速构建一个可以直接运行的微服务。此快速构建的微服务包含有微服务的基础模块,能够自动注册到注册中心模块,能够将路由配置信息存储在注册中心模块的键值存储中。本发明中,网关服务模块能够和注册中心模块结合,读取注册中心模块的路由配置信息并自动生成路由配置表。
25.在一些实施例中,当前端通过网关服务模块访问授权中心模块获取令牌,当获取到令牌后,接下来的每次访问都需要将令牌传送至微服务,微服务首先会将令牌传送至授权中心模块进行鉴权、如果通过即访问微服务、如果不通过则将授权不通状态返回给客户端。
26.在一些实施例中,所述注册中心服务模块采用服务注册组件进行用户管理,其中所有的微服务注册到注册中心服务模块进行管理和调用;所述网关服务模块与注册中心模
块相结合读取注册中心模块的路由配置信息并自动生成路由配置文件。
27.具体的,注册中心服务模块用于对每一个微服务进行注册管理,并含有键值存储和心跳检查功能。注册中心由consul实现。所有的微服务必须注册到注册中心,以方便对服务进行管理和调用。
28.在一些实施例中,所述服务间调度模块与注册中心服务模块相配合,服务间调度模块用于寻找对应调用的微服务和接口名称。当微服务a需要调用微服务b的某个接口时,微服务a只需要知道微服务b的服务名称和所要调用的接口路由地址与参数,将这三个信息传递给服务间的调用服务,它将通过注册中心的服务发现功能寻找微服务b的内部调用地址,在通过负载均衡器,访问到微服务b。
29.在一些实施例中,还包括协调模块,所述协调模块包括主协调者以及从协调者,所述主协调者以及所述从协调者通过消息队列模块与单个微服务发生数据交换;所述主协调者以及所述从协调者通过消息队列模块进行信息同步;所述主协调者通过所述服务间调度模块感知微服务的状态;所述从协调者通过所述服务间调度模块感知主协调者的状态。
30.具体的,由于微服务间是高聚合低耦合的,且一些事务需要调用两个或者多个微服务,那么如果当某个微服务节点发生异常或者网络故障,可能影响整个系统的性能。为了避免发生这种情况,可引入分布式事务协调者,利用主协调者通过服务间调度模块来监测微服务的状态,并通过消息队列模块进行数据交换,此时能够保证单个微服务不会同时被其他的多个微服务调用接口;此外,从协调者通过服务间调度模块来感知主协调者的状态,一旦主协调者失效,从协调者可替代主协调者,防止协调者失效造成对整个系统性能的影响。
31.在一些实施例中,所述配置中心模块采用apollo组件进行微服务的加载配置,首先获取apollo配置信息,如果apollo上存在需要的配置信息,微服务将配置信息获取并替换本地配置。
32.在一些实施例中,所述定时任务模块包括调度器、任务资源和触发器,所述调度器用于管理任务资源和触发器,所述任务资源为存储每个任务的基本信息,所述触发器根据配置规则触发执行计划任务。
33.具体的,配置中心模块用于配置模块运行的参数,当参数配置变更,以主动推送的方式通知各微服务更新参数。配置中心组件由apollo组件实现。微服务的启动加载配置信息过程的第一步是获取apollo配置信息,如果apollo上存在需要的配置信息,微服务将配置信息获取下来,并替换本地配置,可以这样的理解,配置中心可以将分散在各个项目中的配置文件集中起来管理,并通过mqtt,实现配置修改后通知各个项目,不必手动重启项目。
34.图4为本发明实施例提供的一种快速构建微服务的方法步骤图,结合图4,一种快速构建微服务的方法,包括以下步骤:步骤s1、通过nexus搭建私有nuget仓库;步骤s2、将数据库适配模块、缓存模块、消息队列模块、日志收集模块、对象存储模块、定时任务模块、各个模块打包上传到nuget仓库;步骤s3、在开发工具中添加nuget仓库地址,再通过系统提供的快速构建服务,填入微服务名,下载微服务源码压缩包,完成微服务构建。
35.具体的,本发明公开的一种快速构建微服务的应用系统包括上述公开的所有模
块,但不限于上述模块,本系统在建立过程中通过nexus搭建私有nuget仓库,将数据库适配模块、缓存模块、消息队列模块、日志收集模块、对象存储模块、定时任务模块、各个模块打包上传到nuget仓库。在开发工具中添加nuget仓库地址,再通过系统提供的快速构建服务,填入微服务名,下载微服务源码压缩包。源码中已经包含了如图1中所包含的服务模块,并且可以更多的服务模块图2为本发明中微服务的启动过程,图5为本发明实施例步骤s3的子流程,结合图2以及图5,所述步骤s3中“完成微服务构建”还包括:步骤s31、读取配置中心模块的配置覆盖与本地配置;步骤s32、将微服务注册到注册中心模块,将微服务中的路由配置存在注册中心模块的键值存储中;步骤s33、通知网关服务模块有新服务的注入到注册中心模块;步骤s34、网关服务模块获取注册中心键值存储中最新的路由配置信息进行热加载。
36.具体的,本发明中从客户端访问微服务的过程为如图3即客户端调用微服务的示意图所示,客户端先通过网关服务模块访问授权中心模块请求获取令牌,授权中心模块由identityserver4组件实现,授权中心模块验证用户名和密码成功后会返回一个加密后令牌token给客户端。客户端会将token信息存于前端,通常是localstorage中,它再次使用token 通过网关访问到微服务。网关服务由ocelot组件实现,他通过配置的负载均衡类型,找到微服务。发明实施例中,网关服务模块和授权中心模块是非常重要的服务,所以生产环境上的部署通常是集群部署方式。
37.本领域的技术人员能够理解,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
38.虽然结合附图描述了本技术的实施方式,但是本领域技术人员可以在不脱离本技术的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1