> 文章列表 > 快速认识并上手Eureka注册中心

快速认识并上手Eureka注册中心

快速认识并上手Eureka注册中心

文章目录

  • 一、初识Eureka
    • 1.1 EurekaServer
    • 1.2 EurekaClient
      • 1.2.1 EurekaClient中的角色
  • 二、EurekaServer
    • 2.1 搭建EurekaServer
      • 2.1.1 依赖引入
      • 2.1.2 添加注解
      • 2.1.3 配置eureka地址
      • 2.1.4 验证
    • 2.2 注册EurekaClient
      • 2.2.1 引入客户端依赖
      • 2.2.2 配置eureka地址
      • 2.2.3 验证
    • 2.3 服务发现

一、初识Eureka

  Eureka是Netflix开源的一个服务发现框架,用于管理分布式系统中的各个服务实例,使得服务消费者可以方便地发现和调用服务提供者。Eureka架构由两个组件构成,一个是服务注册中心(EurekaServer),另一个是服务提供者(EurekaClient)。
在这里插入图片描述

  EurekaServerEurekaClient之间的通信使用的是基于REST的协议,使得服务消费者可以轻松地与服务提供者通信。

1.1 EurekaServer

在这里插入图片描述

  EurekaServer是一个集中式的组件,用于管理服务实例的注册和注销。当一个服务启动时,它会向EurekaServer注册自己的信息,包括服务名称、IP地址、端口号等。EurekaServer会将这些信息保存在一个注册表中,以便服务消费者可以查询到可用的服务实例。服务实例会定期向EurekaServer发送心跳包,以便EurekaServer可以了解服务实例的运行状况,如果某个服务实例长时间没有发送心跳包,EurekaServer就会将其从注册表中删除。

1.2 EurekaClient

  EurekaClient是一个服务提供者,当服务提供者启动时,它会向EurekaServer注册自己提供的服务。同时,EurekaClient还会定期从EurekaServer获取可用的服务实例列表,并缓存这些实例的信息。当服务消费者需要调用服务时,它会向EurekaServer发送一个服务请求,并得到可用的服务实例列表。然后服务消费者根据负载均衡算法选择一个服务实例进行调用。
在这里插入图片描述

1.2.1 EurekaClient中的角色

  在Eureka架构中,服务提供者使用EurekaClient向服务注册中心(EurekaServer)注册自己提供的服务,并且将自己的服务实例信息保存到注册表中。服务消费者也使用EurekaClient从服务注册中心获取可用的服务实例列表,并根据负载均衡算法选择一个服务实例进行调用。

  服务提供者和服务消费者可以分别被称为EurekaClient的providerconsumer
在这里插入图片描述

  作为provider,服务提供者需要在启动时向EurekaServer注册自己提供的服务,并且将自己的服务实例信息保存到注册表中。EurekaClient提供了一些配置选项,使得服务提供者可以轻松地完成这些操作。服务提供者还需要提供API接口来响应服务调用请求。

  作为consumer,服务消费者需要使用EurekaClient从服务注册中心获取可用的服务实例列表,并根据负载均衡算法选择一个服务实例进行调用。EurekaClient提供了一些负载均衡策略,例如随机、轮询、加权轮询等。服务消费者还需要根据具体业务需求,调用相应的API接口来完成服务调用。

  需要注意的是,EurekaClient的provider和consumer不是指具体的服务提供者和服务消费者,而是指向EurekaServer注册服务和从EurekaServer获取服务实例列表的客户端。实际上,一个服务既可以是provider,也可以是consumer,它可以向EurekaServer注册自己提供的服务,并且使用EurekaClient从其他服务提供者获取可用的服务实例列表。

二、EurekaServer

2.1 搭建EurekaServer

2.1.1 依赖引入

在pom.xml文件中引入对应依赖:

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

2.1.2 添加注解

创建一个@EnableEurekaServer注释的Spring Boot配置类,以启用Eureka Server。

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

2.1.3 配置eureka地址

在配置文件夹创建一个yml文件:

server:port: 8888
spring:application:name: eurekaserver
eureka:client:service-url:defaultZone: http://localhost:8888/eureka

2.1.4 验证

启动服务后可以通过访问地址进行查阅,例如:

(访问http://localhost:8888)
在这里插入图片描述
显示此页面表示成功搭建。

2.2 注册EurekaClient

2.2.1 引入客户端依赖

在pom.xml文件中引入对应依赖:

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

2.2.2 配置eureka地址

在yml配置中添加eureka地址:

spring:application:name: userserver
eureka:client:service-url:defaultZone: http://localhost:8888/eureka

2.2.3 验证

启动服务后可以通过访问地址进行查阅,例如:

(访问http://localhost:8888)
在这里插入图片描述
可以看到userservice注册成功。

2.3 服务发现

  1. 实现服务发现,需要搭建服务注册中心并让服务提供方进行注册(2.1、2.2)配置。

  2. 添加@LoadBalanced(负载均衡)注解:

@Bean
@LoadBalanced
public RestTemplate restTemplate(){return new RestTemplate();
}
  1. 通过注册的名称进行服务发现并使用:
@Autowired
private OrderMapper orderMapper;
@Autowired
private RestTemplate restTemplate;public Order queryOrderById(Long orderId) {// 1.查询订单Order order = orderMapper.findById(orderId);//利用RestTemplate发起http请求,使用userserviceString url = "http://userservice/user/" + order.getUserId();User user = restTemplate.getForObject(url,User.class);order.setUser(user);// 4.返回return order;
}