eureka源码

Eureka源码分析之eureka-client     很多人对Eureka进行了源码分析,但是主要着重于Eureka server端的源码分析,本篇博文着重分析eureka-client的分析,先上图看类结构(首先声明以下内容为本人浅显见解,如有不妥请指正批评)eureka客户端核心jar包为以上截图,其中核心的类包为截图选中的com.netflix.discovery包。com.netflix.discovery包主要解决Eureka注册中... 阅读详情

功能快捷键

eureka服务端

EurekaServerAutoConfiguration自动配置类,注册各种bean,包括PeerAwareInstanceRegistry用于服务注册(实际就是父类AbstractInstanceRegistry提供的ConcurrentHashMap(ConcurrentHashMap<String, Map<String, Lease>> )存放存放eureka服务端:服务注册列表:registry)、以及jersey。

这里扫描获取所有@Path注解的类

ApplicationResource提供注册接口addInstance

接收服务注册请求,将InstanceInfo服务信息调用PeerAwareInstanceRegistry.register将其信息组装后放入名叫registry(实际就是父类AbstractInstanceRegistry提供的ConcurrentHashMap存放服务注册列表:registry))的一个ConcurrentHashMap中,这样就完成了服务注册操作。

【ConcurrentHashMap<String, Map<String, Lease>> 】,具体存放信息结构如下:

        "实例的唯一ID": { // 实例标识符
                    "lease": { // 持有实例信息
                                    "instanceInfo": { // 实例信息
                                                        "appName": "客户端服务", 
                                                         "instanceId": "实例的唯一ID", 
                                                         ipAddr": "IP地址", 
                                                         port": "调用端口" 
                                                          }            
                                          }       
                                   }   
  }}

ApplicationsResource提供服务列表获取getContainers

接收服务列表获取访问,调用ResponseCacheImpl.getGZIP其实际就是通过readWriteCacheMap(LoadingCache<Key, Value>)中获取到信息,而这这个readWriteCacheMap信息是在实例化ResponseCacheImpl时进行初始化数据的,初始化是真正调用到的是ResponseCacheImpl.generatePayload进行readWriteCacheMap赋值,而这里就是从AbstractInstanceRegistry的registry.entrySet()获取所有服务信息将其进行处理返回。

服务端通过客户端发送的心跳进行服务的续约(续约时间固定),当超过续约时间未收到客户端心跳则会进行剔除操作,当然服务端下线时也会主动触发请求服务端进行服务剔除,服务续约请求:InstanceResource.renewLease()进行服务时间的刷新;

主动触发剔除请求:InstanceResource.cancelLease()调用的是AbstractInstanceRegistry.internalCancel()进行服务删除;
定时查看对比各服务的续约时间是否超期,是则发起剔除操作:AbstractInstanceRegistry.evict()查询服务是否过期,过期的调用AbstractInstanceRegistry.internalCancel()进行服务删除

eureka客户端

服务注册和客户端调用时使用:向eureka注册服务和拉取服务列表

1. 调用eureka服务端接口进行服务列表获取

EurekaClientAutoConfiguration 自动配置加载bean CloudEurekaClient (这里会通过jersey进行调用eureka服务端接口(ApplicationsResource.getContainers)

请求拿到所有注册的客户端服务)定时刷新服务:DiscoveryClient【CloudEurekaClient的父类】初始化的时候会调用initScheduledTasks启动一个延迟任务默认30秒后执行的一个TimedSupervisorTask单任务(该任务又启动一个每延迟30秒【同前面的30秒】重新复调用TimedSupervisorTask)之后每间隔30秒执行任务,实际调用进程DiscoveryClient.CacheRefreshThread的refreshRegistry方法进行服务的刷新。

放入服务列表缓存DiscoveryClient.localRegionApps

2. 调用eureka服务端接口进行服务注册

DiscoveryClient【CloudEurekaClient的父类】初始化的时候会调用DiscoveryClient.register()方法这里将进行发起jersey请求调用服务端接口进行InstanceInfo信息注册。

定时向服务端发送心跳请求进行续约时间刷新:

