摘要:由于還沒有提供一個中間層負(fù)載均衡,填補(bǔ)了這個中間層負(fù)載均衡的巨大空缺。與有什么不同是一個暴露給終端用戶網(wǎng)絡(luò)流量的服務(wù)邊緣負(fù)載均衡方案。它主要的目的就是保存一個區(qū)域內(nèi)的信息作為負(fù)載均衡用途。
什么是Eureka?
Eureka是一個基于REST的服務(wù),主要用在AWS云環(huán)境作為服務(wù)發(fā)現(xiàn),負(fù)載均衡和失敗轉(zhuǎn)移。我們叫這個服務(wù),Eureka服務(wù)。 Eureka也有一個JAVA客戶端組件, Eureka Client,幫助與服務(wù)端更簡單的交互。 客戶端也有一個內(nèi)置的負(fù)載均衡做簡單的round-robin均衡。 在Netflix, 很多更高級的負(fù)載均衡器包裝了Eureka來提供基于很多其他因子,如流量,資源利用率,錯誤情況等權(quán)重的負(fù)載均衡。
為什么需要Eureka?在AWS云,由于其天生的屬性,服務(wù)器來來去去。不像傳統(tǒng)的負(fù)載均衡是與已知的IP地址和機(jī)器名工作,在AWS,負(fù)載均衡需要更多更復(fù)雜的注冊,解注冊服務(wù)。由于AWS還沒有提供一個中間層負(fù)載均衡,Eureka填補(bǔ)了這個中間層負(fù)載均衡的巨大空缺。
Eureka與AWS ELB有什么不同?AWS Elastic Load Banancer是一個暴露給終端用戶網(wǎng)絡(luò)流量的服務(wù)邊緣負(fù)載均衡方案。Eureka是作為中間層負(fù)載均衡的補(bǔ)充。理論上你可以把中間層服務(wù)放在AWS ELB之后, 如果在EC2模型中你把他們直接暴露給外部世界但失去了所有AWS安全組的好處。
AWS ELB也是一個傳統(tǒng)的代理類型的負(fù)載均衡方案然而Erueka是不同的,負(fù)載均衡發(fā)生在實例/服務(wù)器/主機(jī)級別。客戶端實例知道所有關(guān)于他們需要與哪臺服務(wù)器通信的信息。基于你看的角度這可能會是好處也是壞處。如果你尋找的是AWS提供的基于用戶session粘滯的負(fù)載均衡,Eureka沒有一個開箱即用的方案。在Netflix,我們更需要我們的服務(wù)是無狀態(tài)的(無粘滯)。這是一個更好的擴(kuò)展模型并且Eureka很適合做這個。
另一個與代理模式負(fù)載均衡和用Eureka的負(fù)載均衡的不同是你的應(yīng)用在負(fù)載均衡停機(jī)時更有彈性,這是由于所有可用服務(wù)器的信息都緩存在客戶端。這確實需要一點(diǎn)內(nèi)存,但買到了更好的彈性。
Eureka與Route 53有什么不同?Route 53是一個域名服務(wù),同樣的Eureka可以提供同樣的中間層服務(wù),但相似點(diǎn)到此為止了。 Route 53是一個DNS服務(wù),甚至可以在非AWS數(shù)據(jù)中心都可以提供你的DNS記錄。Route 53也可以在AWS區(qū)域之間基于路由做延遲控制。Eureka與內(nèi)部DNS是同義詞并且跟外部世界的DNS服務(wù)沒有任何關(guān)系。廣義上Eureka也是一個區(qū)域隔離的服務(wù),他不知道其他AWS區(qū)域的服務(wù)器。它主要的目的就是保存一個區(qū)域內(nèi)的信息作為負(fù)載均衡用途。
你可以將你的之后跟漸層服務(wù)注冊在Route 53上并用AWS安全組來保護(hù)你的公網(wǎng)服務(wù)器,但這樣你的中間層服務(wù)器仍然暴露在外部。他同樣會有傳統(tǒng)基于DNS負(fù)載均衡方案的缺點(diǎn),流量仍然可能會被路由到服務(wù)器已經(jīng)不健康或者已經(jīng)不存在的地方(AWS的云服務(wù)里任何時候服務(wù)器都可能消失)。
Netflix是怎么使用Eureka的?在Netflix,Eureka除了作為一個中間層負(fù)載均衡的關(guān)鍵部分,還作為以下的原因。
作為與Netflix Asgard一起的紅黑部署 - Asgard一個讓云部署更方便的開源服務(wù)。Eureka會與Asgard交互,讓應(yīng)用在新/老版本部署切換,讓故障處理更快速和無縫 - 尤其是當(dāng)啟動100個實例部署時要花費(fèi)很長時間的時候。
當(dāng)我們的cassandra需要維護(hù)時摘掉實例。
為我們的memcached緩存服務(wù)提供識別環(huán)上實例列表功能。
由于各種各樣的原因提供保存其他應(yīng)用特有原信息的服務(wù)。
什么時候使用Eureka?你運(yùn)行在AWS云上并且你有很多不像注冊在AWS ELB上或暴露給外部的中間層服務(wù)。你想找一個簡單的round-robin的負(fù)載均衡方案或者想要寫一個基于Eureka包裝過的符合你要求的負(fù)載均衡器。你不需要session粘滯和將session數(shù)據(jù)保存在一個像memcache的外部緩存。更重要的是,如果你的架構(gòu)風(fēng)格適合一個基于客戶端的負(fù)載均衡模型,Eureka相當(dāng)適合這個場景。
應(yīng)用客戶端和應(yīng)用服務(wù)端怎么通信?通信技術(shù)可以試試任何你喜歡的。Eureka幫你找到你需要通信的服務(wù)信息但沒有引入任何通信協(xié)議或方法的限制。比如,你可以用Eureka獲得目標(biāo)機(jī)器地址并使用thrift,http(s)或其他RPC機(jī)制的協(xié)議。
高層架構(gòu)以上架構(gòu)解釋了Eureka是怎樣在Netflix部署的并也是你會運(yùn)行的狀態(tài)。在每個區(qū)域(region)都會有一個eureka集群,它只知道關(guān)于這個區(qū)域內(nèi)的實例信息。每個zone都至少也有一個eureka服務(wù)器來處理zone級別容災(zāi)。
服務(wù)注冊在Eureka上并且每30秒發(fā)送心跳來續(xù)命。如果一個客戶端在幾次內(nèi)沒有刷新心跳,它會在90秒后被移出服務(wù)器注冊信息。注冊信息和刷新信息會在整個eureka集群的節(jié)點(diǎn)進(jìn)行復(fù)制。任何zone的客戶端都可看到注冊信息(每30秒發(fā)生)去定位他們的服務(wù)(可能會在任何zone)并做遠(yuǎn)程調(diào)用。
非Java服務(wù)和客戶端對于非Java的服務(wù),你可以用其他語言實現(xiàn)eureka的客戶端部分?;赗EST的服務(wù)也暴露給了所有操作給Eureka客戶端。非Java客戶端也可以使用REST服務(wù)來查詢其他服務(wù)的信息。
可配置使用Eureka你可以在集群中隨意添加刪除節(jié)點(diǎn)。你可以調(diào)各種內(nèi)部配置,從超時到線程池。Eureka使用archaius并且如果你又一個配置源的實現(xiàn)那么可以動態(tài)調(diào)整很多東西。
彈性在AWS云,很難不去思考構(gòu)建彈性伸縮。Eureka使我們經(jīng)驗的結(jié)晶,在客戶端和服務(wù)端都內(nèi)置了彈性能力。
Eureka客戶端設(shè)計成可以處理一個或多個Eureka服務(wù)端的失敗場景。由于Eureka客戶端有注冊信息的緩存,他們可以很從容的處理失敗,就算是所有的eureka服務(wù)器都掛了也可以。
Eureka服務(wù)器對于其他eureka節(jié)點(diǎn)掛了也有足夠的彈性。就算是服務(wù)端和客戶端產(chǎn)生了網(wǎng)絡(luò)分區(qū),服務(wù)器也有內(nèi)置的彈性策略來防止大面積的停機(jī)。
多區(qū)域(Region)在多個AWS區(qū)域部署Eureka是一個很簡單的工作。多個區(qū)域的Eureka集群之間并不通信。
監(jiān)控Eureka用servo來追蹤服務(wù)端和客戶端的信息,包括性能,監(jiān)控和報警。數(shù)據(jù)保存在JMX中并暴露給Amazon Cloud Watch。
原文:
https://github.com/Netflix/eu...
本文來自微信公眾號「麥芽面包,id「darkjune_think」
轉(zhuǎn)載請注明。
微信掃一掃關(guān)注公眾號。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/66481.html
摘要:在應(yīng)用啟動后,將會向發(fā)送心跳默認(rèn)周期為秒,如果在多個心跳周期沒有收到某個節(jié)點(diǎn)的心跳,將會從服務(wù)注冊表中把這個服務(wù)節(jié)點(diǎn)移除默認(rèn)秒。進(jìn)入類看看,看這個類的名字,見名知意,應(yīng)該就是的啟動類了。。。分析一由于是我們剛剛打斷點(diǎn) SpringCloud(第 049 篇)Netflix Eureka 源碼深入剖析(上) - 一、大致介紹 1、鑒于一些朋友的提問并提議講解下eureka的源碼分析,由此...
摘要:如果你是個足球迷的話,估計或多或少都會看一下昨晚中國踢韓國的比賽,因為不管他們踢得怎樣,我們還是深愛著他們,那句話說得好,國足虐我千百遍,我待國足如初戀。 如果你是個足球迷的話,估計或多或少都會看一下昨晚中國踢韓國的比賽,因為不管他們踢得怎樣,我們還是深愛著他們,那句話說得好,國足虐我千百遍,我待國足如初戀。更何況他們兩場都踢贏了,所以面對第三場實力有點(diǎn)強(qiáng)的韓國隊也是希望能贏的,畢竟我...
摘要:近年來機(jī)器學(xué)習(xí)領(lǐng)域隨著深度神經(jīng)網(wǎng)絡(luò)的崛起而迎來新一波的春天,尤其最近兩年無論學(xué)界還是業(yè)界,或是各大媒體,甚至文盲老百姓都言必稱智能。 近年來機(jī)器學(xué)習(xí)、AI領(lǐng)域隨著深度神經(jīng)網(wǎng)絡(luò)(DNN)的崛起而迎來新一波的春天,尤其最近兩年無論學(xué)界還是業(yè)界,或是各大媒體,甚至文盲老百姓都言必稱智能。關(guān)于這方面,可討論的東西實在太多太多,我不想寫成一本厚厚的書,所以在此僅以機(jī)器學(xué)習(xí)在計算機(jī)視覺和圖像領(lǐng)域的人臉識...
摘要:概要什么是使用獲取服務(wù)調(diào)用整合構(gòu)建集群什么是模塊提供的功能是被動式的服務(wù)發(fā)現(xiàn)什么是服務(wù)發(fā)現(xiàn)服務(wù)發(fā)現(xiàn)就像聊天室一個每個用戶來的時候去服務(wù)器上注冊這樣他的好友們就能看到你你同時也將獲取好友的上線列表在微服務(wù)中服務(wù)就相當(dāng)于聊天室的用戶而服務(wù)注冊中 概要 什么是Spring Cloud Eureka? 使用Eureka獲取服務(wù)調(diào)用 Eureka整合Spring Config Server 構(gòu)...
閱讀 1944·2021-08-13 15:06
閱讀 3188·2021-08-05 10:02
閱讀 3478·2019-08-30 15:55
閱讀 2475·2019-08-30 13:46
閱讀 2572·2019-08-30 13:01
閱讀 1409·2019-08-29 17:17
閱讀 2891·2019-08-29 15:27
閱讀 1493·2019-08-29 11:12