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);

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

Eureka源码分析相关推荐

  1. 微服务发现与注册之Eureka源码分析

    作者:陌北有棵树,Java人,架构师社区合伙人! [一]微服务之服务发现概述 关于微服务,近年来可谓是大火,业界也吹刮着一种实践微服务的风潮.本人有幸在去年参与到一个向微服务过渡的产品,再结合自己所学 ...

  2. 【SpringClould】Spring Cloud Eureka源码分析

    文章目录 1.概述 1.1 Eureka的一些概念 2.源码分析 2.1 Eureka Server源码 2.1.1 `@EnableEurekaServer`注解 2.1.2 EurekaServe ...

  3. 【SpringCloud微服务】第3章 服务治理SpringCloudEureka(五)——Eureka源码分析

    2.8 Eureka 源码分析   首先,对于服务注册中心.服务提供者.服务消费者这三个主要元素来说,后两者(也就是Eureka客户端)在整个运行机制中是大部分通信行为的主动发起者,而注册中心主要是处 ...

  4. 【源码系列】Eureka源码分析

    对于服务注册中心.服务提供者.服务消费者这个三个主要元素来说,服务提供者和服务消费者(即Eureka客户端)在整个运行机制中是大部分通信行为的主动发起者(服务注册.续约.下线等),而注册中心主要是处理 ...

  5. Spring Cloud Eureka 源码分析(一) 服务端启动过程

    2019独角兽企业重金招聘Python工程师标准>>> 一. 前言 我们在使用Spring Cloud Eureka服务发现功能的时候,简单的引入maven依赖,且在项目入口类根据服 ...

  6. eureka 源码分析三--InstanceInfo 中OverriddenStatus的作用

    1. eureka server端实例存储结构 ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>> ...

  7. 深入 Eureka 服务注册 源码分析(二)

    说一下自己对Eureka注册的理解 Eureka注册的流程是 1.客户端在初始化或者在注册信息发生变化的时候,发送注册信息.其实在初始化的时候也是通过改变注册信息的. 客户端会开启一个定时任务,每40 ...

  8. Spring Cloud部分源码分析Eureka,Ribbon,Feign,Zuul

    Eureka SpringCloud Eureka使用NetFlix Eureka来实现的,它包括了服务端组件和客户端组件,并且都是用java 编写的. Eureka服务端就是服务注册中心, Eure ...

  9. eureka 之前的服务如何关闭_干货分享 | 服务注册中心Spring Cloud Eureka部分源码分析...

    友情提示:全文13000多文字,预计阅读时间10-15分钟 Spring Cloud Eureka作为常用的服务注册中心,我们有必要去了解其内在实现机制,这样出现问题的时候我们可以快速去定位问题.当我 ...

最新文章

  1. PHP实时生成并下载超大数据量的EXCEL文件
  2. vs2017数据可视化建模_介绍数据可视化社区调查2017
  3. iOS APP提交上架流程
  4. ubuntu怎么关防火墙
  5. cocos2dx 3.2之Lua打飞机项目
  6. Python OpenCV实现鼠标画框
  7. 如何安装mysql5.6.16_centos安装mysql5.6.16
  8. Mysql 如何做双机热备和负载均衡 (方法一)
  9. DS3231时钟模块使用,IIC协议实践。(基于STM32)
  10. 2021 Duilib最新入门教程(一)Duilib简介
  11. 验证 网址,IP,邮箱,电话,手机,数字,英文,日期,身份证,邮编
  12. Python判断某个列表是否是另一个列表的子列表
  13. Vue UI组件库(Element UI库)
  14. RationalRose安装说明文档
  15. [附源码]Java计算机毕业设计SSM道路桥梁工程知识文库系统
  16. 屏蔽手机网页广告哪家强,还属百度APP
  17. 小程序使用 wxParse 遇到的问题
  18. RK3399驱动开发 | 14 - AP6255 SDIO WiFi 调试(基于linux5.4.32内核)
  19. uni-app发布android版App的详细过程
  20. android 全景播放器,Android VR Player(全景視頻播放器) [5]:簡單的歡迎界面

热门文章

  1. 在matlab中怎么录制音频_怎么录制淘宝页面中的视频?简单方法,轻松搞定
  2. java计算加减表达式_【Java】计算加减乘除数学公式(简单计算器)含小数
  3. wxpython使用实例_wxPython中文教程入门实例
  4. 深度学习之基于CNN实现天气识别
  5. 【阿里妈妈营销科学系列】第五篇:多渠道组合路径效率评价
  6. systemverilog数据类型
  7. 【计算机组成原理】加减法器
  8. android摄像头框架,FS_S5PC100平台上Android Camera架构分析
  9. 线性代数 矩阵 行列式基本知识(转)
  10. Python函数式编程简介(三)匿名函数