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=
注解