Eureka

Eureka

Netflix Eureka 是由Netflix开源的一款基于REST的服务发现组件,包括Eureka Server及Eureka Client。

服务实例如何注册到服务中心?

在服务启动的时候,需要调用Eureka Server 的REST API的register方法,去注册该应用实例的信息。对于 Spring Cloud 应用,可以使用spring-cloud-netflix-Eureka-client,基于Spring Boot的自动配置,自动实现服务信息的注册。

服务实例如何从服务中心剔除?

正常情况下服务实例在关闭应用的时候,应该通过钩子方法或其他生命周期回调方法去调用Eureka

Server的REST API的de-register方法,来删除自身服务实例的信息。另外为了解决服务实例挂掉或其他异常情况没有及时删除自身信息的问题,Eureka Server要求Client端进行续约,也就是发送心跳,来证明服务实例还是存活的,是健康的,是可以调用的。如果租约超过一定时间没有进行续约操作,Eureka Server端会主动剔除。

AP优于CP

分布式系统领域CAP理论

Consistency:数据一致性,即数据在存在多副本的情况下,可能由于网络,机器故障,软件系统等问题导致数据写入部分副本成功,部分副本失败,进而造成副本之间数据不一致,存在冲突。满足一致性要求则要求对数据的更新操作成功之后,多副本的数据保持一致。

Availability:在任何时候客户端对集群进行读写操作时,请求能够正常响应,即在一定的延时内完成。

Partition Tolerance:分区容忍性,即发生通信故障的时候,整个集群被分割为多个无法相互通信的分区时,集群仍然可用。

对于分布式系统来讲,一般网络条件相对不可控,出现网络分区是不可避免的,因此系统必须剧本分区容忍性。在这个前提下分布式系统的设计则在AP及CP之间进行选择。

Eureka是在部署在AWS的背景下设计的,在实际生产中,服务注册及发现中心保留可用及过期的数据总比丢失掉可用的数据好。这样的话,应用实例的注册信息在集群的所有节点间并不是强一致的,这就需要客户端能够支持复杂均衡及失败重试。

Peer to Peer架构

一般而言,分布式系统的数据在多个副本之间的复制方式,可分为主从复制和对等复制。

主从复制Master-Slave

有一个主副本,其他副本    为从副本。所有对数据的写操作都是提交到主副本,最后再由主副本更新到其他从副本。具体更新的方式还可以细分为同步更新异步更新,同步及异步混合。对于主从复制模式来讲,写操作的压力都在主副本上,它是整个系统的瓶颈,但是从副本可以帮主副本分担读请求。

对等复制Peer to Peer

副本之间不分主从,任何副本都可以接收写操作,然后每个副本之间互相进行数据更新。由于任何副本都可以进行写操作处理,各个副本之间的数据同步及冲突处理是一个比较棘手的问题。

Eureka Server采用的就是Peer to Peer 的复制模式。

客户端

客户端使用quarantineSet维护了一个不可用的Eureka Server列表,进行请求的时候,优先从可用的列表中进行选择,如果请求失败则切换到下一个Eureka Server进行重试,默认次数为3.。为了放置每个Client都按照配置文件进行请求造成Eureka Server节点请求分布不均衡的情况,Client端有个定时任务来刷新并随机化Eureka Server列表。

服务端

Eureka Server本身依赖了Eureka Client,也就是每个Eureka Server是作为其他Eureka Server的Client。在单个Eureka Server启动的时候,会有一个syncUp的操作,通过Eureka Client请求其他Eureka Server节点中的一个节点获取注册的应用实例信息,然后复制到其他peer节点。

Eureka Server在执行复制操作时,使用HEADER_REPLICATION的http header来将这个请求操作与普通应用实例的正常请求操作区分开。这样其他peer节点接收到请求的时候,就不会对它的peer节点进行复制,从而避免死循环。

Eureka高可用原理

Client端高可用

在Client启动之前,如果没有Eureka Server,则可通过配置Eureka.client.backup-registry-impl从备份registry读取关键服务的信息

]在client启动之后,若运行时出现Eureka Server全部挂掉的情况:本地内存有localRegion之前获取的数据,在Eureka Server都不可用的情况下,从Server端定时拉取注册信息回来更新的线程CacheRefreshThread会执行失败,本地localRegion信息不会被更新。

在client启动后,若运行时出现Eureka Server出现部分挂掉的情况,如果预计恢复时间比较长,可以人工介入,可以通过配置文件剔除掉挂掉的Eureka Server地址,Client端会定时刷新serviceUrI。除此之外,Client维护了一个Eureka Server的不可用列表,一旦请求发生Connection error或者5xx的情况则会被列入该列表,当该列表的大小超过指定阈值则会被重新清空。在重新清空的情况下,Client默认是采用RetryableEurekaHttpClient进行请求,numberOfRetries为3.因此也能够在一定程度保障Client的高可用。

Server端高可用

由于Eureka Server采用的是peer to peer的架构模式,因而也就无所谓Server端的高可用,主要的高可用都在Client端进行处理了。不过server端也支持了跨region基本的高可用,可以通过配置remoteRegionUrlsWithName来支持拉取远程region的实力信息。如果当期region要访问扥服务实例都挂了,那么Server端就会fallback到远程region的该服务实例

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

推荐阅读更多精彩内容