Spring Cloud Combat Series (1) — регистрация и обнаружение сервисов Eureka

Spring Cloud

Связанный

  1. Spring Cloud Combat Series (1) — регистрация и обнаружение сервисов Eureka

  2. Spring Cloud Combat Series (2) — клиентский вызов + лента

  3. Spring Cloud Combat Series (3) — Декларативное притворство клиента

  4. Боевая серия Spring Cloud (4) - Fuse Hystrix

  5. Spring Cloud Combat Series (5) — Service Gateway Zuul

  6. Spring Cloud Combat Series (6) — Распределенный центр конфигурации Spring Cloud Config

  7. Spring Cloud Combat Series (7) — отслеживание служебных ссылок Spring Cloud Sleuth

  8. Spring Cloud Combat Series (8) — Мониторинг микросервисов Spring Boot Admin

  9. Spring Cloud Combat Series (9) — Аутентификация и авторизация службы Spring Cloud OAuth 2.0

  10. Практическая серия 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 и построения микросервисов»

Статьи по Теме

  1. Spring Cloud Combat Series (1) — регистрация и обнаружение сервисов Eureka

  2. Spring Cloud Combat Series (2) — клиентский вызов + лента

  3. Spring Cloud Combat Series (3) — Декларативные клиентские вызовы Feign


Добро пожаловать в технический публичный аккаунт: Zero One Technology Stack

零壹技术栈

Эта учетная запись будет продолжать делиться сухими товарами серверных технологий, включая основы виртуальных машин, многопоточное программирование, высокопроизводительные фреймворки, асинхронное ПО, промежуточное ПО для кэширования и обмена сообщениями, распределенные и микросервисы, материалы для обучения архитектуре и расширенные учебные материалы и статьи.