1.什么是Eureka
Eureka是由Netflix公司开发,基于 REST 服务的服务发现框架(也即服务注册中心)。
SpringCloud已将其内化,集成在其子项目spring-cloud-netflix 中。因此,我们通常用到的eureka也都是springcloud的中的eureka。
2.Eureka的作用
消费者该如何获取服务提供者具体信息?
- 服务提供者启动时向eureka注册自己的信息
- eureka保存这些信息
- 消费者根据服务名称向eureka拉取提供者信息
如果有多个服务提供者,消费者该如何选择?
- 服务消费者利用负载均衡算法,从服务列表中挑选一个
消费者如何感知服务提供者健康状态?
- 服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态
- eureka会更新记录服务列表信息,心跳不正常会被剔除
- 消费者就可以拉取到最新的信息
3.搭建Eureka
1.创建eurekaserver项目,引入spring-cloud-starter-netflix-eureka-server的依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2.编写启动类,添加@EnableEurekaServer注解
3.添加application.yml文件,编写下面的配置:
server:
port: 10086
spring:
application:
name: eurekaserver
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka/
4.访问http://127.0.0.1:10086/eureka
4. 注册user-service和order-service
1.在xxxx-service项目引入spring-cloud-starter-netflix-eureka-client的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.在application.yml文件,编写下面的配置:
spring:
application:
name: orderservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
3.order-service代码修改部分:
url中换成服务名称:
在RestTemplate中加入负载均衡注解@LoadBalanced