• Spring Cloud


    Eureka服务注册与发现

    想巩固一下学习过的Spring Cloud 的各项知识,特此巩固,如果有总结错的地方欢迎指出。

    • SpringCloud
      Finchley.RELEASE
    • SpringBoot
      2.0.2.RELEASE

    Eureka是服务注册与发现,是CS架构模式,分为服务端和客户端两端

    <?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>
    
        <groupId>com.amber</groupId>
        <artifactId>cloud</artifactId>
        <packaging>pom</packaging>
        <version>1.0-SNAPSHOT</version>
        <modules>
            <module>eureka</module>
            <module>mall-consumer</module>
        </modules>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.2.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
    ds
    
        <properties>
            <maven.complier.target>1.8</maven.complier.target>
            <maven.complier.source>1.8</maven.complier.source>
            <java.version>1.8</java.version>
            <spring.boot.version>2.0.2.RELEASE</spring.boot.version>
            <spring.cloud.version>Finchley.RELEASE</spring.cloud.version>
        </properties>
    
        <repositories>
            <repository>
                <id>spring-snapshots</id>
                <name>Spring Snapshots</name>
                <url>https://repo.spring.io/libs-snapshot</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
    
        <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>
    
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>${spring.boot.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
                <!-- https://mvnrepository.com/artifact/org.springframework/springloaded -->
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>springloaded</artifactId>
                    <version>1.2.5.RELEASE</version>
                </dependency>
    
                <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-devtools</artifactId>
                    <version>2.0.5.RELEASE</version>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
    
        <build>
            <finalName>${project.version}</finalName>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                </resource>
            </resources>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <configuration>
                        <delimiters>
                            <delimit>$</delimit>
                        </delimiters>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    父工程 pom.xml

    Eureka-Server

    <!--eureka-server服务端 -->
            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </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>

    启动类加上@EnableEurekaServer代表这是服务端

    package com.amber;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaApplication.class, args);
        }
    }

    配置文件application.yml

    server:
      port: 7001
    
    spring:
      application:
        name: eureka-server
    
    eureka:
      instance:
        hostname: eureka7001.com
      client:
        #eureka不注册自己
        registerWithEureka: false
        #不从eureka中读取数据
        fetchRegistry: false
        serviceUrl:
          #集群
          defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

    访问: http://eureka7001.com:7001/

    
    

    http://eureka7002.com:7002/

    http://eureka7003.com:7003/

    同理,只需要修改

    server:
      port: 7002
    
    eureka:
      instance:
        hostname: eureka7002.com

    Eureka-Client

    <?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>cloud</artifactId>
            <groupId>com.amber</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>mall-consumer</artifactId>
    
        <dependencies>
            <!--eureka-server服务端 -->
            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </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>
    
        </dependencies>
    
    </project>
    pom.xml
      <dependencies>
            <!--eureka-server服务端 -->
            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </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>
    
        </dependencies>

    application.yml

    server:
      port: 9001
    
    spring:
      application:
        name: consumer-9001
    
    eureka:
      client:
        serviceUrl:
          defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

    在配置文件里面也需要添加eureka集群,表示当前服务可以注册要哪些eureka服务中

    启动类

    package com.amber;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    
    @SpringBootApplication
    @EnableEurekaClient
    public class ConsumerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ConsumerApplication.class, args);
        }
    }

    启动类加上@EnableEurekaClient(只能用于eureka客户端)可以被eureka发现,也可以用@EnableDiscoveryClient(可以被其他服务注册中心发现,包括eureka)。

    再次访问http://eureka7001.com:7001/

    可以发现consumer-9001以及被注册了

    小知识

    在使用eureka的时候,会遇到一下的标识。这不是配置出错,是Eureka的自我保护。服务过长时间没有心跳

  • 相关阅读:
    关于cookies、sessionStorage和localStorage解释及区别
    冒泡排序到demo
    关于Spring配置文件提示的插件下载
    js动态获取浏览器或页面等容器的宽高
    16JavaScript for循环
    15JavaScript switch语句
    14JavaScript条件语句
    第一天 评分卡模型
    SQL面试50题
    第七章-模型评估
  • 原文地址:https://www.cnblogs.com/amberbar/p/10095827.html
Copyright © 2020-2023  润新知