Eureka (registro de serviço e descoberta) entrada simples

Eureka (registro e descoberta de serviço)

Um, conhecimento básico Eureka

1, que governança de serviços?

A camada inferior do SpringCloud encapsula o módulo Eureka desenvolvido pela Netflix para implementar a governança de serviço. Na estrutura de chamada remota RPC tradicional, é mais complicado gerenciar as dependências entre cada serviço, portanto, a governança do serviço é necessária. Gerenciar as dependências entre serviços e serviços, que podem ser alcançadasChamada de serviço, balanceamento de carga, tolerância a falhas, etc.Implementar descoberta e registro de serviço

2. Qual registro e descoberta de serviço?

Eureka adota a arquitetura de design do CS. O Eureka Server atua como o servidor para a função de registro de serviço. É o centro de registro de serviço. Outros serviços no sistema usam o cliente Eureka para se conectar ao servidor Eureka e manter uma conexão de pulsação. Desta forma, os mantenedores do sistema podem usar o Eureka Server para monitorar se cada microsserviço no sistema está operando normalmente.

No registro e descoberta do serviço, existe um registro. Quando o servidor for iniciado, ele registrará as informações atuais de seu próprio servidor (por exemplo: endereço de serviço, endereço de comunicação, etc.) no registro na forma de um alias. A outra parte (consumidor / provedor de serviços) usa o alias para obter o endereço de comunicação de serviço real do registro e, em seguida, implementa chamadas RPC locais e chamadas RPC remotas. A ideia central do design da estrutura está no registro, porque o registro é usado para gerenciar as dependências entre cada serviço (Conceito de governança de serviço) Em qualquer estrutura remota RPC, haverá um registro (usado para armazenar informações relacionadas ao endereço do serviço, como o endereço da interface ).

Insira a descrição da imagem aqui

3. Dois componentes do Eureka (Eureka Server e Eureka Client)

A) Servidor Eureka (fornece registro de serviço)

Após cada nó de microsserviço ser iniciado por meio da configuração, ele será registrado no EurekaServer, para que o registro de serviço no EurekaServer armazene todas as informações do nó de serviço disponíveis, e as informações do nó de serviço podem ser vistas diretamente na página.

B) Cliente Eureka (acessado por meio do registro)

É um cliente Java usado para simplificar a interação do Eureka Server.O cliente também possui um balanceador de carga integrado que usa um algoritmo de carga round-Robin. Depois que o aplicativo for iniciado, uma pulsação será enviada ao servidor Eureka (o período padrão é 30 segundos). Se o Eureka Server não receber a pulsação de um nó em vários ciclos de pulsação (90 segundos por padrão), o Eureka Server removerá o nó de serviço do registro de serviço.

Em segundo lugar, construa um Eureka autônomo

1. Crie um microsserviço (cloud-eureka-server7001)

2. Adicionar dependência 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">
    <parent>
        <artifactId>cloud2020</artifactId>
        <groupId>com.xuan.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloud-eureka-server7001</artifactId>


    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
        <!--这里是eureka-server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

        <!--公共的包依赖管理(如:公共的Entity(Bean)实体类包..)-->
        <dependency>
            <groupId>com.xuan.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
        <!--开发热部署工具包,方便开发中代码测试(修改Java代码服务器会自动发布重启)-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>

    </dependencies>
</project>

3. Crie um arquivo yml para configuração (deve ser configurado estritamente de acordo com a sintaxe yml)

server:
  port: 7001

eureka:
  instance:
    hostname: eureka7001.com #eureka服务端的实例名称
  client:
    register-with-eureka: false  #false表示不向注册中心注册自己。
    fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
        #单机就是7001自己
      defaultZone: http://eureka7001.com:7001/eureka/

4. Inicie o microsserviço a partir do método principal da classe de inicialização principal, insira o endereço para acessar: http: // localhost: 7001 /

Insira a descrição da imagem aqui

Terceiro, crie um microsserviço e registre-o no EurekaServer

1. Crie um microsserviço (cloud-provider-payment8001)

2. Adicionar dependência 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">
    <parent>
        <artifactId>cloud2020</artifactId>
        <groupId>com.xuan.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloud-provider-payment8001</artifactId>

    <dependencies>
        <!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>

        <!--mysql-connector-java-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--jdbc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>com.xuan.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!--热部署工具-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--这里是eureka-client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

</project>

3. Crie um arquivo yml para configuração (deve ser configurado estritamente de acordo com a sintaxe yml)

server:
  port: 8001


spring:
  application:
    name: cloud-payment-service
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource            # 当前数据源操作类型
    driver-class-name: org.gjt.mm.mysql.Driver              # mysql驱动包
    url: jdbc:mysql://localhost:3306/db2019?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: root


mybatis:
  mapperLocations: classpath:mapper/*.xml
  type-aliases-package: cn.xuan.springcloud.entities    # 所有Entity别名类所在包

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      #单机版
      defaultZone: http://eureka7001.com:7001/eureka
  instance:
    instance-id: payment8001
    #访问路径可以显示IP地址
    prefer-ip-address: true
      #Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
    lease-renewal-interval-in-seconds: 1
    #Eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除服务
    lease-expiration-duration-in-seconds: 2

4. Inicie o microsserviço a partir do método principal da classe de inicialização principal, observe no registro e insira o endereço para acessar: http: // localhost: 7001 /

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_45496190/article/details/107430171
Recomendado
Clasificación