SpringCloud之Eureka简单入门(单机版)

1. 环境准备

(1)首先创建一个父工程spring-cloud-parent;
(2)子工程Eureka服务端EurekaServer9000,port指定为9000;
(3)子工程微服务提供者micro-service-provider,port指定为7001;
(4)子工程微服务消费者ms-consumer-user-8001,port指定为8001;

2. 父工程spring-cloud-parent的pom文件

主要是为了固定springboot的版本以及springcloud组件的版本。

<?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>org.example</groupId>
  <artifactId>spring-cloud-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <modules>
    <module>EurekaServer9000</module>
    <module>ms-consumer-user-8001</module>
    <module>micro-service-provider</module>
  </modules>
  <packaging>pom</packaging>

  <name>spring-cloud-parent Maven Webapp</name>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.6.RELEASE</version>
    <relativePath/>
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Finchley.SR2</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>

3. 子工程Eureka服务端配置

三步走:
(1)pom文件引入spring-cloud-starter-netflix-eureka-server
(2)主启动类上添加@EnableEurekaServer注解
(3)配置application.properties文件

详解:

3.1 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>spring-cloud-parent</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>EurekaServer9000</artifactId>
    <packaging>war</packaging>
    <name>EurekaServer9000 Maven Webapp</name>
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--Eureka的服务端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

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

3.2 主启动类上添加@EnableEurekaServer注解

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication.run(EurekaServerApplication.class,args);
    }
}

3.3 application.properties文件

# 服务端口
server.port=9000
# 表示是否将自己注册到Eureka Server,默认是true,由于当前应用为Eureka Server,故而设为false
eureka.client.register-with-eureka=false
# 表示是否从Eureka Server获取注册信息,默认为true,由于这是一个单点Eureka Server,不需要同步其它的Eureka Server节点的数据,故而设立false
eureka.client.fetch-registry=false
# 告知Eureka Client注册地址
# http://${
    
    eureka.instance.hostname}:${
    
    server.port}/eureka/   ----修改了hosts文件
eureka.client.service-url.defaultZone=http://localhost:9000/eureka/

3.4 启动浏览器查看

在这里插入图片描述

4. 服务提供者micro-service-provider

四步走:
(1)pom文件引入spring-cloud-starter-netflix-eureka-client
(2)主启动类上添加@EnableDiscoveryClient注解
(3)服务提供者提供服务功能
(4)配置application.properties文件

详解:

4.1 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>spring-cloud-parent</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>micro-service-provider</artifactId>
    <packaging>war</packaging>

    <name>micro-service-provider Maven Webapp</name>

    <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.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

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

4.2 主启动类上添加@EnableDiscoveryClient注解

@SpringBootApplication
@EnableDiscoveryClient
public class MicroServiceProviderApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication.run(MicroServiceProviderApplication.class, args);
    }
}

4.3 提供服务功能

controller包下:

@RestController
public class ServiceController {
    
    

    @RequestMapping(value = "/hello")
    public String testEureka() {
    
    
        return "hello,this is micro-service-provider,using 7001 port!";
    }
}

4.4 application.properties文件

server.port=8001
# 注册到Eureka服务端的微服务名称
spring.application.name=ms-consumer-user
# 注册到Eureka服务端的地址
eureka.client.service-url.defaultZone=http://localhost:9000/eureka/
# 点击具体的微服务,右下角是否显示ip
eureka.instance.prefer-ip-address=true
# 显示微服务的名称
eureka.instance.instance-id=ms-consumer-user-8001

4.5 启动浏览器

在这里插入图片描述

5. 服务消费者ms-consumer-user-8001

四步走:
(1)pom文件引入spring-cloud-starter-netflix-eureka-client
(2)主启动类上添加@EnableDiscoveryClient注解
(3)服务消费者调用服务提供者的服务
(4)配置application.properties文件

详解:

5.1 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>spring-cloud-parent</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ms-consumer-user-8001</artifactId>
    <packaging>war</packaging>

    <name>ms-consumer-user-8001 Maven Webapp</name>

    <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.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

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

5.2 主启动类上添加@EnableDiscoveryClient注解

@SpringBootApplication
@EnableDiscoveryClient
public class MsConsumerUser8001Application {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(MsConsumerUser8001Application.class, args);
    }
}

5.3 服务消费者调用服务提供者的功能

这里添加一下消费流程吧:通过Springboot提供的RestTemplate去调用其他微服务功能,但是在使用RestTemplate时往往服务者的ip和port会变化,一旦变化,我们就要重新修改代码,重新部署,很麻烦。

config包下:

@Configuration
public class RestTemplateConfig {
    
    

    @Bean
    @LoadBalanced
    RestTemplate restTemplate(){
    
    
        return  new RestTemplate();
    }
}

将RestTemplate实例的创建交给Springboot管理,这里加个@LoadBalance是为了负载均衡。

controller包下:

@RestController
public class MsConsumerController {
    
    

    @Autowired
    RestTemplate restTemplate;

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public String test(){
    
    
        return restTemplate.getForEntity("http://micro-service-provider/hello", String.class).getBody();
    }
}

这里服务消费者将去调用服务提供者的功能,这里的ip+port直接用服务提供者的名称micro-service-provider代替,如果访问成功,将返回服务提供者中对应接口的内容。

5.4 application.properties文件

server.port=8001
# 注册到Eureka服务端的微服务名称
spring.application.name=ms-consumer-user
# 注册到Eureka服务端的地址
eureka.client.service-url.defaultZone=http://localhost:9000/eureka/
# 点击具体的微服务,右下角是否显示ip
eureka.instance.prefer-ip-address=true
# 显示微服务的名称
eureka.instance.instance-id=ms-consumer-user-8001

5.5 启动浏览器

在这里插入图片描述

6. 测试

在浏览器中输入localhost:8001/hello
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44374871/article/details/112561652
今日推荐