引出问题
在这个案例里,订单模块调用用户模块,使用硬编码去调用,不够灵活。
问题1:服务消费者如何获取服务提供者的地址信息?(服务消费者:A调用B,那么A就是消费者,反之B为提供者)
问题2:如果有多个服务提供者,消费者该如何选择?
问题3:消费者如何得知服务提供者的健康状态?
Eureka的作用
服务提供者都去eureka注册报道。大概30秒心跳一次,确保服务提供者存活。
所以可以解答三个问题
1、
- 服务提供者启动时向eureka注册自己的信息
- eureka保存这些信息
- 消费者根据服务器名称向eureka拉取提供者信息
2、服务消费者利用负载均衡算法,从服务列表中挑选一个。
3、
- 服务提供者会30秒向EurekaServer发送心跳请求,报告健康状态
- eureka会更新记录服务列表信息,心跳不正常会被剔除
- 消费者就可以拉取到最新的信息。