Kubernetes k8s/istio-什么';s是服务之间HTTP缓存的替代方案,而特使不';你不支持吗?

Kubernetes k8s/istio-什么';s是服务之间HTTP缓存的替代方案,而特使不';你不支持吗?,kubernetes,istio,envoyproxy,Kubernetes,Istio,Envoyproxy,我正在寻找Kubernetes中服务之间可缓存数据的快速HTTP响应 因为我的应用程序已经是容器本机的,所以我不想在我的应用程序中编写缓存逻辑,也不想通过缓存库编写。这些应用程序主要关注业务逻辑 我搜索了如何在服务之间配置缓存,但没有找到任何Istio配置来实现这一点,只是特使存储库和这些正在进行的相关PRs中存在一个问题:,还有这个和这个 在问题页面的第一条评论中,有人提到他们正在使用Nginx作为代理来缓存一些API调用。但我不知道这是否是正确的选择 有没有一种更简单的方法来实现网格中的HT

我正在寻找Kubernetes中服务之间可缓存数据的快速HTTP响应

因为我的应用程序已经是容器本机的,所以我不想在我的应用程序中编写缓存逻辑,也不想通过缓存库编写。这些应用程序主要关注业务逻辑

我搜索了如何在服务之间配置缓存,但没有找到任何Istio配置来实现这一点,只是特使存储库和这些正在进行的相关PRs中存在一个问题:,还有这个和这个

在问题页面的第一条评论中,有人提到他们正在使用Nginx作为代理来缓存一些API调用。但我不知道这是否是正确的选择


有没有一种更简单的方法来实现网格中的HTTP缓存

最近,我们开发了一个使用istio和golang缓存服务到服务通信的解决方案

该解决方案称为“反向代理侧车缓存”

基本上,您可以在pod中部署另一个容器(即缓存容器)。您还可以通过istio的VirtualService为pod配置路由规则。您在VirtualService中指定的请求首先进入缓存容器,它会检查缓存存储并返回响应(如果存在数据),否则会将请求代理到应用程序容器

整体设计如下所示:

例如,这里有一个istio VirtualService yaml,它将所有get请求路由到缓存容器(在9191端口上运行):

在这里你可以找到我们写的关于它的文章:


这是项目存储库:

特使团队已经合并了相关的PRs,但当时似乎还不能完全使用(例如,使用redis)。
存在一个
SimpleHttpCache
,但它尚未准备好生产:

介绍:

Istio目前不支持HTTP内容缓存。正如你在问题中提到的,Nginx用于此。您可以查看nginx以了解更多信息。也是一种常见的反向缓存proxy@PiotrMalec说,你可以使用nginxcaching@ethanxyz_0这些评论回答了你的问题吗?你还有这个问题吗?@matt_j不太可能。特使缓存筛选器已合并,但当时不完全可用。我最终直接在应用程序中对redis访问进行了编码
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: foo
spec:
  gateways:
  - foo-gateway
  hosts:
  - foo
  http:
  - match:
    - method:
        exact: GET
    route:
    - destination:
        host: foo
        port:
          number: 9191
  - route:
    - destination:
        host: foo
        port:
          number: 8080