Eureka注册中心
服务调用出现的问题:
硬编码:
//2、利用RestTemplate发起http请求,查询用户
String url = "http://localhost:8081/user/" + order.getUserId();
1、服务消费者该如何获取服务提供者的地址信息
2、如果有多个服务提供者,消费者该如何选择
3、消费者如何得知服务提供者的健康状态
Eureka注册中心:
(1)注册服务信息:每个微服务启动时,都将注册服务信息在Eureka注册中心中,如端口号。【健康状态:每隔30秒发送一次心跳向Eureka确认自己的状态,当隔了30秒未发送时,Eureka则会清除对应的微服务信息】
(2)拉取服务:当某个微服务请求其它服务时,从Eureka注册中心中拉取请求的服务信息。
1、服务消费者该如何获取服务提供者的地址信息
服务提供者启动时向Eureka注册自己的信息
Eureka保存这些信息
消费者根据服务名称向eureka拉取提供者信息
2、如果有多个服务提供者,消费者该如何选择
服务消费者利用负责均衡算法,从服务列表中选择一个
3、消费者如何得知服务提供者的健康状态
服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态
Eureka会更新记录服务列表信息,心跳不正常会被剔除
消费者可以拉取到最新的信息
在Eeureka框架中,微服务角色有两类:
* EurekaServer:服务端,注册中心
记录服务信息
心跳监控
*EurekaClient:客户端
*provider:服务提供者,例如案例中的user-service
注册自己的信息到EurekaServer
每隔30s向EurekaServer发送心跳
*consumer:服务消费者,例如案例中的order-service
根据服务名称从EurekaServer拉取服务列表
基于服务列表做负载均衡,选中一个微服务后发起远程调用。