предисловие
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 проект