Eureka
在传统模式中我们实现服务间的远程调用需要使用到RestTemplate来实现。也就是:
String url = "http://localhost:8081/user/" + order.getUserId(); User user = restTemplate.getForObject(url, User.class);
但是这样在实际开发中是会出现问题的,在实际开发中我们可能会有不同的环境,不同的环境下服务的地址可能也是不同的。
或者user服务为了应对高并发场景,可能会部署多个实例,他们的端口也是不同的。
这个时候如果我们依旧使用8080端口,就会出现问题。
服务调用出现的问题
1、服务消费者如何获取服务提供者的地址信息? 2、如果有多个服务提供者,消费者该如何做出选择? 3、消费者如何获取服务提供者的健康状态?
Eureka的作用
- 服务消费者如何获取服务提供者的地址信息?
服务提供者启动时向Eureka注册自己的信息
eureka保存服务提供者的信息
服务消费者根据服务名称想Eureka拉取服务提供者信息
- 如果有多个服务提供者,消费者该如何做出选择?
服务消费者利用负载均衡算法,从服务列表中挑选一个
-
消费者如何获取服务提供者的健康状态?
服务提供者每隔30s向Eureka发送一次心跳请求,报告健康状态
Eureka会更新记录服务列表信息,心跳异常的服务信息会被剔除
在Eureka中,微服务的角色有两类:
EurekaServer:服务端,注册中心
1、记录服务信息
2、心跳监控
EurekaClient:客户端
1、provider:服务提供者。 注册自己的信息到Eureka。 每隔30s向Eureka发送心跳。 2、consurm:服务消费者。 根据服务名称想Eureka拉取服务列表。 基于服务列表做负载均衡,选中其中一个服务发起远程调用。

浙公网安备 33010602011771号