Eureka源码分析

Eureka源码分析

 

  1. Eureka server

 

入口:

 

 

 

Spring.factories

 

 

PS:

意味着如果加载EurekaServerAutoConfiguration成功,需要

@ConditionalOnBean(EurekaServerMarkerConfiguration.Marker.class)需加载成功.

 

通过@Bean注入了很多类

 

 

本质上, eureka-server包含很多事件:

EurekaInstanceCanceledEvent

服务下线事件

EurekaInstanceRegisteredEvent

服务注册事件

EurekaInstanceRenewedEvent

服务续约事件

EurekaRegistryAvailableEvent

Eureka注册中心启动事件

EurekaServerStartedEvent

Eureka server启动事件

 

Java扩展: EventObject->EventListener

 

包含注册\下线\续约等

事件注册之前, 需要有监听器, eureka所用的监听器是EurekaEventListener

 

针对上面五个事件, 我们可以自定义监听器

 

package com.macro.cloud;

import com.netflix.appinfo.InstanceInfo;
import org.springframework.cloud.netflix.eureka.server.event.*;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

@Component
public class EurekaStateChangeListener {
   
@EventListener
   
public void listen(EurekaInstanceCanceledEvent eurekaInstanceCanceledEvent) {
       
//服务断线事件
       
String appName = eurekaInstanceCanceledEvent.getAppName();
        String serverId = eurekaInstanceCanceledEvent.getServerId();
        System.
out.println(appName);
        System.
out.println(serverId);
        System.
out.println("EurekaInstanceCanceledEvent");
    }
   
@EventListener
   
public void listen(EurekaInstanceRegisteredEvent event) {
        InstanceInfo instanceInfo = event.getInstanceInfo();
        System.
out.println(instanceInfo);
        System.
out.println("EurekaInstanceRegisteredEvent");
    }
   
@EventListener
   
public void listen(EurekaInstanceRenewedEvent event) {
        event.getAppName();
        event.getServerId();
        System.
out.println("EurekaInstanceRenewedEvent");
    }
   
@EventListener
   
public void listen(EurekaRegistryAvailableEvent event) {
        System.
out.println("EurekaRegistryAvailableEvent");
    }
   
@EventListener
   
public void listen(EurekaServerStartedEvent event) {
        System.
out.println("EurekaServerStartedEvent");
       
//Server启动
   
}
}

 

 

其中eureka-server启动时候, 会出发最后两个事件, 即:

EurekaRegistryAvailableEvent 和 EurekaServerStartedEvent.

当eureka-client启动后, 会出发EurekaInstanceRegisteredEvent事件.

 

Eurekaserver总结如下:

 

  1. Eureka client

 

ApplicationListenerMethodAdapter.java

 

Eureka-client 底层是要了jerseyClient

 

Builder resourceBuilder = jerseyClient.resource(serviceUrl).path(urlPath).getRequestBuilder();
addExtraHeaders(resourceBuilder);
response = resourceBuilder
        .header(
"Accept-Encoding", "gzip")
        .type(MediaType.
APPLICATION_JSON_TYPE)
        .accept(MediaType.
APPLICATION_JSON)
        .post(ClientResponse.
class, info);

 

 

欢迎关注公众号:  戏说码农职场

 

 

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

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

相关文章

matlab程序中,如何解决矢量长度必须相同的问题

