spring cloud eureka服务治理机制

Eureka Server注册中心

服务提供者

1.服务注册

服务提供者在启动的时候会发送REST请求的方式将自己注册到Eureka Server服务上,同时带上自身的一些元数据信息。Eureka Server 接受到REST请求之后,将元数据信息存储到一个双层Map中,其中第一层的key是服务名,第二层的key是具体的实例名,Eureka信息面板中一个服务有多个实例的情况,这些内容就是以双层Map形式存储的。

在服务注册时,需确认一下 eureka.client.register.with.eureka=true参数是否正确,该默认值为false,若设置为false 将不会启动注册操作。

2.服务同步

如图所示两个服务提供者分别注册到两个不同的注册中心上,他们的信息分别被两个注册中心所维护,由于服务注册中心之间因相互注册为服务,所以当服务提供者发送一个请求到服务注册中心时,他也会将请求给集群中相连的其他注册中心,从而实现了注册中心的服务同步。通过服务同步,两个服务提供者的服务信息就可以通过这两台服务注册中心的任意一台获取。

3.服务续约

在注册完服务之后,服务提供者会维护一个心跳用来持续告诉Eureka Server 我还活着,以防止Eureka Server 剔除任务 将该服务实例从服务列表中排除出去,我们称该操作为“服务续约”
服务续约有两个重要的属性:
eureka.instance.lease-renewal-interval-in-seconds=30
表示服务续约的调用间隔时间默认为30秒
eureka.instance.lease-expiration-duration-in-seconds=90
表示服务时效的时间为90秒

服务消费者

1.获取服务

当我们启动服务消费者的时候,它会发送一个REST请求到注册中心,来获取上面注册的服务清单,为了性能考虑,Eureka Server 会维护一份只读的服务清单返回给客户端,同时该缓存清单会每隔30秒更新一次
所以获取服务是服务消费者的基础 必须确保
Eureka.client.fetch-register=true 默认为ture
若想修改获取服务清单的更新时间修改
eureka.client.register-fetch-interval-seconds=30 的参数进行修改,默认30秒

2.服务调用

服务消费者获取服务清单后,通过服务名获取具体的实例名和该实例的元数据信息,因为有这些服务的信息,所以客户端可以根据自己的需求决定具体调用哪个实例,在ribbon中默认采用轮询的方式进行掉用,从而实现客户端的负载均衡。
对于访问实例的选择 Eureka 中有Region和Zone的概念,一个Region中包含多个Zone,每个服务客户端会注册到一个Zone中,所以每个客户端对应一个Region和一个Zone,在服务调用时优秀访问同一个Zone中的服务提供方,若访问不到就调用其他的Zone。

3.服务下线

在服务运行过程中必然会面临关闭或重启某个实例的情况,在关闭时我们不希望客户端继续调用关闭的实例,所以当服务正常关闭时,会触发一个REST请求给Eureka Server 告诉服务注册中心 我要下线了 服务端接收到请求之后,将该服务状态设置为(DOWN)并把该下线事件传播出去。

服务注册中心

1.失效剔除

有时候服务并能正常下线,可能由于内存溢出,网络故障等原因导致服务不能正常工作,而服务注册中心并没有收到服务下线请求,为了从服务列表中清除那些不可用的服务实例,Eureka Server 在启动的时候会创建一个定时任务,默认每隔60秒将清单中超时90秒的没有续约的服务剔除出去。

2.自我保护

在本地调用基于Eureka的程序时会在注册中心信息面板出现红色的警告信息

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

实际上就是触发了Eureka Server的自我保护机制,因为服务注册到Eureka Server之后会维护一个心跳连接,告诉Eureka Server我还活着,Eureka Server在运行期间会统计失败的比列在15分钟内低于85%的,如果出现低于的情况,Eureka Server会将这些服务实例保护起来,让这些服务不过期,尽可能保护这些注册信息,但是在保护期间客户端很容易拿到实际已经不存在的服务实例,会出现失败的情况,所以客户端必须要有容错机制,比如使用请求重试,断路器等机制
既然本地吊事容易触发注册中心自我保护机制 可以通过配置属性
eureka.server.enable-self-preservation=false 参数来关闭保护机制,以确保服务注册中心可以将不可用的服务实例正确剔除。

未完待续。。。。。。。。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容