这里与上面的服务列表更新一样也是构造一个TimedSupervisorTask定时任务,实际调用进程是HeartbeatThread,该进程调用DiscoveryClient.renew()发起jersey请求服务端的接口(InstanceResource.renewLease())进行服务的续约然后也刷新DiscoveryClient.lastSuccessfulHeartbeatTimestamp时间。当自己下线时触发主动发送剔除服务请求,其实利用@PreDestroy就是当bean注销时进行该方法操作,调用DiscoveryClient.shutdown让所有定时任务停止以及发起jersey请求调用服务端InstanceResource.cancelLease()接口进行主动请求剔除

总结

eureka客户端服务启动时初始化 DiscoveryClient调用register进行向eureka服务端发送注册操作;接着进行调用initScheduledTasks启动各种定时任务,包括:服务列表定时向eureka服务端发送获取服务列表接着放入localRegionApps缓存,以及启动一个心跳任务,定时向eureka服务端发送心跳进行续约操作;当客户端DiscoveryClient注销时进行调用unregister向服务端发送下线剔除

原文出自
https://blog.youkuaiyun.com/u011320740/article/details/106340377

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

相关推荐

SpringCloud Eureka 源码分析

Eureka架构分析 以及 SpringCloud集成Eureka源码分析

二代凡 6546

Eureka源码

来源:https://www.processon.com/view/designer/5e5fa095e4b03ecc75201629 https://www.processon.com/view/designer/5e60a8f5e4b03ecc7521bc59

pscool的博客 265

Eureka源码学习(一)——Eureka-Client

