Eureka注册中心
eureka-server 注册中心
eureka-clent 消费者、提供者都属于clent
服务提供者:每次启动时向注册中心注册服务信息,每隔30秒一次向注册中心发送心跳续约,心跳不正常会被剔除
服务消费者:根据服务注册名称拉取服务信息,利用负载均衡挑选一个服务
原理总结
- 服务实例启动,会将自己的信息注册到Eureka中,这叫服务注册
- Eureka会保存服务实例名称和实例地址列表的映射关系
- 消费者根据服务名称,拉去实例列表,这叫服务发现或者服务拉取
- 消费者会根据负载均衡算法从实例列表中选取一个实例地址
- 提供者会每30秒一次向Eureka报告自己的状态,这叫心跳续约
- 当超过一定时间没有发送心跳后,Eureka会任务微服务实例故障,将其从实例列表中剔除
- 一个微服务,既可以是服务提供者,又可以是服务消费者,因此eureka将服务注册、服务发现等功能统一封装到了eureka-client端
一、搭建Eureka服务
- Eureka必须是一个独立的项目
- 引入SpringCloud为eureka提供的starter依赖:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>
- 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); } }
4. 配置文件配置Eureka服务名称、地址```yamlserver:port: 10086spring:application:name: eureka-servereureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka
二、Eureka服务注册
1、服务提供者项目pom文件中引入eureka客户端依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>
2、设置服务注册名称,eureka地址
spring:application:name: userserviceeureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka
三、Eureka服务发现
服务拉取和负载均衡
在消费者服务第一次访问时,会从Eureka服务中拉起实例列表缓存下来(懒加载)
spring会自动帮助我们从eureka-server端,根据userservice这个服务名称,获取实例列表,而后完成负载均衡。
需要使用一个注解@LoadBalanced
微服务调用方式:远程调用 Resttemplate
负载均衡注解 @LoadBalanced
