EnableEurekaClient 和 EnableDiscoveryClient 有什么区别?

What's the difference between EnableEurekaClient and EnableDiscoveryClient?

在某些应用程序中,我看到人们正在使用 EnableEurekaClient。其他一些示例应用程序正在使用 EnableDiscoveryClient。

这两个有什么区别吗?

"Discovery Service"(eureka、consul, zookeeper). @EnableDiscoveryClient lives in spring-cloud-commons and picks the implementation on the classpath. @EnableEurekaClient lives in spring-cloud-netflix 有多种实现,并且仅适用于 eureka。如果 eureka 在您的类路径中,它们实际上是相同的。

spring 云中的发现服务概念以不同的方式实现,例如 Eureka、consul、zookeeper 等。如果您使用 Netflix 的 Eureka,那么 @EnableEurekaClient 专门用于此。但是,如果您使用任何其他服务发现,包括 Eureka,您可以使用 @EnableDiscoveryClient。

从实用性和简洁性来说,如果注册中心是eureka,那么推荐@EnableEurekaClient。如果是其他注册中心,建议@EnableDiscoveryClient

@EnableEurekaClient 仅适用于 Eureka 如果我们使用 @EnableDiscoveryClient 我们可以使用除 Eureka 之外的任何发现客户端,例如 Consul

@EnableEurekaCient 将使用 eureka 服务器启动服务发现,就像明确指定使用 EUREKA

@EnableDiscovery Client 将使用类路径中可用的 jar 注册发现服务,例如 consul、Eureka、Kubernetes。