В чем разница между EnableEurekaClient и EnableDiscoveryClient?

105

Я видел, что в некоторых приложениях люди используют EnableEurekaClient. И некоторые другие примеры приложений используют EnableDiscoveryClient.

Есть ли разница между этими двумя?

Юнцзян Чжан
источник

Ответы:

181

Существует несколько реализаций "Discovery Service" (eureka, consul , zookeeper ). @EnableDiscoveryClientживет в spring-cloud-commons и выбирает реализацию в пути к классам. @EnableEurekaClientживет в spring-cloud-netflix и работает только для эврики. Если эврика находится на вашем пути к классам, они фактически одинаковы.

Spencergibb
источник
Вопрос: Будут ли обе упомянутые выше аннотации включать перехватчик с поддержкой ленты, внедренный в RestTemplate? Есть ли разница в поведении? Я заметил, что в предыдущих реализациях Spring Cloud применялся @LoadBalancedавтоматически, но в текущей версии это требуется явно. Спасибо.
fg78nc
1
Да. Нет никакой разницы. Аннотации с балансировкой нагрузки требовались уже давно.
spencergibb
4
Зачем кому-то нужно использовать @EnableEurekaClient вместо более общего @EnableDisocveryClient? Разве это не свяжет их с реализацией эврики и не затруднит переключение бэкэндов SD в будущем?
Адам Хьюз
3
Да. Единственный ответ - если они хотят быть ясными и применять эврику.
spencergibb
3

Концепция сервиса обнаружения в облаке Spring реализована по-разному, например, Eureka, consul, zookeeper и т. Д. Если вы используете Eureka от Netflix, то @EnableEurekaClient специально для этого. Но если вы используете любое другое обнаружение служб, включая Eureka, вы можете использовать @EnableDiscoveryClient.

Чинмай Бисвал
источник
1

С точки зрения практичности и простоты, если зарегистрированный центр - эврика, то @EnableEurekaClientрекомендуется. Если это другой центр регистрации, @EnableDiscoveryClientрекомендуется.

Мед Хассона Эль
источник