【spring cloud学习】3、Eureka Server注册中心

news2024/10/7 2:33:00

Eureka本身是Netflix开源的一款注册中心产品,并且Spring Cloud提供了相应的集成封装。选择Eureka作为注册中心实例来讲解是出于以下原因:

  • (1)Eureka在业界的应用十分广泛,整个框架经受住了Netflix严酷生产环境的考验。
  • (2)除了Eureka注册中心外,Netflix的其他服务治理功能也十分强大,包括Ribbon、Hystrix、Feign、Zuul等组件结合到一起组成了一套完整的服务治理框架,使服务的调用、路由变得异常容易。

Spring Cloud Eureka是Spring Cloud Netflix微服务套件的一部分,基于Netflix Eureka做了二次封装,主要负责完成微服务实例的自动注册与发现,这也是微服务架构中的核心和基础功能。
Eureka所治理的每一个微服务实例被称为Provider Instance(提供者实例)。每一个Provider Instance包含一个Eureka Client组件(相当于注册中心客户端组件),它的主要工作如下:

  • (1)向Eureka Server完成Provider Instance的注册、续约和下线等操作,主要的注册信息包括服务名、机器IP、端口号、域名等。
  • (2)向Eureka Server获取Provider Instance清单,并且缓存在本地。

一般来说,Eureka Server作为服务治理应用会独立地部署和运行。在新建一个Eureka Server注册中心应用时,首先需要在pom.xml文件中添加eureka-server依赖库。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

然后需要在启动类中添加**@EnableEurekaServer**注解,声明这个应用是一个Eureka Server。

接下来,在应用的配置文件application.yml中对Eureka Server的一些参数进行配置。一份基础的配置文件大致如下:

server:
    port: 7777
spring:
    application:
        name: eureka-server
eureka:
    client:
        register-with-eureka: false
        fetch-registry: false
        service-url:
            #服务注册中心的配置内容,指定服务注册中心的位置
            defaultZone:http://localhost: 7777/eureka/
    instance:
hostname: ${EUREKA_ZONE_HOST:localhost}
    server:
         enable-self-preservation: true #开启自我保护
eviction-interval-timer-in-ms: 60000   #扫描失效服务的间隔时间(单位毫秒,默认是60×1000毫秒,即60秒)

以上配置文件中包含3类配置项:作为注册中心的配置项(eureka.server.)、作为服务提供者的配置项(eureka.instance.)、作为注册中心客户端组件的配置项(eureka.client.*)。它们的具体含义稍后介绍。

配置完成后,运行启动类EurekaServerApplication就可以启动Eureka Server,然后通过浏览器访问Eureka Server的控制台界面(其端口为server.port配置项的值)

image.png

实际上一个Eureka Server实例身兼三个角色:注册中心、服务提供者、注册中心客户端组件。主要原因如下:

  • (1)对于所有Provider Instance而言,Eureka Server的角色是注册中心。- (2)对于Eureka Server集群中其他的Eureka Server而言,Eureka Server的角色是注册中心客户端组件。
  • (3)Eureka Server对外提供REST接口的服务,当然也是服务提供者。

1.Eureka Server作为注册中心的配置项

Eureka Server作为注册中心的配置项以eureka.server.*作为前缀,大致如下:

  • (1)eureka.server.enable-self-preservation:此配置项用于设置是否关闭注册中心的保护机制。什么是保护机制呢?Eureka Server会定时统计15分钟之内心跳成功的Provider实例的比例,如果低于85%就会触发保护机制,处于保护状态的Eureka Server不剔除失效的服务提供者。enable-self-preservation的默认值为true表示开启自我保护机制。如果15分钟之内心跳成功的Provider实例的比例高于85%,那么Eureka Server仍然会处于正常状态。
  • (2)eureka.server.eviction-interval-timer-in-ms:配置Eureka Server清理无效节点的时间间隔,默认为60 000毫秒**(60秒)**。但是,如果Eureka Server处于保护状态,此配置就无效。

2.Eureka Server作为服务提供者的配置项

