1. 程式人生 > >SOA之路 -- 為什麼Eureka比ZooKeeper更適合做服務發現與註冊服務

SOA之路 -- 為什麼Eureka比ZooKeeper更適合做服務發現與註冊服務

CAP是Consistency、Availablity和Partition Tolerance的縮寫。一般的分散式系統最多滿足其中兩條。而Partition Tolerance是分散式系統的關鍵,因此都會保留此特性。

Eureka是基於AP原則構建的,而ZooKeeper是基於CP原則構建的。這些可以從他們的特性中得到體現。

ZK有一個Leader,而且在Leader無法使用的時候通過Paxos(ZAB)演算法選舉出一個新的Leader。這個Leader的目的就是保證寫資訊的時候只向這個Leader寫入,Leader會同步資訊到Followers。這個過程就可以保證資料的一致性。

對比下ZK,Eureka不用選舉一個Leader。每個Eureka伺服器單獨儲存服務註冊地址,Eureka也沒有Leader的概念。這也因此產生了無法保證每個Eureka伺服器都儲存一直資料的特性。當Eureka與註冊者心跳無法保持的時候,依然儲存註冊列表的資訊很長一段時間。當然了,客戶端中必須用有效的機制遮蔽壞掉的伺服器,這個Spring Cloud中的體現是Ribbon。

Eureka因為沒有選舉過程來選舉Leader,因此寫的資訊可以獨立進行。因此有可能出現數據信息不一致的情況。但是當網路出現問題的時候,每臺伺服器也可以完成獨立的服務。當然了,一些客戶端的負載平衡和Fail Over機制需要來輔助完成額外的功能。相較之下,ZK因為基於CP原則,能保證很好的資料一致性,但是可用性支援力度不高。而在一個內部系統中,主要是服務的註冊與發現,而不是配置(檔案)共享,因此Eureka更適用於內部服務的建設。

相關推薦

SOA -- 為什麼EurekaZooKeeper適合服務發現註冊服務

CAP是Consistency、Availablity和Partition Tolerance的縮寫。一般的分散式系統最多滿足其中兩條。而Partition Tolerance是分散式系統的關鍵,因此都會保留此特性。 Eureka是基於AP原則構建的,而ZooKeeper是

SpringCloud實戰二:Spring Cloud Eureka 服務發現註冊中心

  Spring Cloud Eureka 它是通過封裝 Netflix 開源的Eureka,一款基於 Rest 的服務發現與註冊元件,包括 Eureka Server 和 Eureka Client,最新版本為2018年8月釋出的1.9.4版本,最新的2.x版本已經不再開源,但是1.9

Spring Cloud 服務發現註冊Eureka

一、簡要說明: 服務發現與註冊:方便各服務之間自動註冊,呼叫時直接調服service_id,不需關心具體的業務部署情況;方便後續需實現的負載均衡等功能。 二、環境說明: spring:2.1.0.RELEASE maven:3.5.3 JDK:1.8 IDE:In

Spring Cloud 服務發現註冊Eureka)- 客戶端

一、環境說明: spring:2.1.0.RELEASE maven:3.5.3 JDK:1.8 IDE:IntelliJ IDEA  2018.2 二、實現步驟 a:新建專案:File->New->Project... b、填寫專案資訊: G

【資料結構二叉樹】(二)B+樹B樹適合檔案索引的原因

 原因:相對於B樹, (1)B+樹空間利用率更高,可減少I/O次數, 一般來說,索引本身也很大,不可能全部儲存在記憶體中,因此索引往往以索引檔案的形式儲存的磁碟上。這樣的話,索引查詢過程中就要產生磁碟I/O消耗。而因為B+樹的內部節點只是作為索引使用,而不像B-樹那樣每個節點都需要儲存硬碟指標。

Spring Cloud 進階 -- Eureka的高可用,搭建 Eureka叢集(開發環境和生產環境)

  Eureka 作為註冊中心,必須保障高可用,否則會直接影響有關的整個服務體系。 以下分別進行開發環境和生產環境的多服務中心叢集配置。   目錄 一、開發環境簡易配置: 1、配置Configurations 2、在Configurations 裡

Spring Cloud 進階 -- Eureka Server 端從0開始搭建圖文教程

  Spring Cloud Eureka 能實現服務的註冊和發現,下面使用IntelliJ IDEA + maven 從0開始搭建 Eureka Server。   1、新建專案,選擇 Spring Initializr,JDK 1.8,選擇預設的 https:

為什麼我覺得 nio aio 適合高併發

