首页> 博客> SpringCloud入门系列之Eureka注册中心
17 07 2020

Eureka注册中心

一、Eureka注册中心
1.1、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 https://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>2.1.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.codesofun</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>Greenwich.SR3</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-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>
1.2、application.properties中添加配置
#eureka默认端口号
server.port=8761
#实例名称,provider-service 是eureka底层服务,本身不具备任何业务功能,它是给注册中心提供服务的
eureka.instance.appname=provider-service
#主机名:域名
eureka.instance.hostname=localhost
#客户端默认连接的区域url
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
#是否向eureka中进行注册
eureka.client.register-with-eureka=false
#当前启动的微服务是否自动向注册中心获取其它微服务的注册地址
eureka.client.fetch-registry=false
1.3、启动类上添加注解@EnableEurekaServer
package com.codesofun.eurekaserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer //开启eureka服务
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}
二、Eureka客户端(服务消费者)
2.1、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 https://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>2.1.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.codesofun</groupId>
    <artifactId>eureka-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-client</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR3</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</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.2、application.properties中添加配置
#服务端口号
server.port=8081
#(应用名称)微服务名称,唯一
spring.application.name=order-service
#eureka客户端服务注册中心地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
2.3、启动类上添加注解@EnableEurekaClient
package com.codesofun.eurekaclient;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient //开启eureka客户端服务
public class EurekaClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class, args);
    }
}
三、Eureka名词概念
3.1、Eureka组成

Eureka Register Service(注册中心服务端)、Provider Service(服务提供者,客户端)、Consumer Service(服务消费者,客户端)

3.2、Eureka相关名词解释

Register

  • 服务注册, 向Eureka Service进行注册登记服务

Renew

  • 服务续约,30秒/次心跳包健康检查.90秒未收到,剔除服务

Fetch Registries

  • 获取服务注册列表,获取其他微服务地址

Cancel

  • 服务下线, 某个微服务通知注册中心暂停服务

Eviction

  • 服务剔除,90秒未续约,从服务注册表进行剔除

备注:

Eureka自我保护机制:Eureka在运行期去统计心跳失败率在15分钟之内是否低于 85%,若低于,则会将这些实例保护起来,让这些实例不会被剔除。建议如果非网络波动问题,可关闭自我保护机制。只需注册中心服务端添加配置eureka.server.enable-self-preservation=false

四、Eureka高可用配置
4.1、Eureka高可用方案

4.2、配置高可用

跟单机Eureka Server差不多,只是Eureka Server端配置中eureka.client.service-url.defaultZone注册地址需要分别指向另外的Eureka Server 注册地址(这里url中需要使用域名才可以)。这里启用不同端口的配置文件代表不同的Eureka Server服务注册中心。如下:

application-8761.properties

server.port=8761
eureka.instance.appname=provider-service
eureka.instance.hostname=server1
#指向另一个eureka server注册地址
eureka.client.service-url.defaultZone=http://server2:8762/eureka/,http://server3:8763/eureka/
eureka.client.fetch-registry=false
eureka.server.enable-self-preservation=false

application-8762.properties

server.port=8762
eureka.instance.appname=provider-service
eureka.instance.hostname=server2
#指向另一个eureka server注册地址
eureka.client.service-url.defaultZone=http://server1:8761/eureka/,http://server3:8763/eureka/
eureka.client.fetch-registry=false
eureka.server.enable-self-preservation=false

application-8763.properties

server.port=8763
eureka.instance.appname=provider-service
eureka.instance.hostname=server3
#指向另一个eureka server注册地址
eureka.client.service-url.defaultZone=http://server1:8761/eureka/,http://server2:8762/eureka/
eureka.client.fetch-registry=false
eureka.server.enable-self-preservation=false

Eureka Client客户端(微服务)中,配置eureka.client.service-url.defaultZone指向所有的Eureka Server注册地址即可完成Eureka高可用的配置

#服务端口号
server.port=8081
#(应用名称)微服务名称,唯一
spring.application.name=order-service
#eureka客户端服务注册中心地址,高可用,多个注册地址之间使用,
eureka.client.service-url.defaultZone=http://server1:8761/eureka/,http://server2:8761/eureka/,http://server3:8763/eureka/
4.3、微服务指标监控

Actuator监控组件

  • 自动为微服务创建一系列的用于监控的端点

  • 在SpringBoot自带,SpringCloud进行扩展

  • pom.xml依赖spring-boot-starter-actuator

可配置端点:

# * 开启所有端点  shutdown端点-- POST请求
management.endpoints.web.exposure.include=health,info,env,beans,shutdown
#显示完整的应用健康数据
management.endpoint.health.show-details=always
#允许可以重启端点,慎用
management.endpoint.shutdown.enabled=true

详细代码见仓库:https://gitee.com/xmlvhy/springcloud-learn 参考链接:https://www.itlaoqi.com/

类似文章

  1. SpringCloud入门系列之配置中心
  2. SpringCloud入门系列之服务链路追踪Sleuth&Zipkin
  3. SpringCloud入门系列之微服务之间的通信
  4. Redis 客户端常用命令
  5. SpringCloud入门系列之API网关

评论区

| 0 评论

还没有评论,快来抢沙发吧!