SpringCloud регистрации обслуживания и открытия Eureka + клиент Feign

  предисловие

  SpringCloud лидеры микро-сервис, лучший план этажа.

  Eureka в качестве центра регистрации, является одним из наиболее важных ключевых компонентов системы SpringCloud.

  Симулировать аннотированный с помощью интерфейса вызова службы с Eureka можно добиться балансировки нагрузки.

  источник

  GitHub

  окружающая среда

  JDK 1.8.0 +

  Maven 3.0 +

  SpringBoot 2.0.3

  SpringCloud Finchley.RELEASE

  Средства разработки

  IntelliJ IDEA

  текст

  проект Обще

  Проект Обще - POM файл

  XSI: SchemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  4.0.0

  com.zwc

  springcloud-Эврика-Обще

  1,0

  springcloud-Эврика-Обще

  общественные работы

  яс

  UTF-8,

  1,8

  Каир-SR3

  Finchley.RELEASE

  io.spring.platform

  Платформа-бом

  $ {Платформы bom.version}

  П

  Импортировать

  org.springframework.cloud

  весна-облако-зависимость

  $ {Весна-облако dependencies.version}

  П

  Импортировать

  org.springframework.boot

  весна-загрузка Maven-плагин

  Некоторые общие зависимости от конфигурации

  Обще проект - Структура проекта

  проект службы

  Есть четыре модуля в этом проекте: регистрация центр, два поставщика и потребители

  Реестр-сервис (Registry)

  Реестр-сервис - POM файл

  XSI: SchemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  4.0.0

  com.zwc

  springcloud-Эврика-сервис

  1,0

  com.zwc

  springcloud-Эврика-регистрация-сервис

  0.0.1-SNAPSHOT

  springcloud-Эврика-регистрация-сервис

  реестр

  яс

  com.zwc

  springcloud-Эврика-Обще

  1,0

  org.springframework.cloud

  весна-облако-стартер-Netflix-Эврика-сервер

  org.springframework.boot

  весна-загрузка Maven-плагин

  В основном добавляют весенне-облако-стартер-Netflix-Eureka-сервер зависит

  Реестр-Сервис - application.yml профиль

  # Порт

  сервер:

  порт: 8761

  # Имя приложения

  весна:

  приложение:

  Имя: eurka-сервер

  эврика:

  пример:

  # Ip вместо того, чтобы использовать имя экземпляра

  предпочитают-IP-адрес: верно

  Примеры имени хоста #

  Имя хоста: $ {spring.cloud.client.ip-адрес}

  Правило # Идентификатор экземпляра

  Экземпляр-идентификатор: $ {spring.cloud.client.ip-адрес}: $ {spring.application.name}: $ {server.port}

  клиент:

  # Ли регистрироваться в центре регистрации

  registerWithEureka ложь

  # Ли, чтобы получить информацию о регистрации в реестре

  fetchRegistry ложь

  ServiceUrl:

  # Центр регистрации Адрес

  defaultZone: HTTP: // $ {eureka.instance.hostname}: $ {server.port} / Эврика /

  При этом используется порт по умолчанию 8761, конечно, может измениться, но открытие зарегистрированного адреса центральной части вызова службы порта, чтобы быть в соответствии с ним

  Реестр-сервис - начать класс

  пакет com.zwc;

  импорт org.springframework.boot.SpringApplication;

  импорт org.springframework.boot.autoconfigure.SpringBootApplication;

  импорт org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

  @SpringBootApplication

  @EnableEurekaServer

  общественный класс SpringcloudEurekaRegistryServiceApplication {

  государственной статической силы основных (String [] арг) {

  SpringApplication.run (SpringcloudEurekaRegistryServiceApplication.class, арг);

  }

  }

  Добавить @EnableEurekaServer класс запуска аннотацию указывает, что данный проект является зарегистрированным центром

  Реестр-сервис - для запуска проекта

  Посетите HTTP 1. Начало успеха проекта: // локальный: 8761 / увидеть главную страницу эврика-сервера

  Провайдер (поставщик)

  Поставщик - POM файл

  XSI: SchemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  4.0.0

  com.zwc

  springcloud-Эврика-providerfirst-сервис

  1,0

  com.zwc

  springcloud-Эврика-providerfirst-сервис-жильный

  1,0

  springcloud-Эврика-providerfirst-сервис-жильный

  Один поставщик инжиниринговых услуг - Core

  яс

  com.zwc

  springcloud-Эврика-Обще

  1,0

  com.zwc

  springcloud-Эврика-providerfirst-сервис-апи

  1,0

  org.springframework.cloud

  весна-облако-стартер-Netflix-Эврика-клиент

  org.springframework.boot

  весна-загрузка Maven-плагин

  В основном добавляют весенне-облако-стартер-Netflix-Eureka-клиент-зависимый

  Поставщик - application.yml профиль

  # Порт

  сервер:

  порт: 8090

  # Имя приложения

  весна:

  приложение:

  Имя: скажем, привет

  эврика:

  пример:

  # Ip вместо того, чтобы использовать имя экземпляра

  предпочитают-IP-адрес: верно

  Примеры имени хоста #

  Имя хоста: $ {spring.cloud.client.ip-адрес}

  Правило # Идентификатор экземпляра

  Экземпляр-идентификатор: $ {spring.cloud.client.ip-адрес}: $ {spring.application.name}: $ {server.port}

  клиент:

  ServiceUrl:

  # Центр регистрации Адрес

  defaultZone: HTTP: // $ {} eureka.instance.hostname: 8761 / Эврика /

  Здесь следует отметить, настройки реестра адрес порта порт выше 8761 настроен проект реестра

  Есть два потребитель проекта, единственный порт несовместимых здесь, где порт 8090, а другой порт для 8091. Не пойду

  Два потребитель инжиниринговой роли для достижения эффекта балансировки нагрузки

  spring.application.name: имя приложения, потребители должны использовать, называется

  Провайдер - контроллер дистальная контроллер

  пакет com.zwc.providerfirst.controller;

  импорт org.springframework.beans.factory.annotation.Value;

  импорт org.springframework.web.bind.annotation.RequestMapping;

  импорт org.springframework.web.bind.annotation.RestController;

  / **

  * @ClassName SayHelloController

  * @Desc TODO Say Hello

  * @Date 2019/5/15 15:28

  * @Version 1,0

  * /

  @RestController

  общественный класс SayHelloController {

  / *

  * @ClassName SayHelloController

  * @Desc TODO считывает файл конфигурации порта

  * @Date 2019/5/15 15:49

  * @Version 1,0

  * /

  @Value ( "$ {server.port}")

  частный Струнный порт;

  / *

  * @ClassName SayHelloController

  * @Desc TODO Say Hello

  * @Date 2019/5/15 15:30

  * @Version 1,0

  * /

  @RequestMapping ( "/ привет")

  Строка общественного привет () {

  Возвращение "Hello Spring Cloud !!! порт:" + порт;

  }

  }

  Предоставление услуги: Здравствуйте и выходные порты

  Провайдер - начало класс

  пакет com.zwc;

  импорт org.springframework.boot.SpringApplication;

  импорт org.springframework.boot.autoconfigure.SpringBootApplication;

  импорт org.springframework.cloud.netflix.eureka.EnableEurekaClient;

  @SpringBootApplication

  @EnableEurekaClient

  общественный класс SpringcloudEurekaProviderfirstServiceCoreApplication {

  государственной статической силы основных (String [] арг) {

  SpringApplication.run (SpringcloudEurekaProviderfirstServiceCoreApplication.class, арг);

  }

  }

  Добавить комментарий @EnableEurekaClient указывает, что этот проект может обеспечить обслуживание в реестр

  Provider - запустить проект

  Посетите HTTP 1. Начало успеха проекта: // локальный: 8090 / привет видеть содержимое вывода 'Hello Spring Cloud !!! порт: 8090'

  2. Обновить HTTP: // локальный: 8761 / (реестр) можно увидеть услуги зарегистрировано пришли

  3. Кроме того, есть поставщик порт работает только противоречивым, но и запустить

  Посетите HTTP 4. После того, как проект был начат успешно: // локальный: 8091 / привет видеть содержимое вывода 'Hello Spring Cloud !!! порт: 8091'

  5. Обновить снова HTTP: // локальный: 8761 / (реестр) можно увидеть один и тот же поставщик услуг имеются два

  Потребитель (потребитель)

  Потребитель - POM файл

  XSI: SchemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  4.0.0

  com.zwc

  springcloud-Эврика-потребитель-сервис

  1,0

  com.zwc

  springcloud-Эврика-потребитель-сервис-жильный

  1,0

  springcloud-Эврика-потребитель-сервис-жильный

  Проект Быта - Core

  яс

  com.zwc

  springcloud-Эврика-Обще

  1,0

  com.zwc

  springcloud-Эврика-потребитель-сервис-апи

  1,0

  org.springframework.cloud

  весна-облако-стартер-Netflix-Эврика-клиент

  org.springframework.cloud

  весна-облако-стартер-openfeign

  org.springframework.boot

  весна-загрузка Maven-плагин

  В соответствии с поставщиком услуг, потребность в весенне-облако стартер-Netflix-эврика-клиент-зависимый

  Кроме того, необходимо добавить Feign начать зависимую пружинную облако-стартер-openfeign

  Потребитель - application.yml профиль

  # Порт

  сервер:

  порт: 8080

  # Имя приложения

  весна:

  приложение:

  Имя: Сервис-симулировать

  эврика:

  пример:

  # Ip вместо того, чтобы использовать имя экземпляра

  предпочитают-IP-адрес: верно

  Примеры имени хоста #

  Имя хоста: $ {spring.cloud.client.ip-адрес}

  Правило # Идентификатор экземпляра

  Экземпляр-идентификатор: $ {spring.cloud.client.ip-адрес}: $ {spring.application.name}: $ {server.port}

  Клиент: Уси гинекологические больницы http://www.ytsg120.cn/

  ServiceUrl:

  # Центр регистрации Адрес

  defaultZone: HTTP: // $ {} eureka.instance.hostname: 8761 / Эврика /

  Здесь следует отметить, настройки реестра адрес порта порт выше 8761 настроен проект реестра

  spring.application.name: имя приложения, необходимо использовать, называется потребитель, он также может потребляться в то же время потребление

  Потребитель - Сервисный вызов

  пакет com.zwc.consumer.api.feign;

  импорт org.springframework.cloud.openfeign.FeignClient;

  импорт org.springframework.web.bind.annotation.RequestMapping;

  / **

  * @ClassName FeignApi

  * @Desc TODO с помощью Feign Апи вызова - Интерфейс

  * @Date 2019/5/15 16:11

  * @Version 1,0

  * /

  @FeignClient ( "говорят-привет")

  открытый интерфейс FeignApi {

  / *

  * @ClassName FeignApi

  * @Desc TODO вызов / привет имя службы метод сказать, привет

  * @Date 2019/5/15 16:17

  * @Version 1,0

  * /

  @RequestMapping ( "/ привет")

  Строка привет ();

  }

  Какие услуги через @FeignClient ( «говорит-привет») аннотация указать вызов

  сказать-привет является поставщиком spring.application.name: Имя приложения

  Строка привет ();: может быть найден, этот метод состоит в создании способа, с помощью SayHelloController в, только чтобы быть определены здесь в качестве интерфейса

  Обратите внимание, что провайдер должен вернуть то же значение, один и тот же метод и то же имя параметра

  Потребитель - контроллер дистального контроллер

  пакет com.zwc.consumer.controller;

  импорт com.zwc.consumer.api.feign.FeignApi;

  импорт org.springframework.beans.factory.annotation.Autowired;

  импорт org.springframework.web.bind.annotation.RequestMapping;

  импорт org.springframework.web.bind.annotation.RestController;

  импорт javax.annotation.Resource;

  / **

  * @ClassName FeignController

  * @Desc TODO с помощью Feign Апи вызова - Front Controller

  * @Date 2019/5/15 16:18

  * @Version 1,0

  * /

  @RestController

  общественный класс FeignController {

  @Autowired (обязательно = ложь)

  частный FeignApi feignApi;

  / *

  * @ClassName FeignController

  * @Desc метод TODO вызов Say Hello

  * @Date 2019/5/15 16:20

  * @Version 1,0

  * /

  @RequestMapping ( "/ симулировать")

  Строка общественного симулировать () {

  вернуть feignApi.hello ();

  }

  }

  Используйте @Autowired комментарий сборки Bean, Бин вызывает службу по этому методу в

  Такое воздействие на внешний интерфейс вызова фактически является поставщиком услуг

  Потребитель - начало класса

  пакет com.zwc;

  импорт org.springframework.boot.SpringApplication;

  импорт org.springframework.boot.autoconfigure.SpringBootApplication;

  импорт org.springframework.cloud.netflix.eureka.EnableEurekaClient;

  импорт org.springframework.cloud.openfeign.EnableFeignClients;

  @SpringBootApplication

  @EnableEurekaClient

  @EnableFeignClients

  общественный класс SpringcloudEurekaConsumerServiceCoreApplication {

  государственной статической силы основных (String [] арг) {

  SpringApplication.run (SpringcloudEurekaConsumerServiceCoreApplication.class, арг);

  }

  }

  Добавить комментарий @EnableEurekaClient указывает, что этот проект может обеспечить обслуживание в реестр

  Добавить @EnableFeignClients примечания указывают на функцию Притвориться для удаленных вызовов

  Потребитель - начать проект

  1. После успеха проекта началась несколько визитов к HTTP: // локальный: 8080 / симулировать

  2. Вы можете найти альтернативный выход 'Hello Spring Cloud !!! порт: 8090' и 'Hello Spring Cloud !!! порт: 8091'

  3. На этом этапе был достигнут балансировкой нагрузки эффекта

  4. Обновить снова HTTP: // локальный: 8761 / (реестр) можно увидеть в это время больше, чем потребитель

  Проект службы - Структура проекта

  Многофункциональный проект IntelliJ IDEA Open

  Проект от GitHub загружены на локальный

  Открыть IDEA IntelliJ

  Нажмите Файл -> Открыть

  Откройте загруженный в локальный каталог проекта

  springcloud-эврика -> springcloud-Эврика-сервис (выберите, чтобы открыть этот проект)

  После открытия проекта службы

  Нажмите снова Файл -> Project Structrue

  Выберите модули, нажмите на знак «+»

  Нажмите Import Module

  Или откройте загруженный в локальный каталог проекта

  springcloud-эврика -> springcloud-Эврика-Обще -> pom.xml

  Нажмите кнопку ОК

  Нажмите кнопку Далее, Готово

  Нажмите кнопку Применить, OK

  распространение

  CentOS7 используется докер простой развертывания SpringCloud проект


рекомендация

отblog.51cto.com/14335413/2425144