SpringCloud之Eureka微服務(wù)注冊中心
一、 Eureka簡介

1、Eureka是什么?
? ? Eureka是由Netflix公司推出的服務(wù)注冊和發(fā)現(xiàn)工具?,F(xiàn)已被Spring Cloud集成,提供了開箱即用的支持。(直接在項目中直接集成,快捷使用)
2、Eureka角色
? ? Eureka中分為兩個角色:Eureka Server(Eureka服務(wù))和Eureka Client(Eureka客戶端)。
? ? 無論是服務(wù)端還是客戶端其本質(zhì)都是一個Java項目,在Spring Cloud中主要通過啟動類上添加@EnableEurekaServer和@EnableEurekaClient(可以省略)來區(qū)分當(dāng)前應(yīng)用程序是服務(wù)端還是客戶端。
? ? Eureka Server可以理解成之前我們講解的Zookeeper注冊中心,只是現(xiàn)在使用的是Java項目實現(xiàn)的(Spring Cloud內(nèi)嵌Eureka)。
? ? Eureka Client 可以理解成所有需要注冊到Eureka Server中的項目。為什么需要向注冊中心中注冊呢?因為注冊后別人才能通過注冊中心獲取到項目信息和項目所在服務(wù)器信息,通過這些信息調(diào)用這個項目。Spring Cloud中每個項目調(diào)用的信息都存儲在了注冊中心中(Eureka)。
注意:在這里,Spring Cloud中沒有Provider和Consumer說法。如果A項目訪問B項目,稱A項目為Application Client,稱B項目為Application Service。同時可能存在C訪問A的情況,這是C項目是Application Client,A項目是Application Service。發(fā)現(xiàn)A項目又是Application Service又是Application Client,主要看針對哪個業(yè)務(wù)場景。無論是Applicatin Service還是Application Client都是Eureka Client。
二、 Eureka和Zookeeper對比(面試)
? ? 在Spring Cloud Netfilx中可以使用Eureka作為注冊中心,但是也可以通過配置的方式使用Zookeeper作為配置中心,既然都支持,就需要知道兩者的區(qū)別。
1、CAP理論(分布式一致性定理)
? ? 著名的CAP理論指出,一個分布式系統(tǒng)不可能同時滿足C(一致性)、A(可用性)和P(分區(qū)容錯性)。由于分區(qū)容錯性在是分布式系統(tǒng)中必須要保證的,因此我們只能在A和C之間進行權(quán)衡。在此Zookeeper保證的是CP, 而Eureka則是AP
C(一致性Consistency):在分布式系統(tǒng)中,是否立即達到數(shù)據(jù)同步的效果(平時多說的強一致性)。在分布式系統(tǒng)一定最終會一致的。如果請求時,整個分布式系統(tǒng)同步后才返回結(jié)果,叫做強一致性(滿足一致性)。如果先返回結(jié)果,在一定時間后才實現(xiàn)一致性就叫做弱一致性。
A(可用性Availability):在分布式系統(tǒng)中,其中一些節(jié)點出現(xiàn)問題,整個整體是否還可用。
P(分區(qū)容錯性):在分布式系統(tǒng)中,是否可以在有限的時間內(nèi)達到數(shù)據(jù)一致的效果,如果因為網(wǎng)絡(luò)等問題最終沒有達到一致性,這時稱為出現(xiàn)分區(qū)錯誤。
2、Zookeeper 保證 CP
? ? 在Zookeeper集群中,Zookeeper的數(shù)據(jù)保證的是一致性的。當(dāng)Leader出現(xiàn)問題時,整個Zookeeper不可用,需要花費30~120s來進行重新選擇Leader,當(dāng)Leader選舉成功以后才能進行訪問整個Zookeeper集群。
? ? 通過這點也可以看出Zookeeper是強一致性的,集群所有節(jié)點必須能通信,才能用集群。雖然這樣集群數(shù)據(jù)安全了,但是可用性大大降低了。而作為注冊中心來說可用性是很重要的。
3、Eureka 保證AP
? ? Eureka發(fā)現(xiàn)了Zookeeper的問題,所以它舍棄了Zookeeper中強一致性,而保證了可用性。
? ? 在Eureka集群中所有的節(jié)點都是保存完整的信息的,當(dāng)Eureka Client向Eureka中注冊信息時,如果發(fā)現(xiàn)節(jié)點不可用,會自動切換到另一臺Eureka Sever,也就是說整個集群中即使只有一個Eureka可用,那么整個集群也是可用的。
? ? 同時Eureka的自我保護機制也是實現(xiàn)可用性非常重要的體現(xiàn)。
4、ZooKeeper和Eureka對比(最完整的對比)


三、第一個Eureka Server
? ? 搭建Eureka Server時就相當(dāng)于在安裝Eureka軟件(在Spring Cloud學(xué)習(xí)的一種全新方式,替換了之前需要安裝對應(yīng)軟件的問題)。
1、導(dǎo)入依賴
? ? 添加Spring Boot 依賴和Spring Cloud集成的Eureka Server依賴。
? ? 所有依賴的版本都是最新版。

2、編寫配置文件
? ? 在application.yml中添加一下內(nèi)容,不添加會報錯。
? ? 此處要求tomcat端口和Eureka Server的端口是相同的。Eureka Server 默認(rèn)端口是8761所以此處配置為8761.如果此處希望配置為8082等非8761端口,需要打開注釋。

3、在啟動類中添加注解
? ? 在啟動類中添加@EnableEurekaServer注解,表示當(dāng)前項目為Eureka Server

4、訪問
在瀏覽器地址欄輸入:http://localhost:8761/

四、Eureka 服務(wù)管理平臺介紹
1、Eureka Server服務(wù)管理平臺訪問預(yù)覽

2、System Status
? ? 系統(tǒng)狀態(tài)展示
3、DS Replicas
? ? 注冊中心集群列表
4、Instances currently registered with Eureka
? ? 已在注冊中心中注冊的服務(wù)列表
5、General Info
? ? 當(dāng)前注冊中心相關(guān)信息展示
6、Instance Info
? ? 當(dāng)前注冊中心實例信息展示
