1.本发明涉及缓存技术领域,具体是一种基于traceid的缓存方法。
背景技术:
2.缓存:在计算机领域,数据持久化(如存储到数据库或文件系统)的效率比存储在内存中的效率要低很多。因此在计算机领域,为了提高性能,经常把常用的数据存储到内存中,以加快查询速度,微服务:微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。这些服务通常有自己的堆栈,包括数据库和数据模型,并且通过rpc或rest api,消息队列方式互相通信。
3.分布式追踪:在微服务架构下,由于服务众多,各服务间的调用关系非常复杂。当外部请求进入微服务系统后,能够方便的追踪请求在各个微服务之间的调用路径,这对分析线上问题,解决bug非常重要。分布式追踪系统就是一种追踪微服务调用关系的技术。
4.现有缓存方案大多针对的是变化较少的数据,例如在车险系统中,省市区县、保险公司、险种类别等。但在微服务环境下,各微服务之间调用频繁,有些数据在一次请求中(如报价中的车辆信息、套餐信息等),也会被反复调用,但这些数据又经常会发生变化,不能或根本就不适合长期缓存。但如果不缓存,这些信息就要被各个微服务反复读取,使系统响应时间增长,影响用户体验和系统系能。
技术实现要素:
5.本发明的目的在于提供一种基于traceid的缓存方法,以解决上述背景技术中提出的问题。
6.为实现上述目的,本发明提供如下技术方案:
7.一种基于traceid的缓存方法,包括客户端、缓存服务器、traceeanble标签、tracecacheable标签和trace缓存管理器,所述客户端的输出端和发送请求的输入端相互连接,所述发送请求的输出端和网关的输入端相互连接,所述网关的输出端和服务调用traceid的输入端相互连接,所述服务调用traceid的输出端和服务一的输入端相互连接,所述服务一的输出端和输入端分别和服务调用traceid的输入端和获取数据traceid输出端相互连接,所述服务调用traceid的输出端和服务二的输入端相互连接,所述服务二的输出端和获取数据traceid的输入端相互连接。
8.作为本发明进一步的方案:所述服务二的输出端分别和保存数据到缓存、服务调用traceid的输入端相互连接,所述保存数据到缓存的输出端和缓存服务器的输入端相互连接。
9.作为本发明再进一步的方案:所述服务调用traceid的输出端和服务四的输入端相互连接,所述服务四的输出端分别和获取缓存数据、服务调用traceid的输入端相互连接。
10.作为本发明再进一步的方案:所述获取缓存数据的输出端和缓存服务器的输入端
相互连接,所述服务调用traceid的输出端和服务三的输入端相互连接,所述服务三的输出端和获取缓存数据的输入端相互连接,所述获取缓存数据的输出端和缓存服务器的输入端相互连接。
11.作为本发明再进一步的方案:所述traceeanble标签的输出端和aop的输入端相互连接,所述aop的输出端和tracecache拦截器的输入端相互连接,所述tracecache拦截器的输出端和write的输入端相互连接,所述write的输出端和tracecontext的输入端相互连接。
12.作为本发明再进一步的方案:所述tracecontext的输入端和跟踪高速缓存的输出端相互连接,所述跟踪高速缓存的输入端和get/put的输出端相互连接,所述get/put的输入端和tracecacheable标签的输出端相互连接。
13.作为本发明再进一步的方案:所述跟踪高速缓存的输出端和read/write的输入端相互连接,所述read/write的输出端和数据库的输入端相互连接。
14.作为本发明再进一步的方案:所述跟踪高速缓存的输入端和manage的输出端相互连接,所述manage的输入端和trace缓存管理器的输出端相互连接。
15.与现有技术相比,本发明的有益效果是:
16.1、通过采用基于traceid的缓存,可以大幅减少复杂场景下微服务之间调用的关系,缩短系统响应时间,提高微服务效率和用户体验。以车险系统的报价服务为例,在应用基于traceid的缓存后,系统响应时间平均缩短40%;
17.2、通过采用基于traceid的缓存,只有服务2会调用服务1获取数据,服务3和服务直接从缓存中读取数据即可,减少的调用链;
18.3、通过设置的缓存服务器,能够通过缓存服务器存储数据,并直接通过缓存服务器对服务二、服务三、服务四进行服务调用和获取缓存数据;
19.4、通过采用基于traceid的缓存,缓存不一定发生的末端服务节点,也可以发生在某个被重复调用的中间节点,在这一种情况下,缓存其实就达到了剪枝的效果;
20.5、实际生产环境调用关系比示意图负载的多,调用链很多都达到上百个节点,通过采用基于traceid的缓存,能够避减少节点的使用,使用到的负载较少,因此能够缩短系统响应时间。
附图说明
21.图1为一种基于traceid的缓存方法的微服务调用上半段的示意图;
22.图2为一种基于traceid的缓存方法的微服务调用下半段的示意图;
23.图3为一种基于traceid的缓存方法的框架示意图;
24.图4为一种传统缓存方法的框架示意图;
25.图5为一种传统缓存方法的微服务调用示意图;
26.图6为一种基于traceid的缓存方法中trace缓存的架构示意图。
27.图中:1、客户端;2、发送请求;3、网关;4、服务一;5、服务二;6、服务三;7、服务四;8、服务调用traceid;9、获取数据traceid;10、缓存服务器;11、获取缓存数据;12、保存数据到缓存;13、traceeanble标签;14、aop;15、tracecache拦截器;16、write;17、tracecontext;18、跟踪高速缓存;19、get/put;20、tracecacheable标签;21、read/write;
22、数据库;23、manage;24、trace缓存管理器。
具体实施方式
28.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.请参阅图1~6,本发明实施例中,一种基于traceid的缓存方法,包括客户端1、缓存服务器10、traceeanble标签13、tracecacheable标签20和trace缓存管理器24,客户端1的输出端和发送请求2的输入端相互连接,能够通过客户端向缓存内发生请求指令,以便与traceld的运行,的发送请求2的输出端和网关3的输入端相互连接,能够通过发送请求,实现对网关的触发,网关3的输出端和服务调用traceid8的输入端相互连接,能够通过网关实现将传输指令传输到服务调用traceid上,服务调用traceid8的输出端和服务一4的输入端相互连接,能够通过服务一分别通过服务调用traceid8向服务二5继续传输指令,也能够直接通过获取数据traceid向服务二5直接获取数据,服务一4的输出端和输入端分别和服务调用traceid8的输入端和获取数据traceid9输出端相互连接,服务调用traceid8的输出端和服务二5的输入端相互连接,服务二5的数据可通过保存数据到缓存12集中缓存在缓存服务器10内,服务一4获取的数据来源于缓存服务器10内的数据,服务二5的输出端和获取数据traceid9的输入端相互连接。
30.优选的,服务二5的输出端分别和保存数据到缓存12、服务调用traceid8的输入端相互连接,保存数据到缓存12的输出端和缓存服务器10的输入端相互连接,能够通过缓存服务器内存储的数据,实现将指令传输到服务二上。
31.优选的,服务调用traceid8的输出端和服务四7的输入端相互连接,服务四7的输出端分别和获取缓存数据11、服务调用traceid8的输入端相互连接。
32.优选的,获取缓存数据11的输出端和缓存服务器10的输入端相互连接,服务调用traceid8的输出端和服务三6的输入端相互连接,服务三6的输出端和获取缓存数据11的输入端相互连接,获取缓存数据11的输出端和缓存服务器10的输入端相互连接。
33.优选的,traceeanble标签13的输出端和aop14的输入端相互连接,aop14的输出端和tracecache拦截器15的输入端相互连接,tracecache拦截器15的输出端和write16的输入端相互连接,write16的输出端和tracecontext17的输入端相互连接。
34.优选的,tracecontext17的输入端和跟踪高速缓存18的输出端相互连接,跟踪高速缓存18的输入端和get/put19的输出端相互连接,get/put19的输入端和tracecacheable标签20的输出端相互连接,缓存不一定发生的末端服务节点,也可以发生在某个被重复调用的中间节点,在这一种情况下,缓存其实就达到了剪枝的效果。
35.优选的,跟踪高速缓存18的输出端和read/write21的输入端相互连接,read/write21的输出端和数据库22的输入端相互连接,能够通过read/write的指令,实现对缓存数据的处理。
36.优选的,跟踪高速缓存18的输入端和manage23的输出端相互连接,manage23的输入端和trace缓存管理器24的输出端相互连接,能够通过trace缓存管理器对数据进行管
理。
37.本发明的工作原理是:
38.使用时,通过电脑客户端1向网关3输入发送请求1的指令,通过网关3启用服务调用traceid8,从而实现将指令传输到服务一4内,服务一4可分别通过服务调用traceid8向服务二5继续传输指令,也能够直接通过获取数据traceid向服务二5直接获取数据,服务二5的数据可通过保存数据到缓存12集中缓存在缓存服务器10内,服务一4获取的数据来源于缓存服务器10内的数据,当服务一4无法在缓存服务器10内找到时,服务二5通过服务调用traceid8传输到服务四7内,服务四7一方面可通过获取缓存数据11直接向缓存服务器10内获取数据,另一方面可通过服务调用traceid8将指令传输到服务三6内,服务三6能够通过获取缓存数据11直接向缓存服务器10内直接获取数据,可见,只有服务2会调用服务1获取数据,服务3和服务直接从缓存中读取数据即可,减少的调用链,服务一4、服务二5、服务三6、服务四7内部均设置有标签,当缓存开始时,可直接通过标签触发缓存,从而实现使服务一4、服务二5、服务三6、服务四7任何区块直接与下个区块工作,系统中的服务个数也是不定的,服务一4、服务二5也只是示例。
39.尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种基于traceid的缓存方法,包括客户端(1)、缓存服务器(10)、traceeanble标签(13)、tracecacheable标签(20)和trace缓存管理器(24),其特征在于:所述客户端(1)的输出端和发送请求(2)的输入端相互连接,所述发送请求(2)的输出端和网关(3)的输入端相互连接,所述网关(3)的输出端和服务调用traceid(8)的输入端相互连接,所述服务调用traceid(8)的输出端和服务一(4)的输入端相互连接,所述服务一(4)的输出端和输入端分别和服务调用traceid(8)的输入端和获取数据traceid(9)输出端相互连接,所述服务调用traceid(8)的输出端和服务二(5)的输入端相互连接,所述服务二(5)的输出端和获取数据traceid(9)的输入端相互连接。2.根据权利要求1所述的一种基于traceid的缓存方法,其特征在于:所述服务二(5)的输出端分别和保存数据到缓存(12)、服务调用traceid(8)的输入端相互连接,所述保存数据到缓存(12)的输出端和缓存服务器(10)的输入端相互连接。3.根据权利要求1所述的一种基于traceid的缓存方法,其特征在于:所述服务调用traceid(8)的输出端和服务四(7)的输入端相互连接,所述服务四(7)的输出端分别和获取缓存数据(11)、服务调用traceid(8)的输入端相互连接。4.根据权利要求3所述的一种基于traceid的缓存方法,其特征在于:所述获取缓存数据(11)的输出端和缓存服务器(10)的输入端相互连接,所述服务调用traceid(8)的输出端和服务三(6)的输入端相互连接,所述服务三(6)的输出端和获取缓存数据(11)的输入端相互连接,所述获取缓存数据(11)的输出端和缓存服务器(10)的输入端相互连接。5.根据权利要求1所述的一种基于traceid的缓存方法,其特征在于:所述traceeanble标签(13)的输出端和aop(14)的输入端相互连接,所述aop(14)的输出端和tracecache拦截器(15)的输入端相互连接,所述tracecache拦截器(15)的输出端和write(16)的输入端相互连接,所述write(16)的输出端和tracecontext(17)的输入端相互连接。6.根据权利要求5所述的一种基于traceid的缓存方法,其特征在于:所述tracecontext(17)的输入端和跟踪高速缓存(18)的输出端相互连接,所述跟踪高速缓存(18)的输入端和get/put(19)的输出端相互连接,所述get/put(19)的输入端和tracecacheable标签(20)的输出端相互连接。7.根据权利要求6所述的一种基于traceid的缓存方法,其特征在于:所述跟踪高速缓存(18)的输出端和read/write(21)的输入端相互连接,所述read/write(21)的输出端和数据库(22)的输入端相互连接。8.根据权利要求6所述的一种基于traceid的缓存方法,其特征在于:所述跟踪高速缓存(18)的输入端和manage(23)的输出端相互连接,所述manage(23)的输入端和trace缓存管理器(24)的输出端相互连接。
技术总结
本发明通过公开了一种基于traceid的缓存方法,包括客户端、缓存服务器、TraceEanble标签、TraceCacheable标签和Trace缓存管理器,所述客户端的输出端和发送请求的输入端相互连接,所述发送请求的输出端和网关的输入端相互连接,所述网关的输出端和服务调用TraceID的输入端相互连接,所述服务调用TraceID的输出端和服务一的输入端相互连接,所述服务一的输出端和输入端分别和服务调用TraceID的输入端和获取数据TraceID输出端相互连接,所述服务调用TraceID的输出端和服务二的输入端相互连接,通过采用基于traceId的缓存,可以大幅减少复杂场景下微服务之间调用的关系,缩短系统响应时间,提高微服务效率和用户体验。以车险系统的报价服务为例,在应用基于traceId的缓存后,系统响应时间平均缩短40%。系统响应时间平均缩短40%。系统响应时间平均缩短40%。
技术研发人员:李强
受保护的技术使用者:北京车与车科技有限公司
技术研发日:2022.02.21
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-6303.html