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