Eureka Server自身是一种特殊的服务提供者,对外提供REST服务,所以需要配置一些Provider实例专属的配置项,这些配置项以eureka.instance.*作为前缀,大致如下:

  • (1)eureka.instance.hostname:设置当前实例的主机名称。
  • (2)eureka.instance.appname:设置当前实例的服务名称。默认值取自spring.application.name配置项的值,如果该选项没有值,eureka.instance.appname的值就为unknown。在Eureka服务器上,服务提供者的名称不区分字母大小写。
  • (3)eureka.instance.ip-address:设置当前实例的IP地址。
  • (4)eureka.instance.prefer-ip-address:如果配置为true,就使用IP地址的形式来定义Provider实例的访问地址,而不是使用主机名来定义Provider实例的地址。如果同时设置了eureka.instance.ip-address选项,就使用该选项所配置的IP,否则自动获取网卡的IP地址作为Provider实例的访问地址。默认情况下,此配置项的值为false,即使用主机名来定义Provider实例的访问地址。
  • (5)eureka.instance.lease-renewal-interval-in-seconds:定义Provider实例到注册中心续约(心跳)的时间间隔,单位为秒,默认值为30秒
  • (6)eureka.instance.lease-expiration-duration-in-seconds:定义Provider实例失效的时间,单位为秒,默认值为90秒
  • (7)eureka.instance.status-page-url-path:定义Provider实例状态页面的URL,此选项配置的是相对路径,默认使用HTTP访问,如果需要使用HTTPS,就使用绝对路径配置。默认的相对路径为/info。
  • (8)eureka.instance.status-page-url:定义Provider实例状态页面的URL,此选项配置的是绝对路径。
  • (9)eureka.instance.health-check-url-path:定义Provider实例健康检查页面的URL,此选项配置的是相对路径,默认使用HTTP访问,如果需要使用HTTPS,就使用绝对路径配置。默认的相对路径为/health。
  • (10)eureka.instance.health-check-url:定义Provider实例健康检查页面的URL,此选项配置的是绝对路径。

3.Eureka Server作为注册中心客户端组件的配置项

如果集群中配置了多个Eureka Server,那么节点和节点之间是对等的,在角色上一个Eureka Server同时也是其他Eureka Server实例的客户端,它的注册中心客户端组件角色的相关配置项以eureka.client.*作为前缀,大致如下:

  • (1)eureka.client.register-with-eureka:作为Eureka Client,eureka.client.register-with-eureka表示是否将自己注册到其他的Eureka Server上,默认为true。因为当前集群只有一个Eureka Server,所以需要设置成false。
  • (2)eureka.client.fetch-registry:作为Eureka Client,是否从Eureka Server获取注册信息,默认为true。因为本例是一个单点的Eureka Server,不需要同步其他Eureka Server节点数据,所以设置为false。
  • (3)eureka.client.registery-fetch-interval-seconds:作为Eureka Client,从Eureka Server获取注册信息的间隔时间,单位为秒,默认为30秒
  • (4)eureka.client.eureka-server-connect-timeout-seconds:Eureka Client组件连接到Eureka Server的超时时间,单位为秒,默认值为5
  • (5)eureka.client.eureka-server-read-timeout-seconds:Eureka Client组件读取Eureka Server信息的超时时间,单位为秒,默认值为8。
  • (6)eureka.client.eureka-connection-idle-timeout-seconds:Eureka Client组件到Eureka Server连接的空闲超时的时间,单位为秒,默认值为30。
  • (7)eureka.client.filter-only-up-instances:从Eureka Server获取Provider实例清单时是否进行过滤,只保留UP状态的实例,默认值为true。
  • (8)eureka.client.service-url.defaultZone:作为Eureka Client,需要向远程的Eureka Server自我注册,发现其他的Provider实例。此配置项用于设置Eureka Server的交互地址,在具有注册中心集群的情况下,多个Eureka Server的交互地址之间可以使用英文逗号分隔开。

此配置项涉及Spring Cloud中的Region(地域)与Zone(可用区)两个概念,两者都是借鉴AWS(Amazon云)的概念。在非AWS环境下,Region和Zone可以理解为服务器的位置,Region可以理解为服务器所在的地域,Zone可以理解为服务器所处的机房。一个Region可以包含多个Zone。不同的Region的距离很远,一个Region的不同Zone间的距离往往较近,也可能在同一个物理机房内。
在网络环境跨地域、跨机房的情况下,Region与Zone都可以在配置文件中进行配置。配置Region与Zone的主要目的是,在网络环境复杂的情况下帮助客户端就近访问需要的Provider实例。负载均衡组件Spring Cloud Ribbon的默认策略是优先访问与客户端处于同一个Zone中的服务端实例,只有当同一个Zone中没有可用服务端实例时,才会访问其他Zone中的实例。如果网络环境不复杂,比如所有服务器都在同一个地域同一个机房,就不需要配置Region与Zone。如果不配置Region选项值,那么它的默认值就为us-east-1;如果不配置Zone的Key值,那么它的默认Key值就为defaultZone。可以通过eureka.client.serviceUrl.defaultZone选项设置默认Zone的注册中心Eureka Server的访问地址。Spring Cloud的注册中心地址是以Zone为单位进行配置的,一个Zone如果有多个注册中心,则要使用逗号分隔开。如果有多个机房,就配置多个eureka.client.serviceUrl.ZoneName配置项。举个例子,假设在上海区域有两个机房,每一个机房有一个注册中心Eureka Server,那么Eureka Server配置文件中有关Zone和注册中心的配置大致如下:

