Spring Cloud Eureka

Spring Cloud Eureka源码分析 前面的文章中,已经简单介绍了Spring Cloud Eureka的用法,下面再说明下详细的功能和源码。 Spring Cloud Eureka分为Server端和Client端,Server端作为应用的注册中心,Client端会向Server端注册自己的服务。 Eureka Server和Eureka Client都是采用Java编写的,所以,Eureka主要适用于通过Java实现的分布式系... 阅读详情

Spring Cloud Eureka

服务治理

服务治理组件是微服务架构最核心和基础的模块,主要实现各个微服务实例的自动注册与发现。

服务注册

每个微服务向注册中心登记自己提供的服务,将主机、端口、版本号、通信协议等一些附加信息告知注册中心,注册中心按服务名分类组织服务清单。注册中心维护一个心跳去监测清单中服务是否可用,若不可用从服务清单中剔除。

服务发现

在服务治理框架下运行,服务间的调用不用指定具体服务实例的地址,而是通过服务名发起请求调用实现。调用方需要向注册中心咨询服务,获取所有服务列表,实现对具体服务的调用。对于同一个服务名多个服务实例,调用方将以某种策略获取出一个位置进行访问。

Eureka

Eureka服务端

Eureka服务端即服务注册中心。提供注册中心相关功能,可以集群方式部署

Eureka客户端

处理服务的注册与发现。客户端服务通过注解和参数配置的方式,嵌入在客户端应用程序代码中,应用程序运行时,Eureka客户端向注册中心注册自身提供的服务并周期性地发送心跳来更新服务租约。同时,也能从服务端查询当前注册的服务信息列表并缓存到本地并周期性地刷新服务状态。

搭建服务注册中心

1.创建基础Spring Boot工程,命名为eureka-server,并在pom.xml中引入必要的依赖

        <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>1.5.14.RELEASE</version>
          <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <dependencies>
          <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
          </dependency>
          <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
              <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
              </exclusion>
             </exclusions>
           </dependency>
           <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-eureka-server</artifactId>
           </dependency>
        </dependencies>        

2.@EnableEurekaServer注解启动一个服务注册中心

        @EnableEurekaServer
        @SpringBootApplication
        public class EurekaServerApplication {

                public static void main(String[] args) {

                        SpringApplication.run(EurekaServerApplication.class, args);

                }

        }

3.添加bootstrap.yum文件

        server:
          port: 8000
        spring:
          application:
            name: eureka-server

