Kubernetes 原生服务发现

Kubernetes 本身能够进行(服务器端)服务发现(参见:kubernetes.io/docs/concepts/services-networking/service/#discovering-services)。使用原生的 Kubernetes 服务发现可以确保与其他工具(例如 Istio (istio.io))的兼容性,Istio 是一个能够进行负载均衡、断路器、故障转移等等的服务网格。

然后,调用者服务只需要引用在特定 Kubernetes 集群中可解析的名称即可。一个简单的实现可以使用一个 spring RestTemplate,它引用一个完全限定域名 (FQDN),例如 {service-name}.{namespace}.svc.{cluster}.local:{service-port}

此外,您可以使用 Hystrix 来:

  • 在调用方实现断路器,方法是在 Spring Boot 应用程序类上添加@EnableCircuitBreaker 注解

  • 实现回退功能,方法是在相应的方法上添加@HystrixCommand(fallbackMethod= 注解