eureka:
    client:
       region: Beijing               #指定Region为上海
       availabilityZones:
            Beijing:zone-2,zone-1      #指定上海的机房为zone-2、zone-1
       serviceUrl:
           #zone-1机房的Eureka Server
            zone-1: http://localhost:7777/eureka/    
            #zone-2 机房的Eureka Server
zone-2: http://localhost: 7778/eureka/   

在配置注册中心地址时,如果Eureka Server加入了安全验证,那么注册中心的URL格式为:

http://<username>:<password>@localhost:8761/eureka

其中,为安全校验的用户名,为该用户的密码。

  • (9)eureka.client.serviceUrl.*:此配置项是上面第(8)项的上一级配置项,用于在多个Zone的场景下配置注册中心,它的类型为HashMap,Key为Zone,Value为机房中的所有注册中心地址。如果没有多个Zone,那么此配置项有一个默认的可用区,Key为defaultZone。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt中的信号和信号槽(一)

目录 1. 信号和槽概述 信号和槽的关系 2. 标准信号槽使用 标准信号/槽 示例&#xff1a; 3. 自定义信号槽使用 自定义信号 自定义槽 示例&#xff1a; 1. 信号和槽概述 信号和槽是一种事件驱动的通信机制&#xff0c;广泛应用于Qt框架的事件处理、GUI编程、网络通信等…

如何在教育与科研领域使用ChatGPT

ChatGPT提示是您给予ChatGPT的一系列指示&#xff0c;以便它能够按需生成结果。由于ChatGPT是一种会话型人工智能&#xff0c;因此它需要明确的指示才能生成准确的结果。 ChatGPT提示的结构通常是以指令格式呈现的。它看起来像是您在与AI交流&#xff0c;给予它执行特定任务的…

基于树莓派4B的OpenCV安装与简单应用(真速通版)

前言&#xff1a;本文为手把手教学树莓派4B的OpenCV安装与简单应用&#xff08;真速通版本&#xff09;&#xff0c;树莓派4B最为目前最新款的树莓派家族一员深受创客和开发者喜爱。树莓派4B作为一款搭载 Cortex-A72 系列芯片的板载电脑&#xff0c;其不仅可以作为简单的 MCU 进…

第三方库介绍——Protobuf库(更高效的协议)

文章目录 protobuf综述传输协议与指令创建协议编译协议介绍addressbook.pb.h文件序列化与反序列化的接口 利用soctet实现客户端与服务端传输协议Linux&#xff08;Ubuntu&#xff09;安装protoc步骤编写案例代码Cartoon.prototcpsocket.hMyTcpsocket.hclient.cppserver.cppCMak…

01.4进程原理和系统调用--->经典的CFS调度器

进程的一些正常状态 什么是进程 操作系统作为硬件的使用层&#xff0c;提供使用硬件资源的能力&#xff0c;进程作为操作系统使用层&#xff0c; 提供使用操作系统抽象出的资源层的能力。 进程&#xff1a;是指计算机中已运行的程序。进程本身不是基本的运行单位&#xff0c;…

【微服务】springboot 通用限流方案设计与实现

目录 一、背景 二、限流概述 2.1 dubbo 服务治理模式 2.1.1 dubbo框架级限流 2.1.2 线程池设置 2.1.3 集成第三方组件 2.2 springcloud 服务治理模式 2.2.1 hystrix 2.2.2 sentinel 2.3 网关层限流 三、常用限流策略 3.1 限流常用的算法 3.1.1 令牌桶算法 3.1.2 …

2023最新Java面试八股文汇总(五十万字总结版)

写在前面 今年的疫情&#xff0c;让招聘面试变得雪上加霜。已经有不少大厂&#xff0c;如腾讯、字节跳动的招聘名额明显减少&#xff0c;面试门槛却一再拔高&#xff0c;如果不用心准备&#xff0c;很可能就被面试官怼得哑口无言&#xff0c;甚至失去了难得的机会。 现如今&a…

<Linux开发>驱动开发 -之- Linux RTC 驱动

&#xff1c;Linux开发&#xff1e;驱动开发 -之- Linux RTC 驱动 交叉编译环境搭建&#xff1a; &#xff1c;Linux开发&#xff1e; linux开发工具-之-交叉编译环境搭建 uboot移植可参考以下&#xff1a; &#xff1c;Linux开发&#xff1e; -之-系统移植 uboot移植过程详细…

Dubbo【 Dubbo概念(什么是分布式系统、什么是RPC、核心组件、Zookeeper注册中心 )】(一)-全面详解(学习总结---从入门到深化)

