Eureka注册中心入门

115 阅读2分钟

服务调用出现的问题

  • 服务消费者如何获取服务生产者的地址信息?
  • 若有多个服务生产者,消费者如何选择?8081、8082、8083 硬代码编写的话 要写哪个?随机数感觉可以但是 生产者的健康状态如何感知?
  • 消费者如何得知服务生产者的健康状态

Eureka 作用

注册中心(eureka-server) :记录和管理这些微服务
微服务(eureka-client) : 每一个服务启动时都会注册服务信息。
> 服务生产者 : 注册自己的信息到注册中心 并 每隔30秒向注册中心发送心跳
> 服务消费者 : 根据服务名称从注册中心拉取服务列表,基于服务列表做负载均衡、选中一个服务进行远程调用。

黑马图示:

image.png

动手实践 三步走

引入依赖

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

编写启动类 增加 @EnableEurekaServer 注解

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

编写 配置文件

server:
  port: 10086
# 微服务名称
spring:
  application:
    name: eurekaserver
eureka:
  client:
    service-url: #eureka地址信息 eureka 相互作注册 集群通信使用。 eureka 之间做数据交流。
      defaultZone : http://127.0.0.1:10086/eureka

成功示例

image.png

服务注册 (两步走)

引入依赖

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

编写配置文件

eureka:
  client:
    service-url: #eureka地址信息 eureka 相互作注册 集群通信使用。 eureka 之间做数据交流。
      defaultZone : http://127.0.0.1:10086/eureka
spring:
    application:
      name: userservice

启动 app 发现已经成功注册

image.png

模拟多实例部署

image.png

具体操作步骤 :

image.png

image.png

填写 : -Dserver.port = 【端口号】 启动即可

多实例 注册结果截图

image.png

服务发现

根据服务名获取服务列表。

image.png

服务名代替 ip、端口

原url : String url = "http://localhost:8081/user/" + order.getUserId();
修改为 String url = "http://userservice/user/" + order.getUserId();

添加负载均衡注解。

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

示例结果截图 8081 / 8084 两台模拟实例都处理了请求

image.png image.png