我们通常使用消息传递来向解耦的服务发送消息。这使得服务发现不再是问题,因为(例如,使用 RabbitMQ 中的 AMQP)您可以使用代理的路由功能将消息分派到正确的队列以提供正确的服务。负载平衡也由消息代理处理。
进入 Kubernetes。
在谈论服务复制和重新生成失败的服务时,通常会布置用例,即当您的客户端使用一些活动协议(如 http)来联系服务时,即使该服务异步处理请求也是如此。在这种情况下,拥有复制控制器是很自然的,它管理一组服务和一个入口点以在它们之间进行负载平衡。
我喜欢 kubernetes 直观的概念,比如滚动部署,但是如何控制这些没有 http 接口的野兽呢?
更新: 我不想建立一个消息代理集群。我将消息消费者视为服务。服务客户端不直接连接到服务,它们将消息发送到消息代理。消息代理在某种程度上充当负载平衡器,并将消息分派给订阅的队列消费者。这些消费者实现服务。
我的问题围绕着这样一个事实,即演示中的大多数使用模式都处理通过 http 调用的服务,而 kubernetes 在这里做得很好,可以为这些服务创建服务代理和复制控制器。是否可以为我的这种服务创建复制控制器,它本身没有 http 接口,并具有滚动更新和最少实例的所有好处?