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 用于:

  • 在调用方实现断路器,方法是使用 @EnableCircuitBreaker 注释 Spring Boot 应用程序类

  • 回退功能,方法是使用 @HystrixCommand(fallbackMethod= 注释相应的方法