写点什么

eureka 的解析

作者:卢卡多多
  • 2022 年 6 月 21 日
  • 本文字数:2268 字

    阅读完需:约 7 分钟

eureka的解析

一、Eureka

基本概念

Eureka 是 Netflix 开发的服务发现框架,SpringCloud 将它集成在自己的子项目 spring-cloud-netflix 中,实现 SpringCloud 的服务发现功能。Eureka 包含两个组件:


  • Eureka Server\

  • Eureka Client\


Eureka Server 提供服务注册服务:


  • 各个节点启动后,会在 Eureka Server 中进行注册,这样 EurekaServer 中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。\

  • 多个 Eureka Server 之间通过复制的方式,来实现服务注册表数据的同步。\


Eureka Client 是一个 java 客户端:


  • 客户端同时也包含一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

  • 在应用启动后,将会 向 Eureka Server 发送心跳维持自己的注册状态,默认周期为 30 秒,如果 Eureka Server 在多个心跳周期内没有 接收到某个节点的心跳,Eureka Server 将会从服务注册表中注销该实例,把这个服务节点移除,默认周期为 90 秒。


server 端配置


# 每间隔30s,向服务端发送一次心跳,证明自己依然”存活“
复制代码


eureka.instance.lease-renewal-interval-in-seconds=30
复制代码


#告诉服务端,如果我90s之内没有给你发心跳,就代表我“死”了,将我踢出掉
复制代码


eureka.instance.lease-expiration-duration-in-seconds=90
复制代码


client 端配置


  • Eureka Client 会缓存服务注册表中的信息,所以 Eureka Client 无须每次调用微服务都要先查询 Eureka Server,能有效地缓解 Eureka Server 的压力,而且即使所有的 Eureka Server 节点都宕掉,Client 依然可以根据缓存中信息找到服务提供者。\


#从注册中心获取注册信息,默认true
复制代码


eureka.client.fetchRegistry=true
复制代码


# 从注册中心获取注册信息的时间间隔,默认30s
复制代码


eureka.client.registryFetchIntervalSeconds=30
复制代码


综上,Eureka 通过心跳检查、集群、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。\


\

二、搭建 Eureka 服务器

官方文档:https://spring.io/projects/spring-cloud


http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#spring-cloud-eureka-server

1、父工程中定义 Spring Cloud 的版本

<dependencyManagement>
复制代码


    <dependencies>
复制代码


 
复制代码


        <!--Spring Cloud-->
复制代码


        <dependency>
复制代码


            <groupId>org.springframework.cloud</groupId>
复制代码


            <artifactId>spring-cloud-dependencies</artifactId>
复制代码


            <version>Finchley.SR2</version>
复制代码


            <type>pom</type>
复制代码


            <scope>import</scope>
复制代码


        </dependency>
复制代码


    </dependencies>
复制代码


</dependencyManagement>
复制代码

2、创建 Eureka 服务器模块

创建 Maven 模块:guli-commonservice-eureka

3、配置 pom

<dependencies>
复制代码


    <!--注册中心-->
复制代码


    <dependency>
复制代码


        <groupId>org.springframework.cloud</groupId>
复制代码


        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
复制代码


    </dependency>
复制代码


</dependencies>
复制代码

4、配置 application.properties

#服务端口
复制代码


server.port=8220
复制代码


 
复制代码


# 服务名
复制代码


spring.application.name=guli-eureka
复制代码


 
复制代码


# 环境设置:dev、test、prod
复制代码


spring.profiles.active=dev
复制代码


 
复制代码


#Eureka客户端与Eureka服务端进行通信的地址
复制代码


eureka.client.service-url.defaultZone=http://192.168.100.100:8220/eureka
复制代码


 
复制代码


#属性表示是否将自己注册到Eureka Server, 默认为true。 由于当前应用就是Eureka Server, 因此设为 false;
复制代码


# 单节点关闭
复制代码


eureka.client.register-with-eureka=false
复制代码


#表示是否从Eureka Server获取注册信息,默认为true。 如果这是一个单点的 Eureka Server,不需要同步其他节点的数据,可以设为false。
复制代码


# 单节点关闭
复制代码


eureka.client.fetch-registry=false
复制代码

5、创建启动类

在启动类上添加注解 @EnableEurekaServer


package com.guli.eureka;
复制代码


@SpringBootApplication
复制代码


@EnableEurekaServer
复制代码


public class EurekaServerApplication {
复制代码


    public static void main(String[] args) {
复制代码


        SpringApplication.run(EurekaServerApplication.class);
复制代码


    }
复制代码


}
复制代码

6、logback.xml

7、启动 Eureka 注册中心并在浏览器中访问

http://127.0.0.1:8220/\


System Status:系统信息


DS Replicas:服务器副本


Instances currently registered with Eureka:已注册的微服务列表


General Info:一般信息


Instance Info:实例信息

三、服务注册

在 edu 微服务中完成以下配置\

1、客户端配置 pom

配置 Eureka 客户端的 pom 依赖


<!--服务注册-->
复制代码


<dependency>
复制代码


     <groupId>org.springframework.cloud</groupId>
复制代码


     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
复制代码


</dependency>
复制代码

2、添加服务配置信息

配置 application.properties,在客户端微服务中添加注册 Eureka 服务的配置信息


#指定注册中心地址
复制代码


eureka.client.service-url.defaultZone=http://192.168.100.100:8220/eureka/
复制代码


#eureka服务器上获取的是服务器的ip地址
复制代码


eureka.instance.prefer-ip-address=true
复制代码

3、添加 Eureka 客户端注解(可选)

这是我参与「掘金日新计划 · 6 月更文挑战」的第 21 天 ,点击查看活动详情在客户端微服务启动类中添加注解


在启动类使用@EnableDiscoveryClient或者@EnableEurekaClient声明该应用为 Eureka Client


@EnableEurekaClient
复制代码


@EnableDiscoveryClient或者@EnableEurekaClient的区别在于前者是后者的抽象。在 Spring Cloud 中,服务发现组件有多种,@EnableDiscoveryClient为各种服务组件提供了支持,而@EnableEurekaClient则只能与 Eureka 一起工作。在 Edgware 版本之后,不再需要添加该注解。

4、启动客户端微服务

启动注册中心


启动已注册的微服务,可以在 Eureka 注册列表中看到被注册的微服务

发布于: 刚刚阅读数: 3
用户头像

卢卡多多

关注

努力寻找生活答案的旅途者 2020.04.12 加入

公众号:卢卡多多,欢迎一起交流学习 2021年度优质创作者

评论

发布
暂无评论
eureka的解析_Eureka_卢卡多多_InfoQ写作社区