SpringCloud(一) 注册中心Eureka配置

Eureka是Netflix提供的开源产品,用于服务注册和发现的注册中心。是SpringCloud体系的重要核心组件。

 

背景


 

注册中心是管理各种服务的一个服务模块 ,在一个分布式微服务系统中,通过注册中心对其他服务进行注册发现熔断负载降级等处理,以实现整个分布式微服务系统的平稳、高效的运行。

 

服务A调用服务B

普通系统服务间调用:

注册中心系统中调用:

 

 

原理


 

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现。Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server,并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。Spring Cloud 的一些其他模块(比如Zuul)就可以通过 Eureka Server 来发现系统中的其他微服务,并执行相关的逻辑。

Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。

 

Eureka的基本架构:

 

1、Eureka Server :提供服务注册和发现;

2、Service Provider:提供服务,将自身注册到Eureka,便于消费都调用;

3、Service Consumer:消费服务,从Eureka获取服务列表,以调用服务;

 

案例


 1. eureka项目结构:

 

 

(1).springcloud_eureka父项目的pom文件 (就做一个版本的控制)

<?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.3.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <groupId>com.cc8w</groupId>
    <artifactId>springcloud_eureka</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>springcloud_eureka</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring.cloud-version>Hoxton.SR8</spring.cloud-version>
    </properties>
    <!-- 版本控制 -->
    <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>

    <dependencies>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

  <modules>
    <module>eureka_server</module>
    <module>eureka_a</module>
  </modules>
</project>

 

(2) eureka_server注册中心的pom文件

<?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>com.cc8w</groupId>
        <artifactId>springcloud_eureka</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <artifactId>eureka_server</artifactId>
    <name>eureka_server</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.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-config</artifactId>
        </dependency>
        <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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 

2. application.properties(可以采用yml形式)配置如下:

# 服务名
spring.application.name=cloud-eureka-server
# 服务端口
server.port=8761

# 指示此实例是否应将其信息注册到eureka服务器以供其他人发现。在某些情况下,您不希望发现实例,而您只想发现其他实例。
eureka.client.register-with-eureka=true
# 指示该客户端是否应从eureka服务器获取eureka注册表信息。
eureka.client.fetch-registry=true

eureka.client.service-url.defaultZone=http://localhost:8761/eureka,http://127.0.0.1:8761/eureka


# 关闭服务保护机制
eureka.server.enable-self-preservation=false
# 清理无效节点时间间隔(单位毫秒,默认是60*1000)
eureka.server.eviction-interval-timer-in-ms=30000

#每30S给其他服务发次请求,监测心跳
eureka.instance.lease-renewal-interval-in-seconds: 30
#如果其他服务没心跳,90S后剔除该服务
eureka.instance.lease-expiration-duration-in-seconds: 90

 

 3.项目主类的内容:

package com.cc8w;

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

@SpringBootApplication
@EnableEurekaServer //启用注册中心
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }

}

5.运行项目后,在本地浏览器访问:http://localhost:8761/ 即可看到注册中心页面,至此,最简单的eureka注册中心完成。

注意:我这里 http://localhost:9000/eureka/ 打不开 !! 不知原因

 

 

 

 

 

 

转: https://www.cnblogs.com/weigm/p/9523962.html

 

posted @ 2020-11-23 16:33  与f  阅读(598)  评论(0编辑  收藏  举报