一种提高在微服务场景下服务之间数据访问效率的方法与装置与流程

文档序号:32870479发布日期:2023-01-07 03:35阅读:52来源:国知局
一种提高在微服务场景下服务之间数据访问效率的方法与装置与流程

1.本发明属于微服务架构技术领域,尤其涉及一种提高在微服务场景下服务之间数据访问效率的方法与装置。


背景技术:

2.在很多项目的业务初期阶段,高速迭代上线是首要考虑的事情,其次,系统的容量预估、可扩展性和系统的健壮性、高可用也是需要着重考虑的问题,随着业务的发展,用户量、请求量的增长,发现原来的单体系统已经远远不能满足要求了,特别是随着互联网整体的高速发展,对系统的要求越来越高,但是业务服务器的cpu、内存、连接数等资源是有限的,单体系统能够承受的qps也是有限的,由此,微服务思想就变的尤为重要,将我们的系统“分而治之”,来达到高性能,高可用的目的,但是随着微服务架构的普及,系统拆分的颗粒度需要根据业务的复杂度来决定,不管拆分粒度是粗还是细,都会涉及到一个无法避免的问题: 服务之间的通信。
3.随着业务的深入,我们的系统也变得越来越复杂,系统之间的通信也会变的越来越频繁,频繁的系统通信(不管是服务端的http还是服务之间的rpc、即远程过程调用)对系统的性能都有一定的影响,如果可以解决这种影响,系统的性能会有明显上升。


技术实现要素:

