一:Eureka介紹java
二:Eureka架構圖node
三:Eureka組件git
四:Eureka做用github
五:Eureka和Zookeeper對比redis
引入SpringCloud中文文檔介紹算法
Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier servers.緩存
At Netflix, Eureka is used for the following purposes apart from playing a critical part in mid-tier load balancing.服務器
For aiding Netflix Asgard - an open source service which makes cloud deployments easier, in架構
For our cassandra deployments to take instances out of traffic for maintenance.app
For our memcached caching services to identify the list of nodes in the ring.
For carrying other additional application specific metadata about services for various other reasons.
意思爲:
Eureka是一種基於REST(Representational State Transfer)的服務,主要用於AWS雲,用於定位服務,以實現中間層服務器的負載平衡和故障轉移。
在Netflix,除了在中間層負載平衡中起關鍵做用以外,Eureka還用於如下目的。
爲了幫助Netflix Asgard - 一種開源服務,能夠更輕鬆地實現雲部署
對於咱們的cassandra部署,將實例從流量中取出進行維護。
對於咱們的memcached緩存服務來識別環中的節點列表。
因爲各類其餘緣由而攜帶有關服務的其餘應用程序特定元數據。
上面的架構圖描述了Eureka是如何在Netflix部署的,這也是Eureka集羣的運行方式。在每一個區域(region)都有一個eureka集羣,它只知道該區域內的實例信息。每一個分區(zone)至少有一個eureka服務器來處理本分區故障。
服務註冊在Eureka上而且每30秒發送心跳來續租。若是一個客戶端在幾回內沒有刷新心跳,它將在大約90秒內被移出服務器註冊表。註冊信息和更新信息會在整個eureka集羣的節點進行復制。任何分區的客戶端均可查找註冊中心信息(每30秒發生一次)來定位他們的服務(可能會在任何分區)並進行遠程調用。
著名的CAP理論指出,一個分佈式系統不可能同時知足C(一致性)、A(可用性)和P(分區容錯性)。因爲分區容錯性在是分佈式系統中必需要保證的,所以咱們只能在A和C之間進行權衡。在此Zookeeper保證的是CP, 而Eureka則是AP。
zookeeper優先保證CP,當服務發生故障會進行leader的選舉,整個期間服務處在不可用狀態,若是選舉時間過長勢必會大幅度下降性能,另外就用途來講zookeeper偏向於服務的協調,固然含有註冊中心的做用
eureka優先保證AP, 即服務的節點各個都是平等的,沒有leader不leader一說, 當服務發生故障時,其他的節點仍然能夠提供服務,所以在出現故障時,性能表現優於zookeeper,可是可能會形成數據不一致的狀況。
總結:Eureka做爲單純的服務註冊中心來講要比zookeeper更加「專業」,由於註冊服務更重要的是可用性,咱們能夠接受短時間內達不到一致性的情況。