Eureka注册中心

eureka-server 注册中心
eureka-clent 消费者、提供者都属于clent
服务提供者:每次启动时向注册中心注册服务信息,每隔30秒一次向注册中心发送心跳续约,心跳不正常会被剔除
服务消费者:根据服务注册名称拉取服务信息,利用负载均衡挑选一个服务
image.pngimage-20210713220104956.png

原理总结

  • 服务实例启动,会将自己的信息注册到Eureka中,这叫服务注册
  • Eureka会保存服务实例名称和实例地址列表的映射关系
  • 消费者根据服务名称,拉去实例列表,这叫服务发现或者服务拉取
  • 消费者会根据负载均衡算法从实例列表中选取一个实例地址
  • 提供者会每30秒一次向Eureka报告自己的状态,这叫心跳续约
  • 当超过一定时间没有发送心跳后,Eureka会任务微服务实例故障,将其从实例列表中剔除
  • 一个微服务,既可以是服务提供者,又可以是服务消费者,因此eureka将服务注册、服务发现等功能统一封装到了eureka-client端

    一、搭建Eureka服务

  1. Eureka必须是一个独立的项目
  2. 引入SpringCloud为eureka提供的starter依赖:
  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  4. </dependency>
  1. Eureka服务启动类添加注解@EnableEurekaServer ```java package cn.itcast.eureka;

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); } }

  1. 4. 配置文件配置Eureka服务名称、地址
  2. ```yaml
  3. server:
  4. port: 10086
  5. spring:
  6. application:
  7. name: eureka-server
  8. eureka:
  9. client:
  10. service-url:
  11. defaultZone: http://127.0.0.1:10086/eureka

二、Eureka服务注册

1、服务提供者项目pom文件中引入eureka客户端依赖

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

2、设置服务注册名称,eureka地址

  1. spring:
  2. application:
  3. name: userservice
  4. eureka:
  5. client:
  6. service-url:
  7. defaultZone: http://127.0.0.1:10086/eureka

三、Eureka服务发现

服务拉取和负载均衡
在消费者服务第一次访问时,会从Eureka服务中拉起实例列表缓存下来(懒加载)
spring会自动帮助我们从eureka-server端,根据userservice这个服务名称,获取实例列表,而后完成负载均衡。
需要使用一个注解@LoadBalanced
微服务调用方式:远程调用 Resttemplate
负载均衡注解 @LoadBalanced