Eureka源码分析
Eureka源码分析
- 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总结如下:
- 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源码分析相关推荐
- 微服务发现与注册之Eureka源码分析
作者:陌北有棵树,Java人,架构师社区合伙人! [一]微服务之服务发现概述 关于微服务,近年来可谓是大火,业界也吹刮着一种实践微服务的风潮.本人有幸在去年参与到一个向微服务过渡的产品,再结合自己所学 ...
- 【SpringClould】Spring Cloud Eureka源码分析
文章目录 1.概述 1.1 Eureka的一些概念 2.源码分析 2.1 Eureka Server源码 2.1.1 `@EnableEurekaServer`注解 2.1.2 EurekaServe ...
- 【SpringCloud微服务】第3章 服务治理SpringCloudEureka(五)——Eureka源码分析
2.8 Eureka 源码分析 首先,对于服务注册中心.服务提供者.服务消费者这三个主要元素来说,后两者(也就是Eureka客户端)在整个运行机制中是大部分通信行为的主动发起者,而注册中心主要是处 ...
- 【源码系列】Eureka源码分析
对于服务注册中心.服务提供者.服务消费者这个三个主要元素来说,服务提供者和服务消费者(即Eureka客户端)在整个运行机制中是大部分通信行为的主动发起者(服务注册.续约.下线等),而注册中心主要是处理 ...
- Spring Cloud Eureka 源码分析(一) 服务端启动过程
2019独角兽企业重金招聘Python工程师标准>>> 一. 前言 我们在使用Spring Cloud Eureka服务发现功能的时候,简单的引入maven依赖,且在项目入口类根据服 ...
- eureka 源码分析三--InstanceInfo 中OverriddenStatus的作用
1. eureka server端实例存储结构 ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>> ...
- 深入 Eureka 服务注册 源码分析(二)
说一下自己对Eureka注册的理解 Eureka注册的流程是 1.客户端在初始化或者在注册信息发生变化的时候,发送注册信息.其实在初始化的时候也是通过改变注册信息的. 客户端会开启一个定时任务,每40 ...
- Spring Cloud部分源码分析Eureka,Ribbon,Feign,Zuul
Eureka SpringCloud Eureka使用NetFlix Eureka来实现的,它包括了服务端组件和客户端组件,并且都是用java 编写的. Eureka服务端就是服务注册中心, Eure ...
- eureka 之前的服务如何关闭_干货分享 | 服务注册中心Spring Cloud Eureka部分源码分析...
友情提示:全文13000多文字,预计阅读时间10-15分钟 Spring Cloud Eureka作为常用的服务注册中心,我们有必要去了解其内在实现机制,这样出现问题的时候我们可以快速去定位问题.当我 ...
最新文章
- PHP实时生成并下载超大数据量的EXCEL文件
- vs2017数据可视化建模_介绍数据可视化社区调查2017
- iOS APP提交上架流程
- ubuntu怎么关防火墙
- cocos2dx 3.2之Lua打飞机项目
- Python OpenCV实现鼠标画框
- 如何安装mysql5.6.16_centos安装mysql5.6.16
- Mysql 如何做双机热备和负载均衡 (方法一)
- DS3231时钟模块使用,IIC协议实践。(基于STM32)
- 2021 Duilib最新入门教程(一)Duilib简介
- 验证 网址,IP,邮箱,电话,手机,数字,英文,日期,身份证,邮编
- Python判断某个列表是否是另一个列表的子列表
- Vue UI组件库(Element UI库)
- RationalRose安装说明文档
- [附源码]Java计算机毕业设计SSM道路桥梁工程知识文库系统
- 屏蔽手机网页广告哪家强,还属百度APP
- 小程序使用 wxParse 遇到的问题
- RK3399驱动开发 | 14 - AP6255 SDIO WiFi 调试(基于linux5.4.32内核)
- uni-app发布android版App的详细过程
- android 全景播放器,Android VR Player(全景視頻播放器) [5]:簡單的歡迎界面
热门文章
- 在matlab中怎么录制音频_怎么录制淘宝页面中的视频?简单方法,轻松搞定
- java计算加减表达式_【Java】计算加减乘除数学公式(简单计算器)含小数
- wxpython使用实例_wxPython中文教程入门实例
- 深度学习之基于CNN实现天气识别
- 【阿里妈妈营销科学系列】第五篇:多渠道组合路径效率评价
- systemverilog数据类型
- 【计算机组成原理】加减法器
- android摄像头框架,FS_S5PC100平台上Android Camera架构分析
- 线性代数 矩阵 行列式基本知识(转)
- Python函数式编程简介(三)匿名函数