(提前为菜鸟的问题道歉;我没有使用DevOps的经验。)
在我最近的项目中,我偶然发现了这个问题,我不知道服务发现工具(如Consul/Istio/等)可以寻址。
我们的用例是这样的:我们有一个想法类似于不一致的VoIP应用程序。用户可以加入语音通道并开始通话。然而,要在同一语音通道中的用户之间转发语音数据包,他们的WebRTC语音连接需要由同一服务器进程处理,以便我们可以在内存中处理和转发语音通道中的所有语音数据包。
为此,我们在语音服务(服务V)前面有一个单独的服务(称为服务X),它接收用户加入通道N的请求,并根据N将服务V中的服务器分配给用户。我们需要保证对于相同的信道N,X总是在V中选择相同的服务器。
我们以一种不可伸缩的方式实现了这一点,只是为了快速构建原型。现在我们想要正确地实现这一点,我想知道像Consul/Istio/等工具是否可以在这种情况下帮助我们。有没有解决这类问题的通用方法?
发布于 2019-08-03 08:04:51
Istio不一定能帮到你,因为它更多的是关于controlling traffic的。例如,进行金丝雀部署或对您的服务应用安全性。引用自docs
DNS Istio不提供
解析。应用程序可以尝试通过使用其选择的平台中存在的DNS服务来解析FQDN,例如kube-dns。
您可以通过DNS for Services and Pods使用标准的Kubernetes服务发现。或者就像你提到的,你可以使用Consul作为服务发现工具,使用Consul的额外好处是,因为它不是特定于Kubernetes的,所以您也可以潜在地用于Kubernetes集群之外的服务或其他Kubernetes集群中的服务。
因为听起来像是你的初始连接来来去去,所以它听起来像是为了让谁加入哪个通道,以及哪个通道与什么后端对话,你需要在某个地方保持状态,比如数据库,或者键值存储。
https://stackoverflow.com/questions/57333830
复制相似问题