目录 Dubbo概念_什么是分布式系统 什么是分布式 Dubbo概念_什么是RPC Dubbo概念_简介 Dubbo概念_核心组件 Dubbo配置开发环境_Zookeeper注册中心 Dubbo配置开发环境_管理控制台 Dubbo入门案例_需求介绍 Dubbo入门案例_配置开发环境 Dubbo入门案例_服务生产者配置…

VLC-QT源码编译(Windows10+VS2020+MSVC20019+QT5.15)

参考VLC-Qt的编译与使用 windows10VS2019qt5.15 下载源码 VLC-QT https://github.com/vlc-qt/vlc-qt可以通过git或者直接下载ZIP文件&#xff0c;但是里面的libvlc-header和packaging没有下载下来&#xff0c;需要再自行下载。 VLC https://download.videolan.org/vlc/las…

行为型模式--备忘录模式

目录 概述 结构 案例实现 “白箱”备忘录模式 总结&#xff1a; “黑箱”备忘录模式 优缺点 优点&#xff1a; 缺点&#xff1a; 使用场景 概述 又叫快照模式&#xff0c;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这…

zeromq的学习笔记

ctx_t 在创建ctx_t时&#xff0c;会设置以下参数 _io_thread_count io线程数默认是1 _max_sockets最大socket数是1023 _starting标识设置为true,此时socket还没有创建 _terminating设置为false,在调用zmq_ctx_term时该标识会设置为true _tag设置为ZMQ_CTX_TAG_VALUE_GOOD&…

mySql和VSC++

确认主机服务里的mysql服务已打开 使用组合键“winR”运行“services.msc”&#xff0c;进入本地服务窗口&#xff1b; 2.进入本地服务窗口后&#xff0c;在右侧服务列表中&#xff0c;查找到“ mysql ”服务选项&#xff1b; 3.查找到mysql服务选项后&#xff0c;双击打开mysq…

C++ 面向对象(3)——重载运算符和重载函数

C 允许在同一作用域中的某个函数和运算符指定多个定义&#xff0c;分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明&#xff0c;但是它们的参数列表和定义&#xff08;实现&#xff09;不相同。 当您调用一个重…

FDM3D打印系列——3、常用打印材料介绍

大家好&#xff0c;我是阿赵。 FDM3D打印机一般都可以支持多种打印材料的&#xff0c;下面来介绍一下几种常用的打印材料 一、PLA 使用FDM打印&#xff0c;最常见的材料就是PLA了 PLA&#xff08;Polylactic acid&#xff09;&#xff0c;中文名为生物降解塑料聚乳酸&#…

网络安全面试题,渗透测试面试总结

1.什么是WebShell? WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的─种命令执行环境&#xff0c;也可以将其称做为─种网页后门。黑客在入侵了─个网站后&#xff0c;通常会将这些asp或php后门文件与网站服务器WEB目录下正常的网页文件混在─起&#xff0c;然后就可…

【Vue3】生命周期(钩子)函数

在 Vue 3 中&#xff0c;生命周期函数已经被重新设计为钩子函数&#xff0c;并且与 Vue 2 中的生命周期函数有所不同&#xff0c;可以在 setup 函数中使用 onXXX 形式的钩子函数来执行对应的操作。以下是选项式 API 和组合式 API 中常用的几个钩子函数对比&#xff1a; beforeC…

【Java】PriorityQueue--优先级队列

目录 一、优先级队列 &#xff08;1&#xff09;概念 二、优先级队列的模拟实现 &#xff08;1&#xff09;堆的概念 &#xff08;2&#xff09;堆的存储方式 &#xff08;3&#xff09;堆的创建 堆向下调整 &#xff08;4&#xff09;堆的插入与删除 堆的插入 堆的…

Kubernetes(k8s)容器编排组件介绍

目录 1 整体架构1.1 Master 架构1.2 Node 架构 2 k8s部署组件介绍2.1 K8s 集群架构图2.2 k8s控制组件2.2.1 控制平面2.2.2 kube-apiserver2.2.3 kube-scheduler2.2.4 kube-controller-manager2.2.5 etcd 2.3 k8s运行组件2.3.1 k8s节点2.3.2 容器集2.3.3 容器运行时引擎2.3.4 ku…

机试复试准备中--梦校真题

一、矩阵转置二、统计单词写法一&#xff1a;读取一整行写法二&#xff1a;依次读入每一个单词 三、二叉排序树&#xff08;DFS&#xff09;四、IP地址五、特殊排序六、ab&#xff08;高精度加法&#xff09;七、奇偶校验八、最大的两个数九、二叉树遍历(DFS)十、成绩排序十一、…