Spring Cloud— 五、注冊中心Eureka

5.1、為Eureka添加用戶認證

在前面的實例中,我們可以看到我們需要登陸即可訪問到Eureka服務,這樣其實是不安全的。

接下來,我們?yōu)镋ureka添加用戶認證。

第一步,為springcloud-demo-eureka添加安全認證依賴:

<!--安全認證-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

第二步,增加application.properties配置文件:


application.properties.png

第三步,重新啟動Eureka服務進行測試:


測試結(jié)果.png

輸入正確的用戶名密碼即可登陸。
這是,服務提供者注冊到Eureka時會報錯,所以需要在服務注冊時也需要設置用戶名和密碼。

5.2服務注冊時設置賬戶信息

服務注冊到有認證需求的注冊中心時,需要設置如下信息:
http://User:Password@127.0.0.1:8888/eureka/

application.properties.png

重新啟動測試,可以看到已經(jīng)注冊到了Eureka服務注冊中心。

5.3、Eureka的自我保護模式

如圖,當前Eureka進入了自我保護模式。


自我保護模式.png

默認情況下,如果Eureka Server在一定時間內(nèi)沒有接受到某個微服務實例的心跳,Eureka Server將會注銷該實例(默認90秒)。但是當網(wǎng)絡分區(qū)故障發(fā)生時,微服務與Eureka Server之間無法正常通信,以上行為可能變得非常危險了——因為微服務本身其實是健康得,此時本不應該注銷這個微服務。
Eureka通過“自我保護模式”來解決這個問題——當Eureka Server節(jié)點在短時間內(nèi)丟失過多客戶端時(可能發(fā)生了網(wǎng)絡分區(qū)故障),那么這個節(jié)點就會進入自我保護模式。一旦進入該模式,Eureka Server就會保護服務注冊表的信息,不再刪除服務注冊表中的數(shù)據(jù)(也就是不會注銷任務微服務)。當網(wǎng)絡故障恢復后,該Eureka Server節(jié)點會自動退出自我保護模式。

綜上,自我保護模式是一種應對網(wǎng)絡異常的安全保護措施。它的架構(gòu)哲學是寧可同時保留所有的微服務(健康的微服務和不健康的微服務都會保留),也不盲目注銷任何健康的微服務。使用自我保護模式,可以讓Eureka集群更加的健壯、穩(wěn)定。

所以,一般進入自我保護模式,無需處理。如果,需要禁用自我保護模式,只需要在application配置文件中添加配置即可
application.properties.png

重新啟動服務查看效果:


效果.png

提示,如果禁用自我保護模式,在網(wǎng)絡通信故障下會出現(xiàn)問題。

5.4、Eureka的高可用

前面得測試,我們會發(fā)現(xiàn),Eureka服務是一個單點服務,在生產(chǎn)環(huán)境就會出現(xiàn)單點故障,為了確保Eureka服務得高可用,我需要搭建Eureka服務的集群。

搭建Eureka集群非常簡單,只要啟動多個Eureka服務并且讓這些服務之間彼此進行注冊即可實現(xiàn)。

第一步,修改springcloud-demo-eureka的application.properties文件:
application.properties.png

第二步:修改配置文件,再啟用一個Eureka服務,進行啟動測試:
application.properties.png

測試結(jié)果:
測試結(jié)果.png
測試結(jié)果2.png

可以看到,2個Eureka服務進行了彼此注冊。

說明:啟動兩個spring boot項目第一個可以用ieda啟動,第二個可以用命令mvn spring-boot:run,當然還有其他的很多方式。

5.5、將服務注冊到Eureka集群

服務注冊到Eureka集群時,可以指定多個,也可以指定一個Eureka服務(因為Eureka服務集群間彼此互聯(lián))。

修改springcloud-demo-item的application配置文件:

 #Eureka服務端與Eureka客戶端交互地址
eureka.client.serviceUrl.defaultZone=http://zuo:123456@127.0.0.1:8888/eureka/,http://zuo:123456@127.0.0.1:9999/eureka/

重啟,測試:
結(jié)果1.png
結(jié)果2.png

可以通過停止Eureka服務進行測試,結(jié)果會發(fā)現(xiàn)集群是高可用。

5.6、指定實例的IP地址與實例ID

在服務的提供者配置文件中可以指定ip地址,如下:

#指定此實例ip
eureka.instance.ip-address=127.0.0.1
#指定此實例ID
eureka.instance.instance-id=${spring.application.name}:${server.port}

Spring Cloud—一、微服務架構(gòu)
Spring Cloud—二、Spring Cloud簡介
Spring Cloud—三、使用Spring Cloud實現(xiàn)微服務
Spring Cloud—四、Spring Cloud快速入門
Spring Cloud—五、注冊中心Eureka
Spring Cloud—六、使用Ribbon實現(xiàn)負載均衡
Spring Cloud—七、容錯保護:Hystrix
Spring Cloud—八、使用Feign實現(xiàn)聲明式的Rest調(diào)用
Spring Cloud—九、服務網(wǎng)關Spring Cloud Zuul
Spring Cloud—十、使用Spring Cloud Config統(tǒng)一管理微服務
Spring Cloud—十一、使用Spring Cloud Bus(消息總線)實現(xiàn)自動更新

demo源碼

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • Demo 源碼下載 本案例為源碼分支的 eureka 分支 服務發(fā)現(xiàn)概述 服務發(fā)現(xiàn)機制是為了解決硬網(wǎng)絡編碼問題,服...
    聰明的奇瑞閱讀 5,247評論 0 13
  • 概述 著名的CAP理論指出,一個分布式系統(tǒng)不可能同時滿足C(一致性)、A(可用性)和P(分區(qū)容錯性)。由于分區(qū)容錯...
    PKAQ閱讀 3,919評論 0 13
  • 1 為什么需要服務發(fā)現(xiàn) 簡單來說,服務化的核心就是將傳統(tǒng)的一站式應用根據(jù)業(yè)務拆分成一個一個的服務,而微服務在這個基...
    謙小易閱讀 25,326評論 4 93
  • 今天上班. 1, 老項目的新需求又發(fā)過來了..綜合查詢 的功能需求基本都有了2, 繼續(xù)尋找跨域的解決方案. 問題...
    yisky閱讀 231評論 0 0

友情鏈接更多精彩內(nèi)容