在服务网格体系结构中,从服务a到服务B的调用必须通过中心组件进行



假设我们有以下设置:

  • 服务A由Kubernetes集群中的一个pod组成,该集群包含两个容器Api ASidecar Api A通过Sidecar Aidecar A已注册为消费者。

  • 服务B由Kubernetes集群中的一个pod组成,该集群包含两个容器Api Bidecar BApi B通过Sidecar Bidecar B已注册为生产商。

服务A服务器B可能有多个实例。

服务通过一个中央机构向服务网格注册,我们称之为服务发现,它知道每个服务的特定实例及其公开的端点服务A还可以通过服务发现中央机构订阅服务B的特定端点。(中央机构也处理安全、代币和证书,但我想简化(

Sidecar ASidecar B定期与服务发现进行沟通,以确认可用性。

服务A应如何调用业务B的端点:

  • 直接通过特定url,因为Sidecar a应该通过服务发现了解Service B的实例,并且应该选择一个健康的实例
  • 或者通过调用服务发现的通用api间接调用,该api应该知道可以调用哪些健康实例,并相应地将请求重定向到其中一个实例
  • 还是以其他方式

我发现推荐的方法是服务A通过特定的URL直接调用端点B,因为Sidecar A应该通过服务发现了解服务B的实例,并且应该选择一个健康的实例。服务发现的目的只是:允许服务被发现。它不应充当调用之间的代理。

最新更新