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

804 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第24天,点击查看活动详情

前言

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

官网:github.com/Netflix/eur…

7186b9d59cb44529bbf428b1b5e62c68.png

1、Eureka注册中心

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

1、新建一个maven模块

image-20220824183027986.png

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/

image-20220824183952033.png

2、服务注册

1、引入依赖

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

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

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

image-20220824184439469.png

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注册到了注册中心。

如下图所示:

image-20220824190420652.png

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: orderservice
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功能依旧正常

image-20220824190552807.png

总结

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