spring cloud 之 Eureka 知识点:服务注册与发现
- Eureka原理
- 当服务消费者想要调用服务提供者的API时,首先会在注册中心中查询当前可用的实例的网络地址(也可能是定时查询可用实例,本地缓存好可用服务列表),然后再使用客户端负载均衡,命中到其中一个服务提供者实例并请求该实例。下图展示了客户端发现方式的网络拓扑图:
- 当服务启动的时候,将会向注册中心注册服务;停止时,向注册中心注销服务;当服务注册到注册中心后,注册中心将会与服务通过心跳机制定时刷新,如果一定时间内注册中心没有收到某实例的心跳,就会将相应实例踢出。
-
问题:eureka server 红色大字提示:
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
原因:自我保护机制。Eureka Server在运行期间,会统计心跳失败的比例在15分钟之内是否低于85%,如果出现低于的情况(在单机调试的时候很容易满足,实际在生产环境上通常是由于网络不稳定导致),Eureka Server会将当前的实例注册信息保护起来,同时提示这个警告。
出处:http://blog.51cto.com/simon0816/1946156 -
做这个例子时,http://blog.didispace.com/spring-cloud-starter-dalston-2-2/
报错:Request URI does not contain a valid hostname
原因:在 eureka client 的配置项"spring.application.name"中,不要用下划线(_)
建议:所有配置项"spring.application.name",都不要有下划线 -
库存服务、仓储服务、积分服务中都有一个 Eureka Client 组件,这个组件专门负责将这个服务的信息注册到 Eureka Server 中。
说白了,就是告诉 Eureka Server,自己在哪台机器上,监听着哪个端口。
而 Eureka Server 是一个注册中心,里面有一个注册表,保存了各服务所在的机器和端口号。
总结一下:
- Eureka Client:负责将这个服务的信息注册到 Eureka Server 中。
- Eureka Server:注册中心,里面有一个注册表,保存了各个服务所在的机器和端口号。
网址:https://mp.weixin.qq.com/s/ZH-3JK90mhnJPfdsYH2yDA