SpringCloud 注册中心 (Eureka) 快速入门

发布于:2023-01-04 ⋅ 阅读:(362) ⋅ 点赞:(0)

作者:大三的土狗
专栏:SpringCloud
在这里插入图片描述

前言

  Eureka是一个基于REST的服务,主要用于AWS云中的定位服务,以实现中间层服务器的负载平衡和故障转移。在 Spring Cloud 微服务架构中通常用作注册中心我们称这个服务为 Eureka Server,还有一个与之交互的客户端称之为 Eureka Client

官网:https://github.com/Netflix/eureka
在这里插入图片描述

1、Eureka注册中心

在微服务架构中往往会有一个注册中心,每个微服务都会向注册中心去注册自己的地址及端口信息,注册中心维护着服务名称与服务实例的对应关系。首先我们注册中心服务端:eureka-server,这必须是一个独立的微服务。下面我们来搭建搭建eureka-server。

1、新建一个maven模块

在这里插入图片描述

2、引入eureka依赖

引入SpringCloud为eureka提供的starter依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

3、编写启动类

给eureka-server服务编写一个启动类EurekaApplication

  • 添加@EnableEurekaServer注解开启eureka的注册中心功能
  • 添加@SpringBootApplication注解表示为启动类
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);
    }
}

4、编写配置文件

编写一个application.yml配置文件,内容如下:

server:
  port: 10086
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url: 
      defaultZone: http://127.0.0.1:10086/eureka

5、启动服务

访问 http://localhost:10086/ :

在这里插入图片描述

2、服务注册

1、引入依赖

  服务注册,就是将提供某个服务的模块信息(通常是这个服务的ip和端口)注册到1个公共的组件上去。

在user-service的pom文件中,引入下面的eureka-client依赖:

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

在这里插入图片描述

2、配置文件

  在user-service中,修改application.yml文件,添加服务名称、eureka地址等。

spring:
  application:
    name: user-service
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

在这里插入图片描述

3、启动user-service

  启动user-service之后,查看eureka-server管理页面,可以看到user-service注册到了注册中心。

如下图所示:
在这里插入图片描述

3、服务发现

  服务发现,就是 user-service 的信息可以通过 eureka-server 服务获取到,正好order-service服务需要调用 user-service 来实现远程调用,下面使用 eureka 来实现服务发现。

1、引入依赖

在order-service的pom文件中,引入下面的eureka-client依赖:

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

2、配置文件

  服务发现也需要知道eureka地址,因此与服务注册一致,都是配置eureka信息,在order-service中,修改application.yml文件,添加服务名称、eureka地址等。

spring:
  application:
    name: order-service
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

3、服务拉取

  1、首先需要给RestTemplate这个Bean添加一个@LoadBalanced注解

	@Bean
    @LoadBalanced	//1、添加一个@LoadBalanced注解
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

  2、修改 queryOrderById方法

  把localhost也就是IP改成了注册时的名称

    String url = "http://user-service:8081/user/" + order.getUserId();

  3、测试

  oder-service 使用 user-service 代替Ip功能依旧正常

在这里插入图片描述

总结

  以上就是Eureka的简单入门,简单说他就是一个注册中心,服务可以注册、发现,其实也算有点生产者和消费者的感觉。