主要原因就是画图的x和y长度不一样,我用一个例子说明。 问题代码: clear all;close all;clc;x 0 : 1: 9;y sin(x);n 2*length(x);yi interpft(y, n);xi 0 : 0.5 : 10;hold on ;plot(x, y ,ro);plot(xi, yi, b.-);plot(x, sin(x),m--);legend(原始…

matlab 功率谱分析函数psd用法

psd简介 PSD(power spectrum analysis)功率谱分析,PSD在给定频带上的积分计算信号在该频带上的平均功率。与均值-平方谱相反,这个光谱中的峰值并没有反映出给定频率的能量。 单边PSD包含了信号的总功率在频率间隔从DC到一半的奈奎斯特速率。双侧PSD包含…

linux tar (打包、压缩、解压)命令

打包程序:tar c: 创建文档t: 列出存档内容x:提取存档f: filename 要操作的文档名v:详细信息 一:打包 打包:是指把文件整合在一起,不压缩 1.将文件打包:tar cf a.tar…

虚拟机添加硬盘扩容

1.设置→添加→硬盘 2.选择磁盘类型 3.开启虚拟机 4.用ls 命令查看:ls /dev/sd* 5.最后就可以对sdb进行分区操作 这里好麻烦,等我有空,在补上! . . .

利用matlab将三维数据画成三维立体图

首先先分析对象。将数据利用matlab画出图,最开始是导入数据,然后处理数据,最后将处理的数据画出来。 所以我将它分为三个步骤。 第一步:导入数据 如果是mat数据。可以直接load如果是txt数据。可以用txtread如果是excel数据。可…

世界坐标、相机坐标、图像坐标、像素坐标的原理、关系,并用matlab仿真

世界坐标、相机坐标、图像坐标、像素坐标的原理、关系,并用matlab仿真 照相机是日常生活中最常见的。它能把三维的空间图片等比例缩小投影在照片上,称为一个二维图像。 以下我们就讲一讲原理,并相应的进行matlab仿真。 在学之前&#xff0…

matlab 三维高程根据图片颜色给对应点赋予颜色

目录 1. 问题分析 2. 技术分析 3. 程序代码 4. 代码运行结果 1. 问题分析 日常工作尤其是测绘、地质、遥感行业,需要画DEM模型,并在这个模型的基础上,进行着色、渲染。比如,地质分析地面三维地表形变之时,需要根据D…

matlab 计算N天前(后)的日期

注意时间的格式:是字符串、数字还是日期? 下面是计算明天、今天、昨天的日期。 day1 datetime(datestr(now,yyyy-mm-dd))caldays(1)%tomorrowday0 datetime(datestr(now,yyyy-mm-dd))%todayday_1 datetime(datestr(now,yyyy-mm-dd))-caldays(1)%yest…

CAT arguments dimensions are not consistent.CAT参数的维度不一致。

错误实例: 在写符号矩阵的时候常常会出现下面错误: 错误:CAT arguments dimensions are not consistent. CAT参数的维度不一致。 举个栗子: clear; close all; clc; syms A_0 B_0 B C D E F G H ;T_3 [2*A_0 C-D*1i H G*1i;C…

传感器尺寸、像素、DPI分辨率、英寸、毫米的关系

虽然网上有很多这种资料,但是太过于复杂,每个人的说法都不一样,看的让人云里雾里的,我总结了一下,不知道对不对! 1. 1英寸25.4mm 2. 传感器尺寸:传感器的尺寸是指传感器的大小,一般…

利用PS将n张图制作成动态GIF图

第一步:打开PS,导入图片,文件→脚本→将文件载入堆栈… 数据量大的话,就耐心等待一下。 第二步: 创建祯动画 如果没有这个,可以点击窗口→时间轴 如果祯排列顺序反了,这样 最后按照自己要求设置祯动画时间&…

matlab padarray函数详解

本文来自于matlab帮助页面,命令:help padarray 语法: B padarray(A,padsize) B padarray(A,padsize,padval) B padarray(A,padsize,padval,direction) gpuarrayB padarray(gpuarrayA,___) 描述: B padarray(A,padsize…

matlab 三维画图函数错误提示:数据维度必须一致

用三维画图软件经常会出现下面错误 以mesh(x,y,z)为例: 主要原因是因为没有注意Z数据格式,Z必须是矩阵形式。而且Z矩阵的m*n必须与y,x相关, mesh(X,Y,Z) 使用 Z 确定的颜色绘制线框网格,因此其颜色与曲面高度成比例。如果 X 和 …

毕业论文格式修改方法

好久没更新博客,忙着毕业论文。刚答完辩时就想写一篇关于论文格式的博客,这样在修改论文的时候很轻巧很多,别人花一两天修改好,我只需要几个小时(包括图片大小、页面调整、错别字修改)。话不多说&#xff0…

批量下载哨兵(Sentinel)数据

由于网络的原因,现在下载哨兵数据很难,直接在国外网站上下载,需要科学上网。某宝上虽然也提供下载哨兵数据的服务,但是价格太贵了,因此在网上找了很久,发现了一个非常非常实用的工具Internet Download Mana…

carsim输出端口2的宽度无效_PIO CORE 解析 (2)

下图为一般配置的PIO CORE:具有输入,输出和中断信号引脚,通过Avalon-MM接口与系统交互。下图提供了支持双向口功能的实例图:PIO内核的Avalon-MM接口由单个Avalon-MM从端口组成。从端口能够进行基本的Avalon-MM读和写传输。AvalonMM从端口提供…

利用matlab提取中心线

先看看代码运行结果(红色部分表示河流中心线,黑色表示河流两岸!): 注: 1. 由于河流两岸的坐标不是等距采样,所以无法保证100%准确,只要按着要求处理河岸坐标数据Shape文件&#xff…

b类 蚂蚁金服_股权设计与合伙制,解析蚂蚁金服与华为的顶层结构

股权设计与合伙制商道君这篇文章讲一讲股权设计与合伙制。股权设计和合伙制两者都是企业的顶层设计,股权的设计和合伙人制度有不同之处,但核心点都只有一个那就是——争夺企业的控制权。举例:马云与阿里巴巴马云说,如果阿里巴巴不…

SARScape二次开发-IDL编程心得

最近由于项目需要,需要使用IDL编程。此前从接触过编程,但好在有matlab、C编程的一些底子,所以自学编程,进行SARScape二次开发。相比MATLAB而言,IDL资料少,而且只有英文版的官方帮助,学起来非常费…

SARscape 二次开发讲解

官方给了一些讲解(地址:SARscape/SARscape IDL Scripting/SARscape batch object),以及一些参考例子(地址:SARscape/SARscape IDL Scripting/Example)都可以用来学习参考。 SARscape 二次开发可以分为10个详细的步骤&a…