关于Eureka的学习,先了解client,client会做些什么呢?通过源码简单的了解一下,client是如何向发起注册、续约、抓取注册列表刷新本地缓存、变动通知、下线这些操作的。 我们建个工程,maven导入spring-cloud-starter-netflix-eureka-client包2.2.3,找到其中spring.factories,EurekaClientAutoConfiguration自动配置类会生效,并且会注入一个EurekaClient @Bean(destroyMethod

km56558的博客 539

Eureka源码分析系列0:Eureka源码下载&debug环境搭建

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33743703的博客 399

Eureka微服务注册中心源码-demo

该项目是学习微服务最基础的一个demo,它就是一个服务注册中心,启动之后就可以用。springboot项目都可以注册到该服务商。启动Applicaiton之后浏览器地址栏输入localhost:8761/eureka/即可访问,导入即用,学习微服务必备神器!

【首份】2023年30米分辨率土地利用遥感监测数据

为了恢复和重建我国土地利用变化的现代过程,更好地预测、预报土地利用变化趋势,地球资源数据云以美国陆地卫星Landsat 遥感影像数据作为主信息源,结合Sentinel系列数据,通过人工目视解译和机器学习方法,建立了国家尺度1:10 万比例尺多时期土地利用/土地覆盖遥感监测数据库(CNLUCC)因早期Landsat数据时空覆盖缺失,1972-1977年合成第一期数据,1978-1985年合成第二期数据,1986年起每年度生成一期数据。投影:Albers正轴等面积双标准纬线圆锥投影南标准纬线:25°N。

地球资源数据云的官方博客 3665

Eureka源码总体介绍

一 源码下载地需要分别下载 Eureka 官方源码和 Spring Cloud Netflix 适配 Eureka 的代码。在 https://github.com/Netflix/eureka 下载到原生 Eureka 代码。在 https://github.com/spring-cloud/spring-cloud-netflix/tree/v1.2.2.RELEASE 下载Spring Cl...

实践求真知 1644

RT-Thread Studio与CubeMX联合编程(超级详细)

RT-Thread Studio与CubeMX联合编程 本文章参考以下文章: https://blog.youkuaiyun.com/qq_40824852/article/details/122596043 https://zhuanlan.zhihu.com/p/395106066 https://blog.youkuaiyun.com/m0_37697335/article/details/108890584 一、简介 经过上次对RT-Thread Studio的初步尝试,发现RT-Thread Studio中存在官方支

zhuzhu的博客 3万+

Spring Cloud Eureka(三):Server源码

Spring Cloud Eureka(二):Server源码

qq_38167579的博客 748

ESP32-CAM搭建Arduino及简单使用

配置环境 方法一 文件 → 首选项 http://wechat.doit.am/package_esp8266com_index.json https://dl.espressif.com/dl/package_esp32_index.json 工具 → 开发板 → 开发板管理器 等待安装 方法二 https://github.com/espressif/arduino-esp32 Arduino安装目录下,找到hardware文件夹 建立文件夹espressif,然后在里面再建立一个esp32文件夹

Ying的博客 2万+

【系统分析师】第6章-基础知识:企业信息化(核心总结)

企业信息化是数字化转型的核心,涵盖战略规划、技术应用和实施路径等方面。关键内容包括ERP、CRM、SCM等系统的定义与实施,以及数据仓库、商业智能等技术的应用。备考系统分析师需掌握信息化战略规划方法(如BSP、SDP)、系统建模工具,并能分析解决信息孤岛等问题。论文可围绕ERP实施、数据仓库应用等主题展开。企业信息化面临组织变革、技术选型等挑战,但能显著提升运营效率和竞争力。

数据知道的博客 6930

服务注册发现:Eureka源码剖析(1)源码阅读环境搭建

文章目录源码阅读环境搭建工程结构速览调试须知 本篇发布于2019-12-08 22:10:13 源码阅读环境搭建 ide:IntelliJ IDEA 包管理:gradle eureka版本:1.9.13 源码下载:https://github.com/Netflix/eureka/archive/refs/tags/v1.9.13.zip 将build.gradle中的如下插件版本改一下,否则导入idea会报错: plugins { id 'nebula.netflixoss' versio

BigBigWorld_的博客 490

⭐️VMwareWorkstation17.0虚拟机安装搭建Windows 7虚拟机(完整图文详细步骤含配置VMware Tools教程)

本教程为大家提供了从安装VMware Workstation 17.0开始,到在虚拟机上成功搭建Windows 7专业版系统的完整步骤。我们详细介绍了准备阶段所需的软件和硬件要求,以及在VMware中配置和安装Windows 7系统的每一步操作。此外,我们还特别提到了如何在虚拟机上配置VMware Tools,以便更好地与宿主机进行交互。 通过本教程的学习,读者不仅能够掌握在VMware Workstation 17.0上安装Windows 7虚拟机的技能,还能了解到如何配置虚拟机的硬件以及安装VMwar

Python老吕的博客 2万+

Eureka源码阅读

Eureka源码阅读 Eureka中的一些概念 在阅读Eureka源码之前我们需要弄清楚几个概念: Register: 服务注册 Renew: 服务续约 Fetch Registries: 获取注册列表信息 Cancel: 服务下线 Eviction: 服务提出 Eureka的高可用架构 如图为Eureka的高级架构图,该图片来自于Eureka开源代码的文档 从图可以看出在这个体系中,有2个角色,即Eureka Server和Eureka Client。而Eureka Client又分为Applica

qq_19663899的博客 452

国科大学习资料--计算机网络--历年考题1

国科大学习资料–计算机网络–历年考题1 1、假定有一个通信协议,每个分组都引入100字节的开销用于头和成帧,现在使用这个协议发送1M字节的数据(为方便计算,1M=10^6),然而在传递的过程中有一个字节被破坏了,因而包含该字节的那个分组被丢弃并重传。(1)当数据的分组大小为1000、5000、20000和40000字节时,计算相应(包括开销)的传递字节总数目。(2)计算分组大小的最优值是多少,即分组的大小为何值时总的传输字节数最少。(提示:最优值不是1000、5000、20000和40000字节中的一个)

无名何许人的博客 1180

前言:关于作者吴秋生博士与此书简介

博士现为田纳西大学,诺克斯维尔分校,地理系的副教授。他的研究兴趣包括地理信息科学(GIS)、遥感和环境建模。更具体地说,对应用地理空间大数据、机器学习和云计算(例如,谷歌地球引擎、微软行星计算机)来研究环境变化,特别是地表水和湿地淹没动态。吴博士是开放科学和可重复研究的倡导者。他开发了几个用于高级地理空间分析的开源软件包(例如,吴博士还在YouTube上发布了数百个有关GIS和地图绘制的视频。更多有关他的开源项目信息,请访问GitHub(查看他的YouTube频道。.....................

韩天放 6085

Idea导入eureka源码

通过GitHub获取Eureka源码 进入git bash命令行,自己找个目录,用来存放eureka源码,然后在目录里面,执行git clonehttps://github.com/Netflix/eureka.git,就可以了,这个是需要点时间的,稍微有点慢,你等一会儿好了。 git clone https://github.com/Netflix/eureka.git 获取eureka项目依赖 然后在eureka目录中,直接双击gradlew.bat就可以,这个是人家给你提供的命令,直接就.

jiangbb8686的博客 1897

1、工作流介绍

工作流起源于办公自动化,是对软件中业务流程的抽象。通过工作流将各个任务有序组织起来形成一个完整的业务闭环。比如:请假审批流程,网上购物流程,银行贷款流程;!

leyoliu的博客 5104

Eureka 源码解析

注册中心 Eureka 源码解析 —— 项目结构简介 注册中心 Eureka 源码解析 —— 调试环境搭建 注册中心 Eureka 源码解析 —— Eureka-Client 初始化(一) 注册中心 Eureka 源码解析 —— Eureka-Client 初始化(二) 注册中心 Eureka 源码解析 —— Eureka-Client 初始化(三)...

Java笔记虾 1137

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Spring Cloud源码 - Eureka源码原理分析

Spring Cloud源码 - Eureka源码原理分析

qq_43350524的博客 1052

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Eureka源码解析

文章目录 本篇文章以源码的角度来深入理解Eureka. Eureka的一些概念 - Register:服务注册 当Eureka客户端向Eureka Server注册时,它提供自身的元数据,比如IP地址、端口,运行状况指示符URL,主页等。 Renew:服务续约 Eureka客户会每隔30秒发送一次心跳来续约。 通过续约来告知Eureka Server该Eureka客户仍然存在,没有出现问题。 正常情况下,如果Eureka Server在90秒没有收到Eureka客户的续约,它会将实例从其注册表中删除。

qq_43623447的博客 325

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

eureka配置_Eureka源码解析系列IDEA配置eureka源码和项目结构解析

一、Eureka源码配置IDEA1、下载Eureka源码地址:https://github.com/Netflix/eureka2、下载gradle地址:https://services.gradle.org/distributions/3、IDEA配置gradle4、导入eureka项目二、eureka项目结构说明1、eureka-client:这个就是指的eureka的客户端,注册到...

weixin_39613637的博客 462

03_吃透eureka源码之打好eureka.war运行在tomcat

1,回忆上章节的内容 上一个章节说到了server就是一个web工程,那么我们试试看不能再tomcat运行起来,并且看看eureka最原始的界面是一个什么样的。 2,编译打包eureka 我们在eureka-server工程的build.gradle中加入 compile project(’:eureka-core’)依赖,进行build。 eureka-server-1.9.4-SNAPSHOT.war就被生成在libs下面。这个就是包含了页面的web工程。 3,下载tomcat8 tomcat8官方

skylark(云雀) 856

Spring Cloud Eureka 核心源码之服务注册

看源码方法 看源码首先要了解它的使用,如果不了解它技术的使用、或者特色的话、或者原理的话,你去看源码的话就没什么意义了。 ----Mic Eureka Server 如何接收请求 通信 接收请求的话,肯定会涉及到通信,一般来说,有http通信,socket通信(NIO、Netty)。 服务端必然会监听请求 Euraka提供了两个类 ApplicationsResource 和 ApplicationResource,这两个类会接收一些请求,类似controller。例如: 基于appId路径的访问 查

csdnteach的博客 774

Eureka客户端源码解析

Eureka客户端源码1.重要的几个API1.InstanceInfo2.Application3.Applications4.jersey框架5.依赖关系 1.重要的几个API 1.InstanceInfo 该类用于保存一个微服务的信息,是Eureka注册的单元。 public class InstanceInfo { // 当前Client在Server端的状态 private volatile InstanceStatus status = InstanceStatus.UP;

qq_33549942的博客 1434
上一篇: 聚合支付二维码生成原理
下一篇: keycloak-11.0.2修改数据源为mysql
牧竹子
博客等级 码龄17年 572粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值