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拉取服务列表。
     基于服务列表做负载均衡,选中其中一个服务发起远程调用。

 

posted @ 2023-02-07 05:45  Amireux-126  阅读(18)  评论(0)    收藏  举报