Связанный
-
Spring Cloud Combat Series (1) — регистрация и обнаружение сервисов Eureka
-
Spring Cloud Combat Series (3) — Декларативное притворство клиента
-
Spring Cloud Combat Series (6) — Распределенный центр конфигурации Spring Cloud Config
-
Spring Cloud Combat Series (7) — отслеживание служебных ссылок Spring Cloud Sleuth
-
Spring Cloud Combat Series (8) — Мониторинг микросервисов Spring Boot Admin
-
Spring Cloud Combat Series (9) — Аутентификация и авторизация службы Spring Cloud OAuth 2.0
-
Практическая серия Spring Cloud (10) — Единый вход JWT и Spring Security OAuth
предисловие
Spring Cloud
в упаковкеNetflix
разработан компаниейEureka
модуль для реализацииРегистрация и обнаружение службы.Eureka
УсыновленныйC-S
изАрхитектура дизайна.Eureka Server
в видеРеестр услуг, в системеДругие микросервисы,использоватьEureka
изклиентПодключен кEureka Server
, и пройтисвязь сердцебиенияслужба тестированияСостояние выживания.
текст
-
Eureka Server: в видеРеестр услуг,поставкаРегистрация и обнаружение службы.
-
Eureka Client: все зарегистрированы наСервисный центруслуга.
-
Service Provider: Пучоксобственный сервисзарегистрироваться на
Eureka Server
,Так чтопотребитель услугможно найти. -
Service Consumer: от
Eureka Server
ПолучатьСписок регистрации службы, чтобы можно былобытовое обслуживание.
-
1. Создайте сервисный реестр
Создайте2
ПредметыModule
,ОдинModule
(которыйSpring Boot
) работает какРеестр услуг,СейчасEureka Server
, другой какEureka Client
.
Eureka Server
Проект после созданияpom.xml
Файлы следующие:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>io.ostenant.github.springcloud</groupId>
<artifactId>eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-server</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Dalston.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2. Запустите реестр службы
Eureka
ЯвляетсяВысокая доступностькомпонент, это невнутренний кеш. КаждыйпримерПосле регистрации вам необходимовыбор времениВ направленииРегистрационный центрОтправитьсердцебиение(чтобы это можно было сделать в памяти). по умолчаниюEureka Server
такжеEureka Client
, необходимо указатьServer
. Прежде чем начать, сначалаEureka Server
настроитьapplication.yml
документ.
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
- eureka.client.register-with-eureka:
Укажите, использовать ли себя в качествеEureka Client
зарегистрироваться наEureka Server
, По умолчаниюtrue
.
- eureka.client.fetch-registry
Установить ли изEureka Server
Получатьрегистрационное сообщение, По умолчаниюtrue
. Поскольку этот пример являетсяЕдиная точкаизEureka Server
,ненужныйСинхронизироватьразноеEureka Server
данные узла, поэтому установитеfalse
.
- eureka.client.service-url.defaultZone
установлен сEureka Server
изИнтерактивный адрес,Запросирегистрационная службаВсе зависит от этого адреса, если их несколько, вы можете использоватьразделенные запятой.
а затем аннотировать@EnableEurekaServer
Добавить вSpring Boot
Класс запуска проектаApplication
выше:
@EnableEurekaServer
@SpringBootApplication
public class EurekaserverApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaserverApplication.class, args);
}
}
Eureka Server
Есть интерфейс, после запуска проекта откройте браузер для доступаhttp://localhost:8761
смотреть.
3. Создайте поставщика услуг
когдаEureka Client
В направленииEureka Server
положить началорегистр, это обеспечивает некоторыеметаданные,Напримерхозяинипорти Т. Д.Eureka Server
с каждогоEureka Client
экземпляр получитьСообщение сердцебиения. еслитайм-аут сердцебиения, то экземпляр обычно меняется сEureka Server
удалено в.
Создаватьservice-hi
изModule
, после созданияpom.xml
следующее:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>io.ostenant.github.springcloud</groupId>
<artifactId>service-hi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>service-hi</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Dalston.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-cloud-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
пройти черезаннотация @EnableEurekaClient
показать себяEureka Client
.
@SpringBootApplication
@EnableEurekaClient
@RestController
public class ServiceHiApplication {
@Value("${server.port}")
private String port;
public static void main(String[] args) {
SpringApplication.run(ServiceHiApplication.class, args);
}
@RequestMapping("/hi")
public String home(@RequestParam String name) {
return "Hi " + name + ", I am from port: " + port;
}
}
Только@EnableEurekaClient
недостаточно, необходимо такжеконфигурационный файлотмечено вРеестр услугадрес,application.yml
Файл конфигурации выглядит следующим образом:
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
server:
port: 8763
spring:
application:
name: service-hi
Eureka
клиентнеобходимо указатьspring.application.name
, для обслуживанияУникально идентифицирует,между службамиВзаимные звонки будут основаны на этомname
.
Запуск и доступEureka Server
адресhttp://localhost:8761
, вы обнаружите, что имя службыSERVICE-HI
, порт7862
, зарегистрированоEureka Server
в списке.
3. Высокодоступный сервер Eureka
вРаспределенные системысередина,Реестр услугявляется наиболее важной фундаментальной частью и должна быть вможет оказывать услугистатус. чтобы сохранить своюДоступность,использоватькластерявляется хорошим решением.
Eureka
через узелодноранговая регистрацияспособ достиженияВысокодоступное развертывание, поэтому просто нужно для каждогоEureke Server
настроитьдругие доступные Eureke Server
изserviceUrl
, вы можете добиться развертывания высокой доступности.
spring:
profiles:
active: peer1 #peer2
---
spring:
profiles: peer1
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
serviceUrl:
defaultZone: http://localhost:8762/eureka/
---
spring:
profiles: peer2
server:
port: 8762
eureka:
instance:
hostname: localhost
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
ИзменятьEureka Server
конфигурационный файл, а затем отдельноspring.profiles.active=peer1
иspring.profiles.active=peer2
В качестве аргумента начните дваждыEureka Server
Вот и все.
-
доступ
http://localhost:8761/
. Его можно найти,Eureka Client
уже кНомер портаза8761
изEureka Server
Инициировать регистрацию. -
поставщики услугизконфигурационный файлнеНомер портаза
8762
изEureka Server
регистр. доступhttp://localhost:8762/
. Его можно найти,поставщики услугинформация отправлена на8762
Инициировать регистрацию, т.8761
изрегистрационное сообщениесинхронизировано с8762
узел.
Ссылаться на
- Фан Чжипэн «Глубокое понимание Spring Cloud и построения микросервисов»
Статьи по Теме
-
Spring Cloud Combat Series (1) — регистрация и обнаружение сервисов Eureka
-
Spring Cloud Combat Series (3) — Декларативные клиентские вызовы Feign
Добро пожаловать в технический публичный аккаунт: Zero One Technology Stack
Эта учетная запись будет продолжать делиться сухими товарами серверных технологий, включая основы виртуальных машин, многопоточное программирование, высокопроизводительные фреймворки, асинхронное ПО, промежуточное ПО для кэширования и обмена сообщениями, распределенные и микросервисы, материалы для обучения архитектуре и расширенные учебные материалы и статьи.