Tips:此笔记为阅读翟永超先生所著的《Spring Cloud微服务实战》一书之后所总结
服务治理Eureka
1、基础架构
Eureka服务治理体系中的三个核心角色:服务注册中心、服务提供者、服务消费者。
- 服务注册中心:Eureka提供的服务端,提供注册与发现的功能。
- 服务提供者:提供服务的应用,只要是遵循Eureka通信机制的应用,包括Spring Boot应用等,它将自己提供的服务注册到Eureka,以供其他应用发现并消费。
- 服务消费者:消费者应用从服务注册中心获取服务列表,从而使其知道去哪里调用所需要的服务。
Tips:大多数情况下,客户端是服务消费者也是服务提供者。
2、服务治理机制
- “服务注册中心-1”和“服务注册中心-2”,它们互相注册组成了高可用集群。
- “服务提供者”启动了两个实例,一个注册到”服务注册中心-1”上,一个注册到”服务注册中心-2”上。
- 还有两个“服务消费者“,它们也都分别只指向了一个注册中心。
服务注册中心
自我保护
服务注册之后,会与Eureka Server之间维护一个心跳连接,告诉Eureka Server自己还活着。Eureka Server在运行期间,会统计心跳失败的比例在15分钟内是否低于85%,如果低于 85%,Eureka Server会将这些实例保护起来,让这些实例不会过期,但是在保护期内如果服务刚好这个服务提供者非正常下线了,此时服务消费者就会拿到一个无效的服务实例,此时会调用失败,对于这个问题需要服务消费者端要有一些容错机制,如重试,断路器等。
失效剔除
当注册的服务非正常下线(网络故障等原因),为了从服务列表中将这些无法提供正常服务的实力剔除,Eureka Server会在启动的时候创建一个定时任务,每隔一段时间(默认为60s)将当前服务列表中超时(默认90s)没有续约的服务剔除。
服务提供者
服务注册
“服务提供者”在启动的时候会通过发送REST请求的方式将自己组册到Eureka Server上,同时带上了自身服务的一些元数据信息。
服务同步
在集群情况下,由于服务注册中心互相注册为服务,当服务提供者发送注册请求到一个服务注册中心时,它会将该请求转发给集群中相连的其他注册中心,从而实现服务同步。通过服务同步,两个服务提供者的服务信息就可以通过这两个服务注册中心的任意一个获取到。
服务续约
注册完服务之后,服务提供者会与Eureka Server之间维护一个心跳连接,告诉Eureka Server自己还活着。防止服务注册中心的失效剔除将该实例从服务列表中剔除出去。
服务消费者
获取服务
服务消费者启动时,会向服务注册中心发送REST请求,获取服务注册中心的服务清单。
服务调用
服务消费者在获取服务清单后,通过服务名可以获取到具体提供服务的实例名和该实例的元数据信息。
服务下线
当服务正常关闭时,它会触发一个服务下线的REST请求给Eureka Server,服务注册中心载收到请求后,将该服务状态变为下线(DOWN),并把该下线事件传播出去。