nio 是同步非阻塞的,aio 是非同步非阻塞的,初看,肯定是非同步的更好更高階啊,那為什麼我覺得 nio 比 aio 更適合高併發呢?嗯,一定是哪兒出了問題。 這個要涉及到它們兩個的具體實現和使用了。 首先,我們想象 bio 高併發的最主要限制條件是什麼?阻塞。對,阻塞是對資源極

Roger Ver:BCHBCE適合機構投資者

據外媒ambcrypto報道,bitcoin.com網站建立者Roger Ver在接受採訪時表示,BCH比BCE更適合機構投資者,並將原因解釋為:最初驅動比特幣價格攀升和大規模採用的基本面已經不存在了,現在這個基本面存在於比特幣現金中。Roger Ver是早期的比特幣參與

【資料結構二叉樹】(一)B樹、B-樹、B+樹、B*樹介紹,和B+樹適合檔案索引的原因

     今天看資料庫,書中提到:由於索引是採用 B 樹結構儲存的,所以對應的索引項並不會被刪除,經過一段時間的增刪改操作後,資料庫中就會出現大量的儲存碎片,這和磁碟碎片、記憶體碎片產生原理是類似的,這些儲存碎片不僅佔用了儲存空間,而且降低了資料庫執行的速度。如果發現索引

B+樹B樹適合檔案索引的原因

B樹: B+樹: 結構上 B樹中關鍵字集合分佈在整棵樹中,葉節點中不包含任何關鍵字資訊,而B+樹關鍵字集合分佈在葉子結點中,非葉節點只是葉子結點中關鍵字的索引;B樹中任何一個關鍵字只出現在一個結點中,而B+樹中的關鍵字必須出現在葉節點中,也可能在非葉結點中

B+樹B樹適合檔案資料庫索引

B樹: B+樹: B*樹是B+樹的變體,在B+樹的非根和非葉子結點再增加指向兄弟的指標; B樹和B+樹在結構上的區別 1. B樹中關鍵字集合分佈在整棵樹中,葉節點中不包含任何關鍵字資訊,而B+樹關鍵字集合分佈在葉子結點中,非葉節點只是葉子結點

服務中心EurekaZookeeper對比

著名的CAP理論指出,一個分散式系統不可能同時滿足C(一致性)、A(可用性)、和P(分割槽容錯性)。由於分割槽容錯性P在分散式系統中必須要保證的,因此我們只能在A和C之間進行權衡。 因此: Zookeeper保證的是CP, Eureka則是AP。 Zoopkeeper保證CP: 當向

Spring Cloud 進階 -- Eureka的高可用,搭建 Eureka叢集(開發環境和生產環境)

Eureka 作為註冊中心,必須保障高可用,否則會直接影響有關的整個服務體系。 以下分別進行開發環境和生產環境的多服務中心叢集配置。 目錄 一、開發環境簡易配置: 1、配置Configurations 在上一

服務註冊中心,EurekaZookeeper好在哪裡?

開發十年,就只剩下這套架構體系了! >>>   

java架構-(分散式zookeeperzookeeper叢集配置和選舉機制詳解

  上次部落格我們說了一下zookeeper的配置檔案,以及命令的使用https://www.cnblogs.com/cxiaocai/p/11597465.html。我們這次來說一下我們的zookeeper的叢集配置和java的API相關操作。 叢集:   一般情況下我們用zookeeper來做任務排程中心

為什麼ElasticSearchMySQL適合全文索引

熟悉 MySQL 的同學一定都知道,MySQL 對於複雜條件查詢的支援並不好。MySQL 最多使用一個條件涉及的索引來過濾,然後剩餘的條件只能在遍歷行過程中進行記憶體過濾,對這個過程不瞭解的同學可以先行閱讀一下[《MySQL複雜where條件分析》](http://remcarpediem.net/artic

[js高手]Node.js模板引擎教程-jade速學實戰3-mixin

函數 .cn ima images ade 高手 js模板引擎 ron pan 強大的mixin mixin類似於函數的功能,可以達到模塊復用的效果 mixin show: 定義一個類似函數的功能,名字叫show,裏面的就是他的內容 +show: 調用show,每

[js高手]Node.js模板引擎教程-jade速學實戰2-流程控制,轉義非轉義

title 學習 != 下一步 cas ase spa back name 一、轉義與非轉義 jade模板文件代碼: 1 doctype html 2 html 3 head 4 meta(charset=‘utf-8‘)

[js高手]Node.js模板引擎教程-jade速學實戰4-模板引用,繼承,插件使用

node.js ade 方法 頭部 containe jade bsp 繼承 for 一、block 模塊復用 把需要復用的模塊用block定義 block後面跟上模塊的名字,引用一次block 內容就會被復用一次 編譯之後的結果: 二,繼承模板(exten