Kubernetes 原生服务发现
Kubernetes 本身具备(服务端)服务发现能力(参见:kubernetes.io/docs/concepts/services-networking/service/#discovering-services)。使用原生的 Kubernetes 服务发现可以确保与其他工具的兼容性,例如 Istio(istio.io),这是一个能够实现负载均衡、熔断器、故障转移等功能的服务网格。
调用方服务随后只需引用在特定 Kubernetes 集群中可解析的名称。一个简单的实现可能使用引用完全限定域名(FQDN)的 Spring RestTemplate,例如 [\{service-name}.\{namespace}.svc.\{cluster}.local:\{service-port}](https://{service-name}.{namespace}.svc.{cluster}.local:{service-port})。
此外,您还可以使用 Hystrix 实现:
-
在调用方实现熔断器,通过在Spring Boot应用类上添加
@EnableCircuitBreaker注解 -
降级功能,通过在相应方法上添加
@HystrixCommand(fallbackMethod=注解