Eureka源码解析系列文章汇总
先看一张图
0
这个图是Eureka官方提供的架构图,整张图基本上把整个Eureka的核心功能给列出来了,当你要阅读Eureka的源码时可以参考着这个图和下方这些文章
EurekaServer
EurekaServer就是我们常说的服务端
Eureka服务端的启动可参考这篇文章EurekaServer自动装配及启动流程解析
它维护了一张服务注册表,在这个服务注册表中包含了所有的客户端信息
当服务端启动时会做这么几个事情:
- 向集群中的其他服务端发起数据同步请求:Eureka应用注册与集群数据同步源码解析
- 开启清理过期租约的线程:Eureka客户端续约及服务端过期租约清理源码解析
EurekaClient
EurekaClient就是我们常说的客户端
Eureka客户端的启动可参考这篇文章:EurekaClient自动装配及启动流程解析
客户端是与应用程序绑定到一起的,某种意识上来说它是应用实例在注册中心的代言人
当客户端启动时会做这么几个事情:
- 向服务端发起注册请求:Eureka应用注册与集群数据同步源码解析
- 开启续租的线程:Eureka客户端续约及服务端过期租约清理源码解析
- 先全量获取一次可用服务列表且开启一个定时增量获取的线程:Eureka获取服务列表源码解析
当服务下线时会向服务端发送下线通知:Eureka服务下线源码解析
服务分区
在图中三个EurekaServer之间是用线隔开的,在EurekaServer上面的三个us-east-xx其实就代表着三个服务端所在的三个分区。
为什么会出现分区这个概念呢?
当一个项目的用户量比较大时,一般会在多个城市的多个机房分别部署多套服务,为了避免网络延时,我们就希望一个条件允许的情况下一个服务优先调用同机房的服务。为了实现这个功能Ribbon还专门提供了一种负载均衡算法
自我保护模式
为了避免网络分区故障的解决方案:Eureka自我保护模式源码解析
Eureka源码解析系列文章汇总的更多相关文章
- SpringBoot源码解析系列文章汇总
相信我,你会收藏这篇文章的 本篇文章是这段时间撸出来的SpringBoot源码解析系列文章的汇总,当你使用SpringBoot不仅仅满足于基本使用时.或者出去面试被面试官虐了时.或者说想要深入了解一下 ...
- TiKV 源码解析系列文章(三)Prometheus(上)
本文为 TiKV 源码解析系列的第三篇,继续为大家介绍 TiKV 依赖的周边库 rust-prometheus,本篇主要介绍基础知识以及最基本的几个指标的内部工作机制,下篇会介绍一些高级功能的实现原理 ...
- tensorflow源码解析系列文章索引
文章索引 framework解析 resource allocator tensor op node kernel graph device function shape_inference 拾遗 c ...
- Abp Vnext源码解析系列文章01---EventBus
一.简介 BP vNext 封装了两种事件总线结构,第一种是 ABP vNext 自己实现的本地事件总线,这种事件总线无法跨项目发布和订阅.第二种则是分布式事件总线,ABP vNext 自己封装了一个 ...
- Spring源码解析系列汇总
相信我,你会收藏这篇文章的 本篇文章是这段时间撸出来的Spring源码解析系列文章的汇总,总共包含以下专题.喜欢的同学可以收藏起来以备不时之需 SpringIOC源码解析(上) 本篇文章搭建了IOC源 ...
- Android源码解析系列
转载请标明出处:一片枫叶的专栏 知乎上看了一篇非常不错的博文:有没有必要阅读Android源码 看完之后痛定思过,平时所学往往是知其然然不知其所以然,所以为了更好的深入Android体系,决定学习an ...
- Spring Cloud系列(四):Eureka源码解析之客户端
一.自动装配 1.根据自动装配原理(详见:Spring Boot系列(二):Spring Boot自动装配原理解析),找到spring-cloud-netflix-eureka-client.jar的 ...
- MyBatis 源码分析系列文章合集
1.简介 我从七月份开始阅读MyBatis源码,并在随后的40天内陆续更新了7篇文章.起初,我只是打算通过博客的形式进行分享.但在写作的过程中,发现要分析的代码太多,以至于文章篇幅特别大.在这7篇文章 ...
- MyBatis 源码分析系列文章导读
1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章.本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说 ...
随机推荐
- 使用JS通过Web API执行批量操作,多个操作是一个事务!
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复235或者20161105可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
- Oracle有哪些诊断事件
作者:eygle | [转载请注出处]链接:https://www.eygle.com/archives/2004/12/oracle_diagnostics_events_list.html 经常有 ...
- excel如何快速选中某个区域
一.问题 excel如何快速选中某个区域 二.解决 如图:要选中A1-D12的区域,可以选择用鼠标,单数数据量多的时候就比较麻烦,可以用下面这种方式.
- 简单的shell脚本
1.1每隔一秒向屏幕输出一个数字,并且每次加1. #/bin/bashfor((i=1;i<=100;i++)) do echo -en " $i\n"; sleep 1;d ...
- 关于 from scipy.misc import imread, imresize, imsave 报错的问题
使用 from scipy.misc import imread, imresize, imsave 时出现报错,查找后发现新版本的Scipy不再包含imread,imresize,imsave,需要 ...
- (四)Amazon Lightsail 部署LAMP应用程序之扩展PHP前端
扩展PHP前端 既然PHP前端和数据库是分开的,您将为Web层添加可伸缩性和容错性: 在以下步骤,您将获取Web前端实例的快照,并从该快照部署另外2个Web层实例.最终,您将在三个Web实例前面添加一 ...
- python批量执行脚本,使用unittest.TestSuit(); unittest.TextTestRunner().run(); addTest();unittest.defaultTestLoader.discover();
#alltest.py中内容如下import unittest,osdef all(): #path="D:\\study\\python_api_test\\test1203" ...
- jmeter判断请求响应时间,请求下加‘断言持续时间’,添加监听器断言结果;统计超时
- 初学Python几个小程序练习
使用格式化输出的三种方式实现以下输出(name换成自己的名字,既得修改身高体重,不要厚颜无耻) name = 'ABDMLBM' height = 175 weight = 140 # "M ...
- (Apache服务)个人用户主页功能
1.开启个人用户主页功能 (1)输入命令“vi /etc/httpd/conf.d/userdir.conf” (2)将第17行UserDir disabled前加一个# 将第24行UserDi ...