【技术实现步骤摘要】
一种基于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入 ...
【技术保护点】
【技术特征摘要】
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请求转发到缓存子系统,以及自所述缓存...
【专利技术属性】
技术研发人员:王洪磊,马超,
申请(专利权)人:新浪网技术中国有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。