在Kubernetes中的多个服务实例之间同步HTTP请求
我们有一个具有多个副本的服务,它可以在没有事务和阻塞方法的情况下使用存储。因此,我们需要通过某种“切分”键在多个实例之间同步并发请求。现在,我们在Kubernetes环境中将此服务作为复制集托管 你难道不知道任何简单的开箱即用的方法如何做到这一点,而不是从头开始实现它吗 以下是我们关于如何做到这一点的一些想法:在Kubernetes中的多个服务实例之间同步HTTP请求,kubernetes,microservices,Kubernetes,Microservices,我们有一个具有多个副本的服务,它可以在没有事务和阻塞方法的情况下使用存储。因此,我们需要通过某种“切分”键在多个实例之间同步并发请求。现在,我们在Kubernetes环境中将此服务作为复制集托管 你难道不知道任何简单的开箱即用的方法如何做到这一点,而不是从头开始实现它吗 以下是我们关于如何做到这一点的一些想法: 将服务部署为StatefulSet,并实现一些代理API,通过从HTTP请求中切分密钥将流量路由到此StatefulSet中的特定pod。在这种情况下,所有应该同步的请求都将由一个实例处
提前非常感谢 另一种方法是将消息队列(如Kafka和RabbitMq)放在您的服务前面。 然后,您的POD将订阅MQ主题/流。pod将决定是否处理该消息 另外,尝试查看服务网格,如或。
他们可能会为您的用例提供OOTB解决方案,尽管我找不到。请记住,网络策略不是流量路由 POD是无状态的,彼此无法区分 我建议您使用Istio。它有一个特殊的组成部分,负责或派遣特使。它是一个在C++中开发的高性能代理,用于服务网格中所有服务的所有入站和出站业务。 有用文章: Istio文档: 有用的Istio解释 但您应该能够为每个客户组创建一个部署,并为每个部署创建一个服务。应能够告知Ingress nginx根据与特定客户群服务相关的任何属性映射传入请求 另一个解决方案是使用 Kube路由器可以作为代理或Pod(通过守护程序)在每个节点上运行,并利用标准的Linux技术iptables,ipvs/lvs,ipset,iproute2. Kube路由器使用Linux内置的IPVS/LVS技术来提供L4负载平衡。每个ClusterIP、NodePort和LoadBalancer Kubernetes服务类型都配置为IPVS虚拟服务。每个服务端点都配置为虚拟服务的真实服务器。标准ipvsadm工具可用于验证配置和监视活动连接 工作原理: