赞
踩
本文内容如有错误、不足之处,欢迎技术爱好者们一同探讨,在本文下面讨论区留言,感谢。
Spring Cloud Eureka 是 Spring Cloud Netflix 组件之一,是基于 Netflix Eureka 实现的。Eureka 包括服务注册、服务发现和服务检测监控等。
Eureka 是 Netflix 开发的服务发现框架,本身是一个基于 REST 的服务,主要用于定位运行在 AWS 域中的中间层服务,以达到负载均衡和中间层服务故障。 — 百度百科
Eureka 主要作用是服务治理,服务治理包含下面两个概念:
下面是一张经典治理体系示意图:
对象 | 动作 | 说明 |
---|---|---|
服务提供者 | 服务注册 | 发送REST请求的方式将自己注册到Eureka Server |
服务提供者 | 服务同步 | 当服务提供者发送注册请求到一个服务注册中心时,它会将请求转发给集群中相连的其他注册中心,从而实现注册中心之间的服务同步。 |
服务提供者 | 服务续约 | 在注册完服务之后,服务提供者会维护一个心跳用来维持自身状态,让 Eureka Server 感知到服务本身可以调用 |
服务消费者 | 获取服务 | 发送一个REST请求给服务注册中心,来获取上面注册的服务清单。 |
服务消费者 | 服务调用 | 服务消费者在获取服务清单后,通过服务名可以获得具体提供服务的实例名和该实例的元数据信息,进行调用。 |
服务消费者 | 服务下线 | 服务实例执行关闭操作时,将触发服务下线请求给 Eureka Server。服务端在接收到请求之后,将该服务状态设置为下线,并把该下线事件传播出去。 |
服务注册中心 | 失效剔除 | 从服务列表中将剔除这些无法提供服务的实例。 |
服务注册中心 | 自我保护 | Eureka Server 在运行期间,会统计心跳失败的比例在15分钟之内低于85%,如果出现低于的情况,Eureka Server 会将当前的实例信息保护起来,让这些实例不会过期,尽可能保护这些注册信息。 |
<dependencies>
<!-- 引入eureka server依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
/**
*
* @EnableEurekaServer
* 用来指定该项目为Eureka的服务注册中心
*/
@EnableEurekaServer
@SpringBootApplication
public class EurekaApp {
public static void main(String[] args) {
SpringApplication.run(EurekaApp.class, args);
}
}
#设置tomcat服务端口号
server.port=9090
#设置服务名称
spring.application.name=eureka-service
eureka.instance.hostname=localhost
#注册中心不需要注册自己
eureka.client.register-with-eureka=false
#注册中心不需要去发现服务
eureka.client.fetch-registry=false
#设置服务注册中心的URL
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka
Eureka 分为 Eureka Server 和 Eureka Client 。Eureka Server 作为注册中心属于服务端,而服务提供者和服务消费者相对于注册中心是客户端。同时 Eureka Server 在启动时默认会自己注册自己,自身作为一个服务,因此 Eureka Server 也是一个客户端,这是搭建 Eureka 集群的基础。
服务提供者向注册中心注册服务,隔30秒(默认时间,可以通过配置文件进行修改 )发送一次心跳,,如果 Eureka Server 在90秒(默认时间,可以通过配置文件进行修改 )后还未收到服务提供者发来的心跳时,那么它就会认定该服务已经死亡就会注销这个服务。
注意:这里注销并不是立即注销,而是会在60秒以后对在这个之间段内“死亡”的服务集中注销,原因是,集中处理可以避免 Eureka 出现极大的负担。
此外,Eureka 还有自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么 Eureka 就认为客户端与注册中心出现了网络故障,所以不会再接收心跳,也不会删除服务。
客户端消费者会向注册中心拉取服务列表,因为一个服务器的承载量是有限的,所以同一个服务会部署在多个服务器上,每个服务器上的服务都会去注册中心注册服务,他们会有相同的服务名称但有不同的实例id,所以拉取的是服务列表。最终通过负载均衡来获取一个服务,这样可以均衡各个服务器上的服务。
本文简单介绍了 Spring Cloud Eureka 的基本作用和简单引用,通过这篇文章,了解一下 Eureka 的设计思路。
Eureka原理理解和Eureka集群搭建
Eureka源码解析(Eureka工作原理进阶)
Eureka工作原理
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。