Eureka入门

简介: Eureka入门

1、简介

Eureka在Spring Cloud Netflix项目中担任微服务注册中心的角色。Eureka本身也是一个微服务,它的作用就是让微服务之间能够互相发现。

如上图,服务提供者将自身服务信息注册到Eureka上,服务消费者从Eureka中获取可用服务实例信息,通过客户端负载均衡器Ribbon选择服务发起请求。

Eureka解决了以下几个问题:

  1. 服务消费者`硬编码服务提供者的主机和端口信息
  2. 服务提供者下线后,服务消费者及时感知

2、Eureka使用

2.1 服务搭建

第一步:引入依赖,我这里选择的Spring Cloud 版本是Greenwich.SR1

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

   <modelVersion>4.0.0</modelVersion>


   <groupId>com.liziba</groupId>

   <artifactId>spring-cloud-netflix-demo</artifactId>

   <version>1.0-SNAPSHOT</version>

   

   <properties>

       <spring-cloud.version>Greenwich.SR1</spring-cloud.version>

   </properties>


   <dependencies>

       <dependency>

           <groupId>org.springframework.cloud</groupId>

           <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>

       </dependency>

   </dependencies>

   

   <dependencyManagement>

       <dependencies>

           <dependency>

               <groupId>org.springframework.cloud</groupId>

               <artifactId>spring-cloud-dependencies</artifactId>

               <version>${spring-cloud.version}</version>

               <type>pom</type>

               <scope>import</scope>

           </dependency>

       </dependencies>

   </dependencyManagement>


</project>

第二步:在应用的主引导类添加@EnableEurekaServer注解,启动Eureka Server

/**

* <p>

*     Eureka Server 服务启动类

* </p>

*

* @Author: Liziba

* @Date: 2021/10/26 23:27

*/


@SpringBootApplication

@EnableEurekaServer

public class EurekaServerApplication {


   public static void main(String[] args) {

       SpringApplication.run(EurekaServerApplication.class, args);

   }


}

第三步:配置端口信息(由于我本地8080提供了其他服务,因此这里修改了端口信息),默认情况不配置端口,Eureka Server启动后会尝试监听8080端口。

server:

 port: 8761

第四步:浏览器访问http://localhost:8761/,如果看到如下Eureka提供的Dashborad页面表示Eureka Server已经正常启动了


2.2 服务详细配置

配置一:此时Eureka启动,并未有任何服务注册到当前Eureka中,但是实例表中有一个UNKNOWN实例,这是因为Eureka默认会将其本身注册到上面。

## 两个值默认都为true

eureka:

 client:

  ## 是否从Eureka获取注册信息

   fetch-registry: false

   ## 配置当前微服务是否注册到Eureka

   register-with-eureka: false

此时Eureka中不再有UNKNOWN实例信息,这配置适用于任何服务,通过这两个属性能够告诉该服务该如何Eureka服务进行交互。


配置二:指定Eureka服务端口信息,一般情况下我们指定8761作为Eureka默认端口

server:

 port: 8761


配置三:禁用自我保护模式

我们先来看一个警告信息,当Eureka服务一直未接收到其他服务注册时,会在Eureka的Dashboard中出现如下红色警告:

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开启了自我保护模式。由于Eureka Server和Eureka Client之间不可避免的存在网络故障问题,Eureka Server可能无法及时收到Eureka Client的心跳请求,如果Eureka Server直接下线该服务,会导致该服务无法被客户端请求。因此Eureka会有如下心态和自我保护机制:

  1. Eureka Cilent每隔30秒,向Eureka Server发送一次服务更新请求(心跳机制),告诉Eureka Server当前Eureka Client存活
  2. Eureka Server统计15分钟内心跳成功的比率是否低于85%,如果低于85% Eureka Server将进入自我保护模式(认为当前服务之间通信存在网络异常),将当前Eureka Server上的注册信息保存起来,并且提示上面红色警告。
  3. 如果Eureka Server判断网络正常,并且Eureka Server在3个更新周期90秒内未收到Eureka Client的更新请求,Eureka Server会注销该服务。

这种机制也可以关闭,但是在生产环境中推荐使用

## 关闭自我保护模式

eureka:

 server:

   enable-self-preservation: false

关闭自我保护模式之后,Eureka Dashboard中会出现如下提示:

THE SELF PRESERVATION MODE IS TURNED OFF. THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.

目录
相关文章
|
10月前
|
缓存 监控 负载均衡
SpringCloud极简入门-Eureka集群&Eureka调优
当微服务数量达到上百之数,一个EurekaServer所需要承担的压力会比较大,加上单节点故障问题可能会导致整个微服务不可被访问,由于EurekaServer在微服务中举足轻重,我们需要考虑对EurekaServer做高可用集群。
250 0
|
10月前
|
存储 监控 Java
SpringCloud极简入门-服务注册与发现-Eureka
微服务的其中一个特点是服务之间需要进行网络通信,服务器之间发起调用时调用服务得知道被调用服务的通信地址,试问当微服务数量成百上千之多,程序员该如何管理众多的服务通信地址,对于随时新增加的微服务和下线的微服务,又应该如何去动态添加和删除这些微服务的通信地址呢?所以手工管理服务的通信地址是一件遥不可及的事情,我们需要借助一个强大的工具帮我们实现这一功能 - Eureka,同类型的组件还有 zookeeper,consul等
87 0
SpringCloud极简入门-服务注册与发现-Eureka
|
9月前
|
负载均衡 监控 Java
【springcloud】eureka服务治理入门
【springcloud】eureka服务治理入门
66 0
|
10月前
手把手教你搭建SpringCloud项目(六)Eureka实现服务发现
手把手教你搭建SpringCloud项目(六)Eureka实现服务发现
|
12月前
|
Java Nacos 数据安全/隐私保护
都2023了,为什么选择Nacos,这篇文章让你入门Nacos
2023了,为什么选择Nacos,这篇文章让你入门Nacos.Nacos算是阿里的巅峰之作了 , 集万千优点与一身, 比Eureka更便捷,更优秀,更完美而且Nacos的社区非常的活跃因为它使用简单,易操作,易上手而且比Eureka有着更加优秀的控制台界面.下面来简单认识一下今天的主角Nacos吧
166 0
|
监控 Dubbo 算法
Eureka 是什么|学习笔记
快速学习 Eureka 是什么
127 0
Eureka 是什么|学习笔记
|
算法 NoSQL Java
简单回顾 Nacos 与 Eureka 的区别|学习笔记
快速学习简单回顾Nacos与Eureka的区别
190 0
|
缓存 JSON 监控
01、SpringCloud之Eureka学习笔记(二)
01、SpringCloud之Eureka学习笔记(二)
01、SpringCloud之Eureka学习笔记(二)
|
负载均衡 Java Nacos
01、SpringCloud之Eureka学习笔记(一)
01、SpringCloud之Eureka学习笔记(一)
01、SpringCloud之Eureka学习笔记(一)
|
缓存 安全 NoSQL
SpringCloud入门学习之Eureka
SpringCloud入门学习之Eureka
154 0
SpringCloud入门学习之Eureka