目录
配置启动类,添加 @EnableEurekaServer注解:
一、服务的提供者和消费者:
- 服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)
- 服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)
二、Eureka概述:
1.服务调用问题:
2.Eureka作用:
消费者该如何获取服务提供者具体信息?
- 服务提供者启动时向Eureka注册自己的信息
- Eureka保存这些信息
- 消费者根据服务名称向eureka拉取提供者信息
如果有多个服务提供者,消费者该如何选择?
- 服务消费者利用负载均衡算法,从服务列表中挑选一个
消费者如何感知服务提供者健康状态?
- 服务提供者会每隔30秒向Eureka server发送心跳请求,报告健康状态
- Eureka会更新记录服务列表信息,心跳不正常会被剔除
- 消费者就可以拉取到最新的信息
三、搭建Eureka注册中心:
1.搭建Eureka注册中心:
创建新的Module项目,引入依赖:
引入Eureka服务依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
配置启动类,添加 @EnableEurekaServer注解:
给eureka-server服务编写一个启动类,一定要添加一个@EnableEurekaServer注解,开启eureka的注册中心功能:
@EnableEurekaServer
添加application.yml配置文件:
server:
# Eureka服务的端口:
port: 10086
spring:
application:
# 设置当前模块的名称:
name: EurekaServer
eureka:
client:
# Eureka的地址信息:
service-url:
defaultZone: http://127.0.0.1:10086/eureka #(集群使用)
启动Eureka Server服务:
2.注册服务:
将user-service注册到eureka-server中去。
引入eureka-client依赖:
在user-service中,修改application.yml文件,添加服务名称、eureka地址:
spring:
application:
name: userservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
重新启动服务:
IDEA启动多个服务实例:
为了演示一个服务有多个实例的场景,我们添加一个SpringBoot的启动配置,再启动一个user-service。
首先,复制原来的user-service启动配置:
然后,在弹出的窗口中,填写信息:(注意配置,避免端口冲突!!!)
现在,SpringBoot窗口会出现两个user-service启动配置,不过,第一个是8081端口,第二个是8082端口。启动两个user-service实例:
查看eureka-server管理页面:
3.服务发现:
在order-service的OrderApplication中,给RestTemplate这个Bean添加一个@LoadBalanced注解:
@LoadBalanced
修改order-service服务中的cn.itcast.order.service包下的OrderService类中的queryOrderById方法。修改访问的url路径,用服务名代替ip、端口:
spring会自动帮助我们从eureka-server端,根据userservice这个服务名称,获取实例列表,而后完成负载均衡。