eureka
eureka是netflix开源的一个服务发现框架,用于构建和管理微服务架构中的服务注册和发现。它通过创建一个中央的服务注册表来帮助微服务之间进行通信,并提供了自动化的服务注册和发现功能。在eureka中,服务提供者将自己注册到eureka服务器,并提供自己的元数据,而服务消费者可以通过eureka服务器来查找和获取需要的服务。eureka还提供了故障转移和负载均衡等功能,以确保服务的高可用和可伸缩性。
原理
- 1. 首先它有两个角色:服务端和客户端,服务端就是一个注册中心。而客户端就是那些消费者和提供者都是微服务
- 2. 首先客户端会将自己的服务名+ip+port等信息注册到注册中心去
- 3. 而消费端会每隔30秒去注册中心拉取这些服务列表,然后存到本地缓存中
- 4. 从本地缓存中取出,进行一个动态的调用
- 期间客户端会每隔30s向注册中心发个消息,表示自己还存在,这就是心跳检测
- 注册中心会每隔60s就检测一次,客户端有没有发这个心跳过来,如果没有,那么倒计时90s,一旦超时就将这个服务挂掉(前提是关闭了自自我保护机制,默认是开启的)这就是失效剔除机制
- 自我保护机制开启的时候,当客户端十五分钟之内,发现这个续约失败率低于百分之85的话是不会被剔除的
实例
- 创建一个spring boot项目,并添加以下依赖:
<dependencies>
<dependency>
<groupid>org.springframework.cloud</groupid>
<artifactid>spring-cloud-starter-netflix-eureka-server</artifactid>
</dependency>
</dependencies>
- 在主类上添加
@enableeurekaserver
注解,以启用eureka server功能。
@springbootapplication
@enableeurekaserver
public class eurekaserverapplication {
public static void main(string[] args) {
springapplication.run(eurekaserverapplication.class, args);
}
}
- 创建一个配置文件(比如
application.yml
)来配置eureka server的相关属性。
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
-
运行应用程序,eureka server将在默认端口(8761)上启动。
-
创建一个新的spring boot项目,并添加以下依赖:
<dependencies>
<dependency>
<groupid>org.springframework.cloud</groupid>
<artifactid>spring-cloud-starter-netflix-eureka-client</artifactid>
</dependency>
</dependencies>
- 在主类上添加
@enablediscoveryclient
注解,以启用eureka client功能。
@springbootapplication
@enablediscoveryclient
public class eurekaclientapplication {
public static void main(string[] args) {
springapplication.run(eurekaclientapplication.class, args);
}
}
- 创建一个配置文件(比如
application.yml
)来配置eureka client的相关属性。
spring:
application:
name: eureka-client-example
eureka:
client:
service-url:
defaultzone: http://localhost:8761/eureka/
server:
port: 8080
-
运行应用程序,eureka client将在默认端口(8080)上启动,并注册到eureka server上。
-
现在,您可以通过访问
http://localhost:8761
来查看eureka server的控制台,并在instances currently registered with eureka
部分中看到已注册的eureka client。
总结
spring cloud eureka是一个基于rest的服务治理组件,主要用于实现服务注册与发现。它由netflix开源,是spring cloud生态系统中的一个重要组成部分。
spring cloud eureka的主要功能包括以下几个方面:
-
服务注册与发现:服务提供者将自己的信息注册到eureka服务器上,eureka服务器将这些信息存储起来,供服务消费者使用。服务消费者可以通过eureka服务器获取所有可用的服务提供者实例。
-
服务健康监测:eureka服务器会定时向服务提供者发送心跳包,检测服务的状态。如果一个服务在一定时间内未能发送心跳包,eureka服务器将会从注册表中将其剔除,以保证服务的高可用性。
-
负载均衡:eureka客户端会通过负载均衡算法选择一个可用的服务提供者,从而实现请求的分发。在eureka的设计中,负载均衡是通过客户端实现的,即服务消费者根据自己的需求选择一个合适的服务提供者。
-
故障转移:eureka支持故障转移,当一个注册的服务提供者宕机时,eureka可以自动将请求转发给其他可用的服务提供者,从而实现服务的高可用性。
发表评论