4.本发明针对微服务场景下,频繁的系统通信对系统的性能造成影响的问题,提出一种提高在微服务场景下服务之间数据访问效率的方法与装置,提供一个开发工具,用来提升服务之间的访问性能,从而提升系统整体性能,满足系统高可用的要求。
5.为了实现上述目的,本发明采用以下技术方案:本发明一方面提出一种提高在微服务场景下服务之间数据访问效率的方法,包括:在服务通信之前在系统中增加一个自定义拦截器,用于缓存每个参数环境下的第一次结果;再次通信时,在自定义拦截器中优先以请求中参数环境获取结果,如果能获取到,则直接返回结果给请求端,如果获取不到则继续服务通信;随着系统运行时间增长,自定义拦截器中缓存的数据日趋全面,需要系统间的通信概率日趋下降,从而提升整个系统的性能。
6.进一步地,所述自定义拦截器以开发工具的形式提供,此工具被封装成一个springboot starter,其他微服务系统如果需要使用,在对应的maven环境中增加此工具依赖,即可完成环境集成。
7.进一步地,代码开发过程中,在服务通信的代码处,通过注解配置来完成开发集成,从而实现提升服务通信的性能。
8.进一步地,所述自定义拦截器以注解的方式来提供服务。
9.进一步地,还包括:根据spring aop原理对注解做环绕切面;在切面中根据注解中配置的参数,先尝试在自定义拦截器中获取结果;如果获取到结果,则返回结果,取消服务之间的通信,直接通过自定义拦截器返回的数据获取结果;如果没有获取到结果,则服务间的通信继续,待通信结束,得到通信结果,依据注解上的参数,在自定义拦截器中缓存此结果,以便下一次同样的通信发生时,能够取消通信。
10.本发明另一方面提出一种提高在微服务场景下服务之间数据访问效率的装置,包括:自定义拦截器构建模块,用于在服务通信之前在系统中增加一个自定义拦截器,用于缓存每个参数环境下的第一次结果;结果查找模块,用于再次通信时,在自定义拦截器中优先以请求中参数环境获取结果,如果能获取到,则直接返回结果给请求端,如果获取不到则继续服务通信;自定义拦截器缓存完善模块,用于随着系统运行时间增长,自定义拦截器中缓存的数据日趋全面,需要系统间的通信概率日趋下降,从而提升整个系统的性能。
11.进一步地,所述自定义拦截器以开发工具的形式提供,此工具被封装成一个springboot starter,其他微服务系统如果需要使用,在对应的maven环境中增加此工具依赖,即可完成环境集成。
12.进一步地,代码开发过程中,在服务通信的代码处,通过注解配置来完成开发集成,从而实现提升服务通信的性能。
13.进一步地,所述自定义拦截器以注解的方式来提供服务。
14.进一步地,还包括:根据spring aop原理对注解做环绕切面;在切面中根据注解中配置的参数,先尝试在自定义拦截器中获取结果;如果获取到结果,则返回结果,取消服务之间的通信,直接通过自定义拦截器返回的数据获取结果;如果没有获取到结果,则服务间的通信继续,待通信结束,得到通信结果,依据注解上的参数,在自定义拦截器中缓存此结果,以便下一次同样的通信发生时,能够取消通信。
15.与现有技术相比,本发明具有的有益效果:本发明通过对中自定义拦截器的集成、配置,伴随着系统运行的时间越长,其中缓存的结果量就越大,则微服务系统中会有以下提升:(1)微服务系统中需要服务通信的可能越来越小;(2)各服务web中间件收到的其他服务请求也会随之降低,从而将有更多的资源用于处理用户的请求;(3)系统整体性能因此提升,根据测试,在集成本发明的自定义拦截器后,在有需要的接口下,接口的吞吐量提升30%,接口响应的平均时间降低40%。
附图说明
16.图1为本发明实施例一种提高在微服务场景下服务之间数据访问效率的方法的流程图;图2为本发明实施例的集成流程图;图3为本发明实施例一种提高在微服务场景下服务之间数据访问效率的装置的结构示意图。
具体实施方式
17.下面结合附图和具体的实施例对本发明做进一步的解释说明:如图1所示,一种提高在微服务场景下服务之间数据访问效率的方法,包括:在微服务场景下,在服务通信之前通过增加一个自定义拦截器,这个拦截器本发明以开发工具的形式提供,此工具缓存每个参数环境下的第一次结果,之后再次通信,在拦截器中优先以请求中参数环境去本发明中获取结果,如果能获取到,则直接返回结果给请求端,如果获取不到则继续服务通信,当系统运行时间越长,本发明工具中缓存的数据越全面,则需要系统间的通信概率就越低,从而提升整个系统的性能。
18.具体的,自定义拦截器是一种开发工具,此工具已经封装成一个springboot starter,其他微服务系统如果需要使用,在自己的maven环境中增加此工具依赖,即可完成环境集成,代码开发过程中,在服务通信的代码处,通过简单的注解配置来完成开发集成,从而实现提升服务通信的性能。
19.首先,本发明的自定义拦截器从结果来看,是一个开发工具,可以通过maven依赖来直接引入,然后在编码过程中在需要的地方通过简单的注解配置来完成集成,本发明的自定义拦截器工作原理:(1)以注解的方式来提供服务,方便其他系统的集成开发,其他系统只需在需要的地方加上注解即可;(2)根据spring aop原理对此注解做环绕切面;(3)在切面中根据注解中配置的参数,先去自定义拦截器中获取结果;(4)如果获取到结果,直接返回结果,那么服务之间的通信就被取消,可以直接通过自定义拦截器返回的数据获取结果;(5)如果没有获取到结果,那么服务间的通信继续,待通信结束,得到通信结果,并且依据注解上的参数,在自定义拦截器中缓存此结果,以便下一次同样的通信发生时,能够取消通信;(6)自定义拦截器中的缓存结果,支持多种持久化配置,可以是内存,支持常见中间件,如redis,mongodb等,也可以是数据库,同样支持常见数据库,如mysql,oracle,dm等。
20.在具体实施时,如图2所示,可以按照以下方式进行集成和配置:(1)在开发系统中的maven环境中配置依赖仓库地址;(2) 在系统的依赖配置中加入自定义拦截器的依赖配置;(3) 重新import开发系统;(4) 在需要解决问题的feign接口上添加自定义拦截器提供的注解;(5) 根据实际开发场景,在注解中配置feign接口中涉及到的参数名称。
21.在上述实施例的基础上,如图3所示,本发明还提出一种提高在微服务场景下服务之间数据访问效率的装置,包括:自定义拦截器构建模块,用于在服务通信之前在系统中增加一个自定义拦截器,用于缓存每个参数环境下的第一次结果;结果查找模块,用于再次通信时,在自定义拦截器中优先以请求中参数环境获取结果,如果能获取到,则直接返回结果给请求端,如果获取不到则继续服务通信;自定义拦截器缓存完善模块,用于随着系统运行时间增长,自定义拦截器中缓存的数据日趋全面,需要系统间的通信概率日趋下降,从而提升整个系统的性能。
22.进一步地,所述自定义拦截器以开发工具的形式提供,此工具被封装成一个springboot starter,其他微服务系统如果需要使用,在对应的maven环境中增加此工具依赖,即可完成环境集成。
23.进一步地,代码开发过程中,在服务通信的代码处,通过注解配置来完成开发集成,从而实现提升服务通信的性能。
24.进一步地,所述自定义拦截器以注解的方式来提供服务。
25.进一步地,还包括:根据spring aop原理对注解做环绕切面;在切面中根据注解中配置的参数,先尝试在自定义拦截器中获取结果;如果获取到结果,则返回结果,取消服务之间的通信,直接通过自定义拦截器返回的数据获取结果;如果没有获取到结果,则服务间的通信继续,待通信结束,得到通信结果,依据注解上的参数,在自定义拦截器中缓存此结果,以便下一次同样的通信发生时,能够取消通信。
26.综上,通过对本发明中自定义拦截器的集成、配置,伴随着系统运行的时间越长,其中缓存的结果量就越大,则微服务系统中会有以下提升:(1)微服务系统中需要服务通信的可能越来越小;(2)各服务web中间件收到的其他服务请求也会随之降低,从而将有更多的资源用于处理用户的请求;(3)系统整体性能因此提升,根据测试,在集成本发明的自定义拦截器后,在有需要的接口下,接口的吞吐量提升30%,接口响应的平均时间降低40%。
27.以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1