一种基于istio的分布式缓存系统及方法与流程

文档序号:32746524发布日期:2022-12-30 22:25阅读:24来源:国知局
一种基于istio的分布式缓存系统及方法与流程

1.本发明涉及容器部署,具体涉及一种基于istio的分布式缓存系统及方法。


背景技术:

2.在业务迁移容器的过程中,需要使用kubernetes编排工具部署容器服务,需要使用istio来管理服务之间的关系,需要使用istio gateway来作为七层负载均衡或者网关来管理流量的进入和出去。以及需要对业务迁移容器的服务数据进行缓存,目前通常采用nginx+varnish这样的组合实现对http服务的缓存,或者使用squid等页面缓存软件实现缓存功能。上述http服务缓存的方式需要单独进行构建,构建程序复杂,成本高。


技术实现要素:

3.本发明实施例提供一种基于istio的分布式缓存系统及方法,在业务迁移容器的过程中,通过采用kuberentes上具有的isito,实现http服务内容的动态缓存,构建程序简单,成本低。
4.为达上述目的,一方面,本发明实施例提供一种基于istio的分布式缓存系统,包括:
5.istio入口网关,用于在业务迁移容器的过程中,接收用户发送的http请求,所述http请求用于向业务当前容器请求数据;将接收到的所述http请求转发给缓存子系统,以及自所述缓存子系统未获取到相应的缓存数据或者在所述缓存子系统未开启的情况下时,将接收到的所述http请求转发给envoy过滤器;其中,所述istio入口网关设于所述容器内;
6.所述缓存子系统,用于接收所述istio入口网关转发的所述http请求,基于所述http请求查找相应的缓存数据,将查找到的缓存数据返回给所述用户;
7.所述envoy过滤器,用于接收所述istio入口网关转发的所述http请求,基于所述http请求自业务当前容器内获取相应的数据。
8.另一方面,本发明实施例提供一种基于istio的分布式缓存方法,包括:
9.在业务迁移容器的过程时,采用istio入口网关接收用户发送的http请求,所述请求用于向业务当前容器请求数据;将接收到的所述http请求转发到缓存子系统,以及自所述缓存子系统未获取到相应的缓存数据或者在所述缓存子系统未开启的情况下,将接收到的所述http请求转发给envoy过滤器;其中,所述istio入口网关设于所述容器内;
10.通过缓存子系统接收所述istio入口网关转发的的所述http请求,基于所述http请求查找相应的缓存数据,将查找到的缓存数据返回给所述用户;或者
11.通过envoy过滤器接收所述istio入口网关转发的http请求,基于所述http请求自业务当前容器内获取数据。
12.上述技术方案具有如下有益效果:因为istio网关处于用户与http请求数据的业务迁移容器之间,所以在业务迁移容器的过程中,通过利用kuberentes上具有的isito入口网关转发http请求,当缓存子系统开启时,将http请求转发给缓存子系统,在缓存子系统未
获取到相应的数据或者在所述缓存子系统未开启的情况下,将http请求转发给envoy过滤器,通过envoy过滤器从自业务当前容器内获取相应的数据。采用isito入口网关就能够实现http服务内容的动态缓存,构建程序简单,成本低。
附图说明
13.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
14.图1是本发明实施例的基于istio的分布式缓存系统的结构示意图;
15.图2是本发明实施例的基于istio的分布式缓存方法的流程示意图;
16.图3是本发明实施例的另一基于istio的分布式缓存方法的流程示意图。
具体实施方式
17.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
18.本发明涉及的技术术语释义如下:
19.kubernetes:一种容器编排管理工具
20.kubernetes之上的应用:使用kubernetes部署的服务,如nginx服务,mysql服务等等。
21.kubernetes资源:比如deployment,server,ingress等等,这些是用来在kubernetes之上部署业务用的
22.kubernetes生态软件:比如prometheus监控系统,alert manager报警系统,helm管理工具等等
23.istio是一种开源软件;连接、安全加固、控制和观察服务的开放平台,目前比较流行的微服务管理软件
24.istio gateway,是http协议的client端和server端的代理,简单结构。
25.envoy:一种支持tcp udp http grpc协议的代理软件
26.pod:kubernetes最小的调度单元,包含1个或多个容器
27.istio ingress gateway,是标准的http协议网络流量的代理
28.容器:容器映像是一个软件的轻量级独立可执行软件包,包含运行它所需的一切:代码,运行时,系统工具,系统库,设置等等,容器是容器影响中程序的运行状态。
29.cache高速缓冲存储器
30.filter被称作过滤器或者拦截器
31.single flight防止缓存击穿
32.如图1所示,结合本发明的实施例,提供一种基于istio的分布式缓存系统,包括:
33.istio入口网关11,用于在业务迁移容器的过程中,接收用户发送的http请求,所
述http请求用于向业务当前容器请求数据;将接收到的所述http请求转发给缓存子系统,以及自所述缓存子系统未获取到相应的缓存数据或者在所述缓存子系统未开启的情况下,将接收到的所述http请求转发给envoy过滤器13;其中,所述istio入口网关11设于所述容器内;
34.所述缓存子系统12,用于接收所述istio入口网关11转发的所述http请求,基于所述http请求查找相应的缓存数据,将查找到的缓存数据返回给所述用户;
35.所述envoy过滤器13,用于接收所述istio入口网关11转发的所述http请求,基于所述http请求自业务当前容器内获取相应的数据。
36.优选地,所述缓存子系统12包括缓存策略器、至少一个缓存器,所述至少一个缓存器采用分布式部署,所述缓存策略器与各所述缓存器相连,其中:
37.所述istio入口网关11,用于将接收到的所述http请求转发给所述缓存策略器;
38.所述缓存策略器,用于接收所述istio入口网关11转发的所述http请求,并确定所述http请求对应的缓存数据所在的目标缓存器,将所述http请求发送到所述目标缓存器。
39.优选地,所述缓存策略器,还用于在业务迁移容器之前,获取istio入口网关11内的http协议的头信息,将http协议的头信息作为第一键;以及,在业务迁移容器的过程中,将访问业务当前容器的http请求的url和url参数作为第一键;通过各第一键分别形成对应的第一键值对;获取所述istio入口网关11内的http协议版本;根据所述第一键值对、和/或、所述http协议版本形成第二键;将所述第二键下发到每个所述缓存器;
40.其中,所述第二键的种类至少包括如下之一:
41.将所述第一键值对的第一键作为第二键;
42.将所述第一键值对作为第二键;
43.根据正则表达式对所述第一键值对的第一键和相应的第一值进行匹配,将满足posix正则的所述第一键值对作为正则键值对,将所述正则键值对作为第二键;
44.将istio入口网关11内的http协议版本或实现http协议的软件对应的http协议版本作为第二键;
45.将http协议方法作为第二键。
46.优选地,所述缓存器,还用于在业务迁移容器之前,根据所述第二键自当前业务容器内获取相应的数据并保存,形成缓存数据,且将所述缓存数据作为所述第二键对应的第二值。
47.优选地,所述系统还包括键访问计数模块,其中:
48.所述目标缓存器,用于接收所述缓存策略器转发的所述http请求,根据所述http请求中的第二键访问对应的第二键值对,将所访问到的第二键值对的第二值返回给所述用户;
49.所述键访问计数模块,用于在所述istio入口网关11将所述http请求转发给所述目标缓存器后,根据所述http请求中的第二键,将对所述第二键的访问次数累计计数;
50.每个所述缓存器,包括:
51.分组模块:用于在业务迁移容器之前,按预设分组规则对所述第二键进行分组,形成多个键组,将同键组对应的缓存数据存储到同一缓存数据模块;通过对等网络模块peer保持各缓存数据模块之间的链接,所述缓存数据模块包括热点缓存数据模块和常规缓存数
据模块;
52.所述热点缓存数据模块,用于存储热点缓存数据,将热点缓存数据保存时长设定为第一时长阈值;采取最少使用算法将访问次数小于热点次数阈值的第二键对应的缓存数据放入常规缓存数据模块;其中,所述热点缓存数据是指访问次数不小于热点次数阈值的第二键对应的缓存数据;
53.所述常规缓存数据模块,用于存储除热点缓存数据之外的缓存数据,并采取最少使用算法淘汰访问次数小于常规次数阈值的第二键对应的缓存数据;
54.哈希模块,用于当根据所述http请求自所述缓存器无法获得缓存数据时,则采用哈希算法对所述http请求对应的第二键进行更新,将第二键更新后的http请求调度到同一缓存器以获取缓存数据;
55.对等网络模块peer,用于完成热点缓存数据模块与常规缓存数据模块之间缓存数据的传输。
56.优选地,还包括插件wasm,所述插件wasm内置于所述istio入口网关11,所述缓存子系统12内置于所述插件wasm;
57.所述插件wasm,用于获取所述istio入口网关11接收到的所述http请求,并将所述http请求发送给所述缓存策略器;
58.所述插件wasm,还用于在业务迁移容器之前,按预设需求搭建所述缓存子系统12;以及在业务迁移容器的过程中,在本插件wasm中加载新搭建的所述缓存子系统12。
59.优选地,所述istio入口网11关具体用于:在所有缓存器中均未查找到所述http请求相应的缓存数据的情况下或者所述缓存子系统12未开启的情况下,在预设时间周期内仅允许将首次接收到的所述http请求发送给所述envoy过滤器13;
60.所述envoy过滤器13具体用于:接收在预设时间周期内所述istio入口网关11首次接收到的所述http请求,将所述http请求转发到业务当前容器内,自业务当前容器内获取相应的数据并返回给用户;同时将获取到的数据保存在所述http请求的第二键对应的缓存器。
61.如图2所示,结合本发明的实施例,提供一种基于istio的分布式缓存方法,包括:
62.s101:在业务迁移容器的过程时,采用istio入口网关11接收用户发送的http请求,所述请求用于向业务当前容器请求数据;将接收到的所述http请求转发到缓存子系统12,以及自所述缓存子系统12未获取到相应的缓存数据或者在所述缓存子系统12未开启的情况下,将接收到的所述http请求转发给envoy过滤器;其中,所述istio入口网关设于所述容器内;
63.s102:通过缓存子系统12接收所述istio入口网关11转发的的所述http请求,基于所述http请求查找相应的缓存数据,将查找到的缓存数据返回给所述用户;或者
64.s103:通过envoy过滤器接收所述istio入口网关11转发的http请求,基于所述http请求自业务当前容器内获取数据。
65.优选地,所述缓存子系统12包括缓存策略器、至少一个缓存器,所述至少一个缓存器采用分布式部署,所述缓存策略器与各所述缓存器相连;其中:
66.步骤101中,所述采用istio入口网关11将接收到的所述http请求转发到缓存子系统12,具体包括:
67.s1011:采用所述istio入口网关11将接收到的所述http请求转发给所述缓存策略器;
68.s1012:所述缓存策略接收所述istio入口网关11转发的所述http请求,并确定所述http请求对应的缓存数据所在的目标缓存器,将所述http请求发送到所述目标缓存器。
69.优选地,还包括:
70.s104:在业务迁移容器之前,所述缓存策略器获取istio入口网关11内的http协议的头信息,将http协议的头信息作为第一键;以及,在业务迁移容器的过程中,将访问业务当前容器的http请求的url和url参数作为第一键;通过各第一键分别形成对应的第一键值对;获取所述istio入口网关11内的http协议版本;根据所述第一键值对、和/或、所述http协议版本形成第二键;将所述第二键下发到每个所述缓存器;
71.其中,所述第二键的种类至少包括如下之一:
72.将所述第一键值对的第一键作为第二键;
73.将所述第一键值对作为第二键;
74.根据正则表达式对所述第一键值对的第一键和相应的第一值进行匹配,将满足posix正则的所述第一键值对作为正则键值对,将所述正则键值对作为第二键;
75.将istio入口网关11内的http协议版本或实现http协议的软件对应的http协议版本作为第二键;
76.将http协议方法作为第二键。
77.优选地,还包括:
78.s105:在业务迁移容器之前,所述缓存器根据所述第二键自当前业务容器内获取相应的数据并保存,形成缓存数据,且将所述缓存数据作为所述第二键对应的第二值。
79.优选地,还包括:
80.s106:在业务迁移容器之前,通过所述分组模块按预设分组规则对所述第二键进行分组,形成多个键组,将同键组对应的缓存数据存储到同一缓存数据模块;其中,所述缓存数据模块包括热点缓存数据模块和常规缓存数据模块;其中,每个所述缓存器包括:分组模块、热点缓存数据模块、常规缓存数据模块、对等网络模块peer、哈希模块;
81.所述的基于istio分布式缓存方法,还包括:
82.s107:通过所述目标缓存器接收所述缓存策略器转发的所述http请求,根据所述http请求中的第二键访问对应的第二键值对,将所访问到的第二键值对的第二值返回给所述用户;
83.s108:当根据所述http请求自所述目标缓存器无法获得缓存数据时,通过所述哈希模块采用哈希算法对所述http请求对应的第二键进行更新,将第二键更新后的http请求调度到同一缓存器以获取缓存数据;
84.s109:在所述istio入口网关11将所述http请求转发给所述目标缓存器后,根据所述http请求中的第二键,通过键访问计数模块对所述第二键的访问次数累计计数;
85.s110:将访问次数小于热点次数阈值的第二键对应的缓存数据保存在所述常规缓存数据模块,并采取最少使用算法淘汰访问次数小于常规次数阈值的第二键对应的缓存数据;
86.s112:将访问次数不小于热点次数阈值的第二键对应的缓存数据作为热点缓存数
据保存在所述热点缓存数据模块,并将热点缓存数据保存时长设定为第一时长阈值;以及在采取最少使用算法计算出访问次数小于热点次数阈值的第二键的缓存数据之后,将所述访问次数小于热点次数阈值的第二键对应的缓存数据放入常规缓存数据模块;
87.s113:通过所述对等网络模块peer保持各缓存数据模块之间的链接,完成所述热点缓存数据模块与所述常规缓存数据模块之间缓存数据的传输。
88.优选地,还包括:
89.s114:通过插件wasm获取所述istio入口网关11接收到的所述http请求,并将所述http请求发送给所述缓存策略器;其中,所述插件wasm内置于所述istio入口网关11,所述缓存子系统12内置于所述插件wasm;
90.所述基于istio的分布式缓存方法,还包括:
91.s115:在业务迁移容器之前,通过所述插件wasm按预设需求搭建所述缓存子系统12;以及在业务迁移容器的过程中,在本插件wasm中加载新搭建的所述缓存子系统12。
92.优选地,所述自所述缓存子系统未获取到相应的数据或者在所述缓存子系统未开启的情况下,将接收到的所述http请求转发给envoy过滤器,具体包括:
93.在所有缓存器中均未查找到所述http请求相应的缓存数据的情况下或者所述缓存子系统未开启的情况下,在预设时间周期内仅允许将首次接收到的所述http请求发送给所述envoy过滤器;
94.通过envoy过滤器接收所述istio入口网关转发的http请求,基于所述http请求自业务当前容器内获取数据,具体包括:
95.接收在预设时间周期内所述istio入口网关首次接收到的所述http请求,将所述http请求转发到业务当前容器内,自业务当前容器内获取相应的数据并返回给用户;同时将获取到的数据保存在所述http请求的第二键对应的缓存器。
96.下面结合具体的应用实例对本发明实施例上述技术方案进行详细说明,实施过程中没有介绍到的技术细节,可以参考前文的相关描述。
97.在业务迁移容器的过程中,需要使用kubernetes编排工具部署容器服务,需要使用istio来管理服务之间的关系,需要使用istio gateway来作为七层负载均衡或者网关来管理流量的进入和出去。
98.本发明实施例为基于istio的动态web页面分布式缓存系统和方法,主要目标是基于istio的扩展机制实现对http协议的网络请求的缓存,结构较为简单。因为istio gateway处于用户与http的服务端之间,所以能够管理用户的进入行为和http服务端的出去行为。因为istio gateway所处位置的重要性,在isito gateway可以对以下一些场景进行非常有效的优化:比如特定的活动页面缓存,经常被访问的页面进行缓存,重定向到一些页面等等,这样就可以减轻http服务端的压力,减少服务器硬件资源的使用,同时因为不需要从http服务端获取数据,可以给用户提供更小的延时,带来更好的用户体验,用户可以更快的看到访问的内容。通过kuberentes+isito的方式实现业务迁移容器时的动态http服务内容的缓存。具体为在istio网关所直属的istio入口网关添加扩展来实现发送给业务迁移容器获取数据的http请求给缓存子系统,在缓存子系统未获取到相应的数据或者在缓存子系统未开启的情况下,通过envoy过滤器采集防击穿的方式自业务迁移容器内获取相应的数据,并且缓存子系统具有分组缓存。
99.如图3所示,本系统包含多个组件,每个组件负责一部分功能。
100.a.http client:http客户端(即用户)
101.如图3步骤1所示,任何支持http协议的浏览器、命令行工具等用来发起http请求,请求到达istio入口网关(istio ingress gateway,是标准的http协议网络流量的代理),请求被istio ingress gateway代理,将http请求按照一定的规则从缓存子系统或者http服务端(http服务端属于正在迁移业务的容器,业务当前容器)获取数据,然后返回给http client。
102.b.istio ingress gateway:(istio入口网关)
103.1.如图3步骤2所示,如果ingress ingress gateway判定http client的请求开启了缓存子系统,则经过wasm filter通过缓存子系统获取数据,如果没有开启缓存子系统,则如步骤3所示,经过步骤3的envoy过滤器(envoy filter)获取数据。其中,isito在配置时,对istio的virtual service配置了wams filer组件,配置web dynamic cache filter,在配置时指定是否开启缓存子系统。http client的http请求,指的是发起http request、http协议等。
104.2.提供http服务代理功能,实现对http的路由功能,支持七层http负载均衡,转换istio的网关资源,虚拟服务资源,目标规则资源,服务入口资源,工作负载组资源,工作负载入口资源等,将以上资源组合成合法的http路由等等。
105.3.通过支持配置过滤器(filter),多个filter自由组合,组合成一个过滤器组合(filter chain),绑定到http路由,实现对http路由的http请求和响应进行管理。
106.c.envoy过滤器(envoy filter):是一组envoy软件的filter(在istio ingress gateway里的内置组件)。
107.如图3步骤3所示,从上一层接收http请求,基于所述http请求自业务当前容器内获取相应的数据。
108.envoy过滤器可由多个filter组成,也可由一个filter组成,envoy过滤器包括日志filter、监控filter、tracing filter、tcp filter等等envoy软件内置的filter,这些filter互相组合,组合成一组符合业务需要的filter chain。这一组filter chain完成对http服务的处理工作,filterchain是一组filter,http request会被filter chain内所有的filter处理一次。
109.d.wasm filter(插件wasm):
110.envoy filter是软件istio ingress gateway内置的,wasm filter是envoy filter的一种,是envoy filter的扩展机制,在这个扩展机制的基础上,开发了策略缓存器(web dynamic cache filter)、缓存子系统;即策略缓存器、缓存子系统内置于所述插件wasm。但是wasm filter与步骤3所指向的envoy filter是完全平行并列的关系。
111.如图3步骤2所示,http请求从istio ingress gateway到达wasm filer,并将http请求发送给缓存策略器:
112.1.它的用于自由定制一个功能组件,来支持envoy filter不具有的一些功能,在一些特定的应用场景下对http流量进行处理。
113.2.wasm filter按需求支持多种开发语言来开发定制的filter。
114.3.相比envoy filter,能够使用任意的开发语言来开发filter,在不重启服务的
情况下可以动态的实时加载所开发搭建的缓存子系统。
115.4.wasm filter为开发框架,即提供开发实际功能的框架,让使用者可以根据需要开发自己的实际功能,比如在业务迁移容器之前,开发缓存子系统、web dynamic cache filter(web dynamic cache filter是缓存功能的核心组件)。
116.e.web dynamic cache filter:策略缓存器。
117.如图3步骤5所示,从上一步接收http请求,缓存策略器接收istio入口网关转发到wasm filter,然后wasm filter再转发的所述http请求,并确定所述http请求对应的缓存数据所在的目标缓存器,将所述http请求发送到所述目标缓存器。
118.1.根据http协议定制缓存规则
119.2.是在wasm filter的基础上开发的filter,必须依赖于wasm filter,在wasm filter框架上开发web dynamic cache filter。
120.3.使用golang语言开发本组件
121.4.缓存规则如下:
122.(1)根据http请求的头信息(header)来定制第一键key,比如header中包含key为testa的http请求全部缓存,比如header中包含了key为testa并且value为testb的请求全部命中缓存,testa表示用户。还比如header的key中包含了testa和testb,并且testa和testb的值为test1和test2的请求全部命中缓存,表示这两个key可以从cache system获取数据,cache system存储了数据,并且没有过期。通过各第一键分别形成对应的第一键值对。header是服务器以http协议传html资料到浏览器前所送出的字串,在header与html文件之间尚需空一行分隔。
123.(2)根据步骤(1)header中的key和value进行缓存策略的定制,即形成第二键;
124.规则1:将第一键值对的第一键key来作为第二键值对的第二键key。
125.规则2:将第一键值对作为第二键值对的第二键key。
126.规则3:根据posix正则表达式来匹配第一键值对的第一键key和第一值value,将满足正则表达式(posix正则)的第一键值对作为第二键值对的第二键key。
127.规则4,匹配http协议版本作为第二键值对的第二键key,将istio入口网关11内的http协议版本或实现http协议的软件对应的http协议版本作为第二键;其中,http协议是一个公开的互联网文本协议,任何实现了http协议的软件都遵循这个标准;http协议版本分为http1.0 http1.1 http2.0。
128.规则5,根据http协议的方法作为第二键值对的第二键key,其中,http协议方法指的是get、post、head方法。
129.也就是,第二键key是根据http协议中的header中的各种规范的、以及自定义的header原生第一键key、http请求的url和url参数等构成的第一键,各种有效的http协议内容来确定的。
130.(3)通过(2)的五种第二键的确定方法,使用逻辑运算来满足多场景的混合使用http协议中的各个部分来组成key的需求,得到第二键值中的第二键,将所述第二键下发到每个所述缓存器,通过第二键来构建缓存子系统的缓存。
131.f.cache system:缓存子系统
132.如图3步骤6所示,从上一步接收http请求,基于所述http请求查找相应的缓存数
据,将查找到的缓存数据返回给所述用户。
133.1.本组件的主要作用是策略缓存器传递过来的第二键key,并且在业务迁移容器之前,根据第二键自当前业务容器内获取相应的数据并保存,形成缓存数据,且将缓存数据作为第二键对应的第二值。
134.2.缓存子系统包括缓存策略器、至少一个缓存器,所述至少一个缓存器采用分布式部署,所述缓存策略器与各缓存器相连;通过目标缓存器接收所述缓存策略器转发的所述http请求,根据所述http请求中的第二键访问对应的第二键值对,将所访问到的第二键值对的第二值返回给所述用户。
135.每个缓存器包括:热点缓存数据模块(hot cache部分)、常规缓存数据模块(cache部分)、对等网络模块peer、哈希模块、分组模块等;其中,缓存子系统还包括:键访问计数模块。
136.hotcache部分:用于存储热点缓存数据,将热点缓存数据保存时长设定为第一时长阈值;采取最少使用算法将访问次数小于热点次数阈值的第二键对应的缓存数据放入常规缓存数据模块;其中,所述热点缓存数据是指访问次数不小于热点次数阈值的第二键对应的缓存数据。
137.cache部分:存储除热点缓存数据之外的缓存数据,并采取最少使用算法淘汰访问次数小于常规次数阈值的第二键对应的缓存数据。
138.键访问计数模块:在所述istio入口网关11将所述http请求转发给所述目标缓存器后,根据所述http请求中的第二键,将对所述第二键的访问次数累计计数。
139.对等网络模块peer:完成多个cache system的缓存器之间的通信,保持链接关系,执行远程的查询数据。完成热点缓存数据模块与常规缓存数据模块之间缓存数据的传输。
140.哈希模块:当根据所述http请求自所述缓存器无法获得缓存数据时,则采用哈希算法对所述http请求对应的第二键进行更新,将第二键更新后的http请求调度到同一缓存器以获取缓存数据。保证各个key从远程获取数据总是在一台peer节点上,实际就是为了通过使用key来获取缓存内容。
141.分组模块:在业务迁移容器之前,按预设分组规则对所述第二键进行分组,形成多个键组,将同键组对应的缓存数据存储到同一缓存数据模块;通过对等网络模块peer保持各缓存数据模块之间的链接,所述缓存数据模块包括热点缓存数据模块和常规缓存数据模块。也就是对缓存数据的第二键key进行人为的分组和归类。将相似的第二键key放到一起,或者将同一个类型的业务放到一起等等,人为的特定划分满足不同的使用场景。将相似的key,放到同一个缓存分组,可以提高数据查询效率,首查key所在的group,然后从group中查数据。如果没有group,直接查所有缓存,会造成对大量无关的缓存数据的查找,影响效率。
142.3.保持持数据模块group之间的peer链接关系,同步数据,保持hot cache中热数据的更新,根据cache key的访问次数决定是否需要放入hot cache。
143.4.当根据所述http请求自所述缓存器无法获得缓存数据时,则采用哈希算法对所述http请求对应的第二键进行更新,将第二键更新后的http请求调度到同一缓存器以获取缓存数据。也就是本地如果没有缓存数据,则从peer ip中选取一个获取数据。peer ip指的是与本地系统相对的的远程地址的ip,远程与本地一起组成了分布式缓存系统。
144.5.防击穿模块sigle flight,用于在所有缓存器中均未查找到所述http请求相应的缓存数据的情况下或者在所述缓存子系统未开启的情况下,则在预设时间周期内仅允许首次接收到的所述http请求穿透所述envoy过滤器到业务当前容器内,自业务当前容器内获取相应的数据并返回给用户;同时将获取到的数据保存在所述http请求的第二键对应的缓存器。也就是实现如果本地没有缓存、通过peer也没有获取到缓存数据的情况下,仅允许预设时间内的一个http请求穿透envoy过滤到后端(业务当前容器)获取数据,目的在于防止没有缓存数据的情况下,对后端的http服务造成大量访问,从而造成服务的崩溃。具体解释为:一个http请求是指一个http客户端发起的请求http服务器后端的请求,所允许的http请求是指第一个到达服务器后端的,且请求的数据在缓存器中不存在,则需要将这个http请求传递到后端真实的http服务器后端,也就是真实提供服务的模块获取数据,将获取到数据之后返回给http客户端,同时在缓存器中也存储一份数据,方便下一个同样的请求直接从缓存器获取数据。
145.g.pod(sidecar):
146.如图3步骤4和步骤7所示,接收http请求,并返回相应的数据:
147.1.pod是承载http服务的最小单元,是业务当前容器,一组带有sidecar的pod组成了一个http服务,用来提供web服务,供互联网用户访问,获取网页等数据。
148.2.sidecar提供了http服务的代理功能,可以选择开启sidecar和不开启sidecar,在开启sidecar的情况下具有filter chain能力来对http流量进行处理,开启之后对http服务的总体性能有影响,不开启情况下不具有filter chain能力,具有最佳的http响应性能。
149.本发明实施例所取得的有益效果如下:
150.1、支持kuberentes+isito实现动态对业务迁移容器内的http服务内容的缓存,在业务迁移容器时,能够快速、简单的对业务所在的kubernetes和istio上提供的http服务内容进行缓存。而现有技术基于kuberentes和istio无动态内容缓存,也不能支持kuberentes+isito实现动态http服务内容的缓存。
151.2、支持在istio网关上添加扩展,通过istio网关配置来定义istio入口网关的行为,实现istio入口网关和istio网关配合使用。
152.3、根据kubernetes和istio上提供的http服务,实现分组缓存的功能。
153.4、kubernetes和istio上提供的http缓存服务,能实现对业务当前容器的防击穿功能。
154.应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
155.在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要比清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
156.为使本领域内的任何技术人员能够实现或者使用本发明,上面对所公开实施例进行了描述。对于本领域技术人员来说;这些实施例的各种修改方式都是显而易见的,并且本文定义的一般原理也可以在不脱离本公开的精神和保护范围的基础上适用于其它实施例。因此,本公开并不限于本文给出的实施例,而是与本技术公开的原理和新颖性特征的最广范围相一致。
157.上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
158.本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
159.本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(asic),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
160.本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd-rom或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于asic中,asic可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
161.在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任
何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、dvd、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
162.以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1