服务注册中心 Eureka注册与发现(单机版)

1.Eureka工作原理

 

 2.什么是Eureka,什么是服务注册与发现

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

3.创建Eureka Server

3.1 建Module

同以往一样,建立一个名为“cloud-eureka-server7001” 的module。

3.2 改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>ckfuture-springcloud</artifactId>
        <groupId>com.ckfuture.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloud-eureka-server7001</artifactId>
    <dependencies>
        <!-- 引入的Eureka-server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>

        <!--引入自定定义的api通用包,可以使用Payment支付实体-->
        <dependency>
            <groupId>com.ckfuture.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <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>
        <!--热部署devtools-->
        <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>

    </dependencies>
</project>

3.3 建yam

在“resources”下建立“application.yml”文件。

server:
  port: 7001
eureka:
  instance:
    hostname: localhost #eureka服务端的实例名称
  client:
    #false表示不向注册中心注册自己
    register-with-eureka: false
    #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    fetch-registry: false
    service-url:
      #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
      defaultZone:http: //${eureka.instance.hostname}:${server.port}/eureka/

注意yml格式,要和我配置的显示的颜色一样,我就是在这块配置格式有问题,才出现error的!!!

 

3.4 主启动

在“java”下建立“EurekaMain7001” 主启动文件。

添加“@EnableEurekaServer”注解

package com.ckfuture.springcloud;

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

/**
 * @descrption: 主启动类
 * @author: CKFuture
 * @since: 2021-10-12 21:18
 * @version: v1.0
 * @LastEditTime:
 * @LastEditors:
 * @copyright: hrbckfuture.com
 */
@EnableEurekaServer
@SpringBootApplication
public class EurekaMain7001 {
    private static final Logger logger = LoggerFactory.getLogger(EurekaMain7001.class);
    public static void main(String[] args) {
        SpringApplication.run(EurekaMain7001.class,args);
        logger.info("------------ Eureka Service7001 Start Running--------------");
    }
}

4.启动测试

 

 在浏览器上输入“http://localhost:7001”则可以访问Eureka Server管理界面

 5.支付微服务8001入驻进EurekaServer

EurekaClient端cloud-provider-payment8001将注册进EurekaServer成为微服务提供者provider。

5.1 改POM

8001的pom中添加:

     <!--Eureka-client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

 

 

5.2 写YML

在yml中增加Eureka-client配置

eureka:
  client:
    #表示是否将自己注册进EurekaServer,默认true
    register-with-eureka: true
    #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置true才能配合ribbon使用负载均衡。
    fetch-registry: true
    service-url: 
      defaultZone: http://localhost:7001/eureka

5.3 主启动

在8001主启动上添加“@EnableEurekaClient”注解

package com.ckfuture.springcloud;

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

/**
 * @descrption: 主启动类
 * @author: CKFuture
 * @since: 2021-10-09 21:18
 * @version: v1.0
 * @LastEditTime:
 * @LastEditors:
 * @copyright: hrbckfuture.com
 */
@SpringBootApplication
@EnableEurekaClient
public class PaymentMain8001 {
    private static final Logger logger = LoggerFactory.getLogger(PaymentMain8001.class);
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8001.class,args);
        logger.info("------------ API Service8001 Start Running--------------");
    }
}

5.4 测试

依次启动7001和8001。

6.订单微服务80入驻进eurekaServer

EurekaClient端cloud-consumer-order80将注册进EurekaServer成为服务消费者consumer。

6.1 改POM

在80微服务POM中添加:

<!--Eureka-client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

 

 6.2 写YML

在80的YML中添加:

spring:
  application:
    name: cloud-order-service
eureka:
  client:
    #表示是否将自己注册进EurekaServer,默认true
    register-with-eureka: true
    #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置true才能配合ribbon使用负载均衡。
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:7001/eureka

 

 6.3 主启动

在80主启动中添加注解“@EnableEurekaClient”

package com.ckfuture.springcloud;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

/**
 * @descrption: 消费者主启动类
 * @author: CKFuture
 * @since: 2021-10-11 20:13
 * @version: v1.0
 * @LastEditTime:
 * @LastEditors:
 * @copyright: hrbckfuture.com
 */
@SpringBootApplication
@EnableEurekaClient
public class OrderMain80 {
    private static final Logger logger = LoggerFactory.getLogger(OrderMain80.class);
    public static void main(String[] args) {
        SpringApplication.run(OrderMain80.class,args);
        logger.info("------------ OrderMain80 Start Running--------------");
    }
}

6.4 启动测试

启动后,查看Eureka Server 发现两个微服务都注册成功。

 

 

查询消费者接口测试:

 

posted @ 2021-10-13 15:27  创客未来  阅读(94)  评论(0编辑  收藏  举报