SpringCloud解析之Eureka
本文基于Spring Cloud Edgware.SR6版本,从功能和架构上解析Eureka,让大家对Eureka有一个较为清晰的认识(本文默认大家对分布式微服务有一个初步的概念和理解,本文不涉及或少量涉及源码)。
官方概念这里就不贴了,个人理解,Eureka是Spring Cloud分布式微服务架构的服务治理方案之一,提供服务注册,服务发现,服务维护和治理,注册中心集群等功能。

Eureka中维护一份服务列表,当客户端(服务提供者或服务消费者)注册服务实例到Eureka,Eureka会将其实例信息维护到列表中,这叫创建租约;租约的有效时间默认是30秒,客户端需要每隔一段时间发送一次心跳告知Eureka自己的服务正常有效,这叫续约。
Eureka是服务注册中心,但当注册中心集群时,Eureka也做为客户端,向其它注册中心注册自己,同时获取其它注册中心的维护的服务列表,当有新的客户端注册进来时,Eureka会通知其它的注册中心,异步更新服务列表,达到高可用的目的。Eureka默认会开启如下配置,如果作为单个注册中心或本地测试,可以关闭。
eureka:
client:
# 不向Eureka注册自己
registerWithEureka: false
# 不获取服务列表
fetchRegistry: false
客户端正常下线时,会通知Eureka,Eureka就从服务列表中将其剔除。如果客户端非正常下线(比如宕机,系统崩溃)无法通知到Eureka,Eureka会定时检查自己的服务列表,发现有服务的租约超过有效时间,也会认为服务失效而剔除。
Eureka默认配置会开启一个保护机制,当一段时间内有超过15%的服务失效时,Eureka不会剔除这些服务,而是继续维护在服务列表,直到客户端重新发送心跳。Eureka有一个心跳次数阀值系数=0.85(可以通过配置修改),客户端默认心跳间隔=30秒,1分钟内总心跳数=客户端实例数*2,1分钟内心跳阀值=1分钟内总心跳数*0.85,当1分钟内有效客户端实例的心跳总数<心跳阀值,Eureka就会因为保护机制而继续维护在服务列表,因此客户端需要有重试和熔断机制。
Eureka和ZooKeeper
Eureka和ZooKeeper,虽然都是服务集群治理的实现方案,但是区别也是比较明显的。CAP理论中,C(consistency)数据一致性,A(availability)可用性,P(partition-tolerance)分区容错性,Eureka强调AP,通过缓存和异步同步达到最终一致性,ZooKeeper更兼顾CP,当节点失效就会剔除。
个人更倾向Eureka,不管是服务注册和发现,还是注册中心集群,只需要引入依赖包,添加配置和注解,就可以达到效果,同时不得不佩服Spring Boot和Spring Cloud的强大。但是,如果是ZooKeeper转使用Eureka,可能会因为其内部的缓存和保护机制感到别扭,此处贴上本人的配置,可以减少缓存时效,提高缓存刷新频率,强制关闭客户端的话,大概30秒Eureka就会剔除服务(Eureka默认情况下大概要4分钟才会剔除服务),供大家参考
Eureka注册中心配置(YML)
eureka:
server:
# 检查失效服务剔除时间间隔
evictionIntervalTimerInMs: 2000
# 关闭保护机制
enableSelfPreservation: false
Eureka客户端(properties)
#服务实例租约有效时间
eureka.instance.lease-expiration-duration-in-seconds=15
#服务实例续约间隔时间(心跳间隔)
eureka.instance.lease-renewal-interval-in-seconds=5
#客户端更新服务列表间隔时间
eureka.client.registryFetchIntervalSeconds=5
SpringCloud解析之Eureka的更多相关文章
- Spring-cloud & Netflix 源码解析:Eureka 服务注册发现接口 ****
http://www.idouba.net/spring-cloud-source-eureka-client-api/?utm_source=tuicool&utm_medium=refer ...
- springcloud费话之Eureka接口调用(feign)
目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...
- SpringCloud学习(3)——Eureka服务注册中心及服务发现
Eureka概述: Eureka是Netflix的一个子模块, 也是核心模块之一.Eureka是一个基于REST的服务, 用于定位服务, 以实现云端中间层服务发现和故障转移.服务注册与发现对于微服务框 ...
- SpringCloud解析之Zuul(二)
本文基于Spring Cloud Edgware.SR6,Zuul版本1.3.1,解析Zuul的请求拦截机制,让大家对Zuul的原理有个大概的认识和了解.如有不对的地方,欢迎指正. 在上一期的Spri ...
- springcloud费话之Eureka服务访问(restTemplate)
目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...
- springcloud费话之Eureka集群
目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...
- springcloud费话之Eureka基础
目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...
- 「 从0到1学习微服务SpringCloud 」03 Eureka的自我保护机制
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 Eureka的高可用需要 ...
- springcloud(十三):Eureka 2.X 停止开发,但注册中心还有更多选择:Consul 使用详解
在上个月我们知道 Eureka 2.X 遇到困难停止开发了,但其实对国内的用户影响甚小,一方面国内大都使用的是 Eureka 1.X 系列,另一方面 Spring Cloud 支持很多服务发现的软件, ...
随机推荐
- p批处理替换目录下文本中的字符串
@echo off rem 进入批处理文件所在的路径 cd C:\Users\zxh\Desktop\ " as "abc" ***** rem 定义要替换的新旧字符串 ...
- linux安装脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- WPF ListboxItem 双击事件 Command绑定
<ListBox x:Name="Lb" HorizontalAlignment="Left" Height="600" Vertic ...
- 芒果TV For Windows10 成长历史 & 迭代历史 & 新闻报道
芒果TV 是国内领先的基于Windows10操作系统并支持Windows10全系列设备的视频应用和内容服务商. Win10商店版<芒果TV>是湖南快乐阳光互动娱乐传媒有限公司专门为Wind ...
- Qt程序发行Linux版,软件打包知识(patchelf 工具修改依赖库,确认 qmake -v 是自己使用的Qt版本,否则用export PATH进行修改)good
patchelf 工具可以修改已编译运行程序的依赖库位置和指定库链接器 patchelf --set-rpath patchelf --set-interpreter 通过这个工具 https://g ...
- Win10《芒果TV》商店版更新v3.2.4:新增跨年事件直播、电视台直播,新年快乐
听说半个娱乐圈都来了,<芒果TV>UWP版邀您一起,于2016年12月31日晚,观看<湖南卫视2016·2017跨年演唱会>直播,请更新v3.2.4版,主要新增大事件直播和电视 ...
- 微信小程序把玩(二十五)loading组件
原文:微信小程序把玩(二十五)loading组件 loading通常使用在请求网络数据时的一种方式,通过hidden属性设置显示与否 主要属性: wxml <!----> <butt ...
- .NET Core整合log4net以及全局异常捕获实现
在使用log4net之前先安装log4net.这里操作很简单,通过nuget下载并安装log4net很方便.如下图. log4net配置 <?xml version="1.0" ...
- qtextedit中的光标问题(通过调用repaint去掉Focus的阴影)
[问题]两个textedit,取名为view0,view1.实现view0输入固定的字符个数后,用setFocus切换聚焦到view1,但是切换完了之后view0还会保留光标残影,出现两个文本框中都有 ...
- 10秒完成Linux系统pip在线安装
对于Python开发攻城狮及系统运维攻城狮来说,pip的安装那是必不可少的一个过程.鉴于网上很多安装过程写得过于复杂,本人根据pip官方手册总结了以下最为快捷的安装方式,只需要2步操作. curl h ...