4.添加application.yml配置文件

        eureka:
          instance:
            preferIpAddress: true
            leaseRenewalIntervalInSeconds: 10
            leaseExpirationDurationInSeconds: 30
          client:
            register-with-eureka: false
            fetch-registry: false
            serviceUrl:
              defaultZone: ${EUREKA_DEFAULT_ZONE:http://localhost:8000/eureka/}
            registryFetchIntervalSeconds: 10
            disable-delta: true
          server:
            evictionIntervalTimerInMs: 4000

eureka.client.register-with-eureka: 设置是否向注册中心注册服务,因为本身为注册中心不需要注册自己。如果是注册中心集群则不需要此配置,默认为true。

eureka.client.fetch-registry: 设置是否去注册中心检索服务,因为本身为注册中心维护有服务列表不用去检索。如果为注册中心集群则不需此配置,默认为true。

eureka.client.serviceUrl.defaultZone: 注册中心地址

eureka.client.registryFetchIntervalSeconds: 间隔多久去拉取服务注册信息,默认30秒

服务提供者

1.创建一个Spring Boot项目,命名为oauth-server,pom.xml如下

       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-undertow</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
           <exclusions>
               <exclusion>
                   <groupId>org.springframework.boot</groupId>
                   <artifactId>spring-boot-starter-tomcat</artifactId>
               </exclusion>
           </exclusions>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
       </dependency>
       <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
       </dependency>

2.添加@EnableDiscoveryClent注解,开启服务发现功能

      @EnableEurekaClient
      @SpringBootApplication
      public class OauthServerApplication {

              public static void main(String[] args) {

                      SpringApplication.run(OauthServerApplication.class, args);

              }
      }

3.添加bootstrap.yml配置文件

        server:
          port: 8020
        spring:
          application:
            name: oauth-server

4.添加applocation.yml文件::

     eureka:
       client:
         serviceUrl:
           defaultZone: ${EUREKA_DEFAULT_ZONE:http://localhost:8000/eureka/}
         registryFetchIntervalSeconds: 10

服务治理机制

在这里插入图片描述

服务提供者

服务注册

服务启动时服务通过reset请求将自己注册到Eureka,同时带上服务的一些元数据信息。Eureka接收到reset请求后,将元数据信息存储在一个双层结构Map中,第一层的key是服务名,第二层的key是服务实例名。

服务同步

上图中两个服务提供者分别注册到两个注册中心,由于注册中心之间的相互注册,当服务提供者发送注册请求到一个注册中心时,它会将该请求转发到相连的其它注册中心,从而实现注册中心之间的服务同步。我们可以从任意一个注册中心获取所有的注册服务信息。

服务续约

服务注册完成之后,服务提供者将维护一个心跳来告诉注册中心服务还活着,防止注册中心将实例从服务列表中剔除。eureka.instance.lease-renewal-interval-in-second参数用于定义服务续约任务的调用间隔时间,默认30秒。eureka.instanc.lease-expiration-duration-in-seconds参数用于定义服务失效时间,默认90秒。

服务消费者

获取服务

服务消费者启动时,将发送REST请求从服务注册中心获取注册的服务信息列表。为了性能考虑,Eureka会维护一份只度的服务清单来返回给客户端,同时该缓存清单会每隔30秒更新一次。eureka.client.registry-fetch-interval-seconds设置更新缓存服务清单时间。

服务调用

服务消费者在获取到服务信息列表后,通过服务名可以获取服务对应的实例名和元数据信息。消费者可以自己选择需要具体调用那个实例,在Ribbon中会默认采用轮询方式进行调用,从而实现客户端的负载均衡。

服务下线

系统运行过程中服务停止或重启,服务将发起一个REST请求给注册中心,注册中心将实例状态设置为下线,并且将这个时间传播出去

服务注册中心

失效剔除

当服务超过设置的服务失效剔除时间,注册中心将中服务列表中剔除服务实例信息。

自我保护

当服务心跳失败比例小于85%时,注册中心将启动自我保护机制,注册中心将不会剔除失效服务。

Spring Cloud Eureka 增加权限认证 上篇文章我们简单的介绍了下注册中心Eureka,文章地址:http://cxytiandi.com/blog/detail/11988Eureka自带了一个web的管理页面,方便我们查询注册到上面的实例信息但是有一个问题是如果这个地址有公网IP的话,必然能直接访问到,这样是不安全的如何解决这个问题呢?加用户认证即可通过spring-security来开始用户认证<dependency> <g 阅读详情

相关推荐

实战Spring Cloud之Nacos替换Eureka

文章目录背景一、Nacos二、安装Nacos三、Nacos Discovery Client替换Eureka Client四、消费者程序通过Nacos实现服务调用小结 背景 在《实战Spring Cloud微服务治理组件Eureka》这篇文章中,我们运用了Spring Cloud Netflix 的Eureka组件,进行了微服务治理框架的搭建。 但不幸的是, Eureka 2.0 的开源工作已经停止,我们不得不寻找另外一个微服务注册及发现框架来替换Eureka. 一、Nacos 在2018年 6 月

我的博客 4027

Eureka--3、高可用注册中心的第一步,通过defaultZone深入理解zone和serviceUrl

defaultZone与serviceUrl的获取 我们平时都是用defaultZone,这个defaultZone到底是什么,为什么一定要用defaultZone,换个别的行不行。网上很多文章都是入门的,不会讲到这一点。   default-zone != defaultZone 我是用idea来写application.yml,里面对于属性的提示值不是采用骆驼命名法,而是使用短横线"-...

天下英雄出我辈,一入江湖岁月催 8万+

Spring Cloud Eureka详解

Spring Cloud Eureka是什么 spring cloud中的服务注册中心eureka。 Eureka包含两个组件:Eureka Server和Eureka Client。 Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。 Eureka Client用于简化与Eureka Server的交互,在应用启动后,将会向Eureka Se

每天进步一点点 738

Eureka 源码解析 —— Eureka-Server 启动(二)之 EurekaBootStrap

1. 概述 本文接《Eureka 源码解析 —— Eureka-Server 启动(一)之 EurekaServerConfig》,主要分享Eureka-Server 启动的过程的第二部分 ——EurekaBootStrap。 考虑到整个初始化的过程中涉及的代码特别多,拆分成两两篇文章: ServerConfig 【本文】EurekaBootStrap 推荐 Spring Cloud 书籍: 请支持正版。下载盗版,等于主动编写低级 BUG。 程序猿DD ——《Spring Cloud微服...

weixin_42073629的博客 505

硬件工程师八大细分岗位详解:从芯片到整机的技术分工与职业选择

硬件工程作为电子系统设计的核心领域,涉及从芯片级到整机级的完整技术链条。其基本原理是通过电路设计、信号处理和功率管理等技术,将电子元件集成为功能完备的硬件系统。随着产品复杂度提升,硬件工程师岗位出现高度专业化分工,这种细分不仅提升了技术深度,更优化了团队协作效率。在工程实践中,信号完整性和电源完整性成为高速数字设计的两个关键技术挑战,直接影响系统稳定性。本文基于行业热词"硬件工程师"和"信号完整性",深入解析八大细分岗位的技术差异,帮助从业者明确职业发展方向,构建系统化的硬件设计思维。

weixin_33811539的博客 458

Vue3 + OpenLayers 开发指南(一) - 环境搭建与基础配置

本文详细介绍了如何从零开始搭建Vue3与OpenLayers的集成开发环境。通过项目初始化、核心依赖安装、目录结构规划及基础配置,手把手引导开发者创建一个结构清晰、可维护的现代化WebGIS应用骨架,为后续添加地图图层和交互功能奠定坚实基础。

weixin_28049429的博客 342

eureka的EurekaBootStrap(源码解读三)

EurekaBootStrapServletContextListenerinitEurekaEnvironment()initEurekaServerContext() ServletContextListener 在eureka-server这个模块下,有一个web.xml,我们知道,它是用来给tomcat加载的。 在这个文件里,加载了一个listener: <listener> <listener-class>com.netflix.eureka.EurekaBoo

weixin_43810802的博客 703

SRT公网点对点传输及搭建SRT流媒体服务器

SRT是一种开源传输技术,它是基于UDP协议的,与RTMP不同的是,它具有高码率低延迟的传输特性,加强了在复杂不稳定网络环境中的传输可靠性,提升了不可预测的网络环境上的流传输性能。它不像NDI那样只适用于局域网传输,它更适用于公网环境下的信号传输。 S代表Secure,即安全加密的视频流,R代表Reliable,即具有从数据严重丢包中恢复的可靠性,T代表Transport,即动态适应变化的网络状况。 在音视频数据包传输的过程中,SRT会检测并适应两个传输点之间的实时网络状况,有助于补偿由于网络的拥塞而引起的

罗宇。的媒体技术工作室 1万+

Spring-cloud 微服务架构搭建 01 - Eureka服务搭建及高可用配置

文章目录1. Eureka简介2. Eureka 服务特点3. Eureka-Server 服务端搭建4. Eureka-Client端进行服务注册 1. Eureka简介 在任何的分布式架构中,都需要去寻找服务的物理机器地址,我们称之为服务发现,Eureka就是解决这类问题的组件。它是类似于Zookeeper的服务注册中心组件,但Eureka保证了服务的高可用性,它自身的集群机制和服务保护机制...

安安静静美男子 338

433M遥控器无线解码1527协议

433M遥控器无线解码1527协议,定时器轮询法

weixin_58595117的博客 1万+

C#与发那科机器人通信实战:从SDK配置到机械臂控制

本文详细介绍了如何使用C#与发那科机器人进行通信,从SDK配置到机械臂控制的完整实战流程。内容包括环境准备、通信连接建立、机械臂运动控制、异常处理与状态监控,以及高级功能实战,帮助开发者快速掌握工业机器人编程技术。

weixin_42524276的博客 459

Spring Cloud Eureka介绍

Spring Cloud Eureka是Spring Cloud提供的服务治理组件,用来实现各个微服务实例的自动化注册和发现。 Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,基于Netflix Eureka做了二次封装,并且增加了Spring Boot风格的自动化配置,我们只需要通过简单引入依赖和注解配置就能让Spring Boot构建的微...

山楂树的博客 1043

手把手入门YOLO到改进优化教程 | 【P5进阶篇】YOLOv8损失函数改进实战-损失函数IoU之KLD Loss

在本节,将从 KLD Loss(Kullback–Leibler Divergence Loss)的理论到实战代码实现,带你把 KLD Loss融合进 YOLOv8 的训练框架中。并通过训练日志与实验结果,验证 KLD Loss 在实际工程中的优势。

嵌入式阿齐Archie 2万+

Spring Cloud 之 Eureka

eureka 服务注册与发现,该部分内容基于spring cloud 当前最新版本 2021.0.0学习

风儿甚是喧嚣的博客 2431

全国(山东、安徽)职业技能大赛--信息安全管理与评估大赛题目+答案讲解——windows应急响应篇

保护数据,捍卫安全,展现技能,赢得荣耀!全国职业技能大赛-信息安全与评估大赛,挑战你的技术,揭示黑客的秘密!加入我们,成为信息安全的守护者!

人若无名,便可专心练剑 910

详解账务核心,从入门到精通

本文系统阐述了账务体系的设计原理与实现方法,围绕支付交易的基础设施——账务系统展开深入探讨。文章首先从账务实现原理出发,强调从客户场景中抽象能力的重要性,详细解析了账务总架构及其与外围系统的协同关系。随后重点剖析了账户子系统的设计,包括账户生态、主体管理、结构设计等核心要素,并针对热点账户问题提出了多种创新解决方案。此外,文章还深入探讨了会计日切原理、营销类账务处理等专业领域,最后以支付机构场景为例,全面解析了清结算业务的账务实现模型。全文通过理论结合实践的方式,为构建高效、可靠的账务系统提供了系统性的方法

银行信息系统应用架构详解 532

初探Spring Cloud Eureka

既然用到微服务,服务的注册和发现应该可以算作是微服务的核心了吧。使用过dubbo的人,应该都知道dubbo的服务注册和发现中心是通过zookeeper来提供的。Eureka 是 Netflix 开源的服务注册发现组件,当然也可以提供类似的功能。 启动类:EurekaServerApplication package com.cn; import org.springframework.bo...

慕言的博客 196

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

k8s部署spring cloud eureka集群

1. 系统环境 java JDK 11 docker 19.03.9 k8s 1.18 2. eureka架构图 3. eureka配置 application.yml eureka: instance: prefer-ip-address: false # 我们使用的是hostname注册,要设置为false,否则注册不成功 client: register-with-eureka: true #相互注册 fetch-registry: true service

xgw的专栏 4916

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Spring Cloud Eureka 详解

一、Spring Cloud Eureka简介               Spring Cloud Eureka,使用Netflix Eureka 来实现服务的注册与发现, 他既包含了服务端组件,也包含了客户端组件,并且服务端与客户端均采用Java编写,所以Eureka主要适用于通过Java编写的分布式系统,或是与JVM兼容语言构建的系统。但是,由于Eureka的服务端的服务治理机制提供了完备...

weixin_41400063的博客 894

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Spring Cloud Eureka 实现

之前项目中用到了spring cloud的一些服务,这里准备将spring cloud最常用的一些服务框架进行总结和实现。 框架大致的介绍在之前的文章里面已经有提及:什么是微服务 这里就从springcloud最开始搭建说起,也就是服务发现和注册,原生提供的就是Eureka服务端和客户端,之后由于zookeeper的流行,也提供你spring cloud zookeeper的实现方式,本文主要...

harryptter的专栏 1839

【Spring Cloud】eureka

springcloud-eureka

隐市高手 1090

spring cloud eureka 集群搭建、eureka学习、spring cloud组件学习

通过配置文件多集群搭建 在 application.properties 中指定要加载的配置文件 #加载的配置文件,配置文件必须以 application- 开头,值为- 后面的值 spring.profiles.active=eur8100 这里创建了三个,分别是application-eur8100.properties、application-eur8200.properties、application-eur8300.properties 通过指定,来加载不同的配置文件。 ...

dandanforgetlove的专栏 707

Spring Cloud之Eureka

1. 项目结构 2. parent中pom.xml依赖 <?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:s...

niki_yang 340

spring cloud集成Eureka

spring cloud整合Eureka 文章目录spring cloud整合EurekaServer模块的搭建pom.xml配置启动类配置application.yam配置查看Eureka主页面client模块的搭建pom.xml配置启动类配置application.yam配置在Eureka中查看注册Eureka集群搭建Eureka的保护机制Eureka,zookeeper,consul对比Eureka中自带的Ribbon使用 Server模块的搭建 pom.xml配置 pom.xml文件,这里没有版本号

qq_43203949的博客 611

Spring Cloud Hoxton.SR1 实战 之 Eureka

前期准备:Maven、JDK1.8 1. 在spring官网创建一个spring boot项目,带Eureka组件 https://start.spring.io/ 点击“Generate”按钮下载初始化工程的压缩包demo-eureka.zip,然后解压缩到eclipse的workspace。 2. Eclipse中import existing Maven Project ...

优快云 正在崛起的新人---小麦 3234
上一篇: 单例模式
下一篇: Java内存区域与内存溢出异常
炒栗子不加糖
博客等级 码龄10年 68粉丝 123原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值