一种基于istio的分布式缓存系统及方法技术方案

技术编号:36188981 阅读:16 留言:0更新日期:2022-12-31 20:59
本发明专利技术实施例提供一种基于istio的分布式缓存系统及方法,包括:istio入口网关,用于在业务迁移容器的过程中,接收用户发送的http请求,http请求用于向业务当前容器请求数据;将接收到的http请求转发给缓存子系统,或者将接收到的http请求转发给envoy过滤器;缓存子系统,用于接收istio入口网关转发的http请求,基于http请求查找相应的缓存数据,并返回给用户;envoy过滤器,用于接收istio入口网关转发的http请求,基于http请求自业务当前容器内获取相应的数据。通过采用kuberentes上具有的isito,实现http服务内容的动态缓存,构建程序简单,成本低。成本低。成本低。

【技术实现步骤摘要】
一种基于istio的分布式缓存系统及方法


[0001]本专利技术涉及容器部署,具体涉及一种基于istio的分布式缓存系统及方法。

技术介绍

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

技术实现思路

[0003]本专利技术实施例提供一种基于istio的分布式缓存系统及方法,在业务迁移容器的过程中,通过采用kuberentes上具有的isito,实现http服务内容的动态缓存,构建程序简单,成本低。
[0004]为达上述目的,一方面,本专利技术实施例提供一种基于istio的分布式缓存系统,包括:
[0005]istio入口网关,用于在业务迁移容器的过程中,接收用户发送的http请求,所述http请求用于向业务当前容器请求数据;将接收到的所述http请求转发给缓存子系统,以及自所述缓存子系统未获取到相应的缓存数据或者在所述缓存子系统未开启的情况下时,将接收到的所述http请求转发给envoy过滤器;其中,所述istio入口网关设于所述容器内;
[0006]所述缓存子系统,用于接收所述istio入口网关转发的所述http请求,基于所述http请求查找相应的缓存数据,将查找到的缓存数据返回给所述用户;
[0007]所述envoy过滤器,用于接收所述istio入口网关转发的所述http请求,基于所述http请求自业务当前容器内获取相应的数据。
[0008]另一方面,本专利技术实施例提供一种基于istio的分布式缓存方法,包括:
[0009]在业务迁移容器的过程时,采用istio入口网关接收用户发送的http请求,所述请求用于向业务当前容器请求数据;将接收到的所述http请求转发到缓存子系统,以及自所述缓存子系统未获取到相应的缓存数据或者在所述缓存子系统未开启的情况下,将接收到的所述http请求转发给envoy过滤器;其中,所述istio入口网关设于所述容器内;
[0010]通过缓存子系统接收所述istio入口网关转发的的所述http请求,基于所述http请求查找相应的缓存数据,将查找到的缓存数据返回给所述用户;或者
[0011]通过envoy过滤器接收所述istio入口网关转发的http请求,基于所述http请求自业务当前容器内获取数据。
[0012]上述技术方案具有如下有益效果:因为istio网关处于用户与http请求数据的业务迁移容器之间,所以在业务迁移容器的过程中,通过利用kuberentes上具有的isito入口网关转发http请求,当缓存子系统开启时,将http请求转发给缓存子系统,在缓存子系统未
获取到相应的数据或者在所述缓存子系统未开启的情况下,将http请求转发给envoy过滤器,通过envoy过滤器从自业务当前容器内获取相应的数据。采用isito入口网关就能够实现http服务内容的动态缓存,构建程序简单,成本低。
附图说明
[0013]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0014]图1是本专利技术实施例的基于istio的分布式缓存系统的结构示意图;
[0015]图2是本专利技术实施例的基于istio的分布式缓存方法的流程示意图;
[0016]图3是本专利技术实施例的另一基于istio的分布式缓存方法的流程示意图。
具体实施方式
[0017]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0018]本专利技术涉及的技术术语释义如下:
[0019]Kubernetes:一种容器编排管理工具
[0020]kubernetes之上的应用:使用kubernetes部署的服务,如nginx服务,mysql服务等等。
[0021]kubernetes资源:比如deployment,server,ingress等等,这些是用来在kubernetes之上部署业务用的
[0022]kubernetes生态软件:比如prometheus监控系统,alert manager报警系统,helm管理工具等等
[0023]istio是一种开源软件;连接、安全加固、控制和观察服务的开放平台,目前比较流行的微服务管理软件
[0024]istio gateway,是http协议的client端和server端的代理,简单结构。
[0025]Envoy:一种支持tcp udp http grpc协议的代理软件
[0026]Pod:kubernetes最小的调度单元,包含1个或多个容器
[0027]istio ingress gateway,是标准的http协议网络流量的代理
[0028]容器:容器映像是一个软件的轻量级独立可执行软件包,包含运行它所需的一切:代码,运行时,系统工具,系统库,设置等等,容器是容器影响中程序的运行状态。
[0029]Cache高速缓冲存储器
[0030]Filter被称作过滤器或者拦截器
[0031]single flight防止缓存击穿
[0032]如图1所示,结合本专利技术的实施例,提供一种基于istio的分布式缓存系统,包括:
[0033]istio入口网关11,用于在业务迁移容器的过程中,接收用户发送的http请求,所
述http请求用于向业务当前容器请求数据;将接收到的所述http请求转发给缓存子系统,以及自所述缓存子系统未获取到相应的缓存数据或者在所述缓存子系统未开启的情况下,将接收到的所述http请求转发给envoy过滤器13;其中,所述istio入口网关11设于所述容器内;
[0034]所述缓存子系统12,用于接收所述istio入口网关11转发的所述http请求,基于所述http请求查找相应的缓存数据,将查找到的缓存数据返回给所述用户;
[0035]所述envoy过滤器13,用于接收所述istio入口网关11转发的所述http请求,基于所述http请求自业务当前容器内获取相应的数据。
[0036]优选地,所述缓存子系统12包括缓存策略器、至少一个本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于istio的分布式缓存系统,其特征在于,包括:istio入口网关,用于在业务迁移容器的过程中,接收用户发送的http请求,所述http请求用于向业务当前容器请求数据;将接收到的所述http请求转发给缓存子系统,以及自所述缓存子系统未获取到相应的缓存数据或者在所述缓存子系统未开启的情况下,将接收到的所述http请求转发给envoy过滤器;其中,所述istio入口网关设于所述容器内;所述缓存子系统,用于接收所述istio入口网关转发的所述http请求,基于所述http请求查找相应的缓存数据,将查找到的缓存数据返回给所述用户;所述envoy过滤器,用于接收所述istio入口网关转发的所述http请求,基于所述http请求自业务当前容器内获取相应的数据。2.根据权利要求1所述的基于istio的分布式缓存系统,其特征在于,所述缓存子系统包括缓存策略器、至少一个缓存器,所述至少一个缓存器采用分布式部署,所述缓存策略器与各所述缓存器相连,其中:所述istio入口网关,用于将接收到的所述http请求转发给所述缓存策略器;所述缓存策略器,用于接收所述istio入口网关转发的所述http请求,并确定所述http请求对应的缓存数据所在的目标缓存器,将所述http请求发送到所述目标缓存器。3.根据权利要求2所述的基于istio的分布式缓存系统,其特征在于,所述缓存策略器,还用于在业务迁移容器之前,获取istio入口网关内的http协议的头信息,将http协议的头信息作为第一键;以及,在业务迁移容器的过程中,将访问业务当前容器的http请求的url和url参数作为第一键;通过各第一键分别形成对应的第一键值对;获取所述istio入口网关内的http协议版本;根据所述第一键值对、和/或、所述http协议版本形成第二键;将所述第二键下发到每个所述缓存器;其中,所述第二键的种类至少包括如下之一:将所述第一键值对的第一键作为第二键;将所述第一键值对作为第二键;根据正则表达式对所述第一键值对的第一键和相应的第一值进行匹配,将满足posix正则的所述第一键值对作为正则键值对,将所述正则键值对作为第二键;将istio入口网关内的http协议版本或实现http协议的软件对应的http协议版本作为第二键;将http协议方法作为第二键。4.根据权利要求3所述的基于istio的分布式缓存系统,其特征在于,所述缓存器,还用于在业务迁移容器之前,根据所述第二键自当前业务容器内获取相应的数据并保存,形成缓存数据,且将所述缓存数据作为所述第二键对应的第二值。5.根据权利要求4所述的基于istio的分布式缓存系统,其特征在于,所述系统还包括键访问计数模块,其中:所述目标缓存器,用于接收所述缓存策略器转发的所述http请求,根据所述http请求中的第二键访问对应的第二键值对,将所访问到的第二键值对的第二值返回给所述用户;所述键访问计数模块,用于在所述istio入口网关将所述http请求转发给所述目标缓存器后,根据所述http请求中的第二键,将对所述第二键的访问次数累计计数;每个所述缓存器,包括:
分组模块:用于在业务迁移容器之前,按预设分组规则对所述第二键进行分组,形成多个键组,将同键组对应的缓存数据存储到同一缓存数据模块;通过对等网络模块peer保持各缓存数据模块之间的链接,所述缓存数据模块包括热点缓存数据模块和常规缓存数据模块;所述热点缓存数据模块,用于存储热点缓存数据,将热点缓存数据保存时长设定为第一时长阈值;采取最少使用算法将访问次数小于热点次数阈值的第二键对应的缓存数据放入常规缓存数据模块;其中,所述热点缓存数据是指访问次数不小于热点次数阈值的第二键对应的缓存数据;所述常规缓存数据模块,用于存储除热点缓存数据之外的缓存数据,并采取最少使用算法淘汰访问次数小于常规次数阈值的第二键对应的缓存数据;哈希模块,用于当根据所述http请求自所述缓存器无法获得缓存数据时,则采用哈希算法对所述http请求对应的第二键进行更新,将第二键更新后的http请求调度到同一缓存器以获取缓存数据;对等网络模块peer,用于完成热点缓存数据模块与常规缓存数据模块之间缓存数据的传输。6.根据权利要求2所述的基于istio的分布式缓存系统,其特征在于,还包括插件wasm,所述插件wasm内置于所述istio入口网关,所述缓存子系统内置于所述插件wasm;所述插件wasm,用于获取所述istio入口网关接收到的所述http请求,并将所述http请求发送给所述缓存策略器;所述插件wasm,还用于在业务迁移容器之前,按预设需求搭建所述缓存子系统;以及在业务迁移容器的过程中,在本插件wasm中加载新搭建的所述缓存子系统。7.根据权利要求5所述的基于istio的分布式缓存系统,其特征在于,所述istio入口网关具体用于:在所有缓存器中均未查找到所述http请求相应的缓存数据的情况下或者所述缓存子系统未开启的情况下,在预设时间周期内仅允许将首次接收到的所述http请求发送给所述envoy过滤器;所述envoy过滤器具体用于:接收在预设时间周期内所述istio入口网关首次接收到的所述http请求,将所述http请求转发到业务当前容器内,自业务当前容器内获取相应的数据并返回给用户;同时将获取到的数据保存在所述http请求的第二键对应的缓存器。8.一种基于istio的分布式缓存方法,其特征在于,包括:在业务迁移容器的过程时,采用istio入口网关接收用户发送的http请求,所述请求用于向业务当前容器请求数据;将接收到的所述http请求转发到缓存子系统,以及自所述缓存...

【专利技术属性】
技术研发人员:王洪磊马超
申请(专利权)人:新浪网技术中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1