Eureka架构中三个核心角色:
- 服务注册中心(Eureka的服务端应用,提供服务注册和发现功能)
- 服务提供者(提供服务的应用,可以是SpringBoot应用,也可以是其它任意技术实现)
- 服务消费者(消费应用从注册中心获取服务列表,从而得知每个服务方的信息,知道去哪里调用服务方)
Eureka好比医院门诊,负责管理、记录服务提供者的信息。服务调用者不需要自己寻找服务,而是把需求告诉Eureka,然后Eureka把符合你的需求的服务告诉你。
Eureka说白了就是一个注册服务中心。
同时,服务提供方与Eureka之间通过
“心跳”
机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服务列表中剔除。
这就实现了服务的自动注册、发现、状态监控。
原理图
- Eureka:就是服务注册中心(可以是一个集群),对外暴露自己的地址
- 提供者:启动后向Eureka注册自己信息(地址,提供什么服务)
- 消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新
- 心跳(续约):提供者定期通过http方式向Eureka刷新自己的状态
eureka挂掉后:
如果eureka突然宕机的情况下,服务之间可以正常访问
原因:在启动消费者和提供者的时候,eureka注册中心是正常运行的,因此可以将各个消费者和提供者可以正常订阅。当eureka突然宕机的时候,各个提供者和消费者都已经保存有相互间的服务名称与ip映射,所以相互访问没有问题。
在eureka宕机的情况下,服务之间在何种情况下无法继续进行相互访问:
所有服务全部停止,再重新启动除eureka之外的服务;
修改消费者或提供者IP,端口,服务名称等映射信息的情况下。