1. 程式人生 > >spring cloud 入門系列三:使用Eureka 搭建高可用服務註冊中心

spring cloud 入門系列三:使用Eureka 搭建高可用服務註冊中心

在上一篇中分享了如何使用Eureka 進行服務治理,裡面搭建的服務註冊中心是單體的,

但是在實際的應用中,分散式系統為了防止單體服務宕機帶來嚴重後果,一般都會採用伺服器叢集的形式,服務註冊中心也是一樣,需要多臺服務一起工作,組成高可用的服務註冊中心。這樣,如果有其中一臺宕機,系統也能正常執行。

那麼如何來構建高可用的服務註冊中心呢?

由於eureka註冊中心既可以作為服務端(服務註冊中心),也可以作為客戶端(到別的註冊中心註冊自己),

我們可以通過在機器上部署peer1和peer2兩個服務,兩個服務相互註冊。

一、程式碼實現

  還是使用上篇文章中的eureka服務例子,在此基礎上我們進行修改:

  1. 新增/eureka/src/main/resources/application-peer1.properties
    server.port=1111
    
    spring.application.name=eureka-service
    #設定主機名為peer1
    eureka.instance.hostname=peer1
    
    #eureka.client.register-with-eureka=false
    #eureka.client.fetch-registry=false
    #設定eureka的serviceUrl為peer2
    eureka.client.serviceUrl.defaultZone
    =http://peer2:1112/eureka
  2. 新增/eureka/src/main/resources/application-peer2.properties
    server.port=1112
    
    spring.application.name=eureka-service
    eureka.instance.hostname=peer2
    #eureka.client.register-with-eureka=false
    #eureka.client.fetch-registry=false
    #設定eureka的serviceUrl為peer1
    eureka.client.serviceUrl.defaultZone
    =http://peer1:1111/eureka

    由於需要peer1和peer2相互註冊,因此第1和第2步中,eureka.client.register-with-eureka=false和eureka.client.fetch-registry=false這兩個配置就不能要了,需要註釋掉或刪掉。

  3. 設定host,在C:\Windows\System32\drivers\etc目錄下的hosts檔案中新增
    127.0.0.1 peer1
    127.0.0.1 peer2

    以將peer1和peer2進行解析。

  4. 配置兩個啟動服務
    1. )
    2. )  
  5. 啟動eureka1和eureka2
  6. 頁面訪問http://localhost:1111/

    我們會發現,在DS Replicas(分片)中會有peer2;   在服務instance中會有2個,一個是1111,一個是1112;   在registered-replicas(註冊分片)和available-replicas(可用分片)中出現了peer2:1112。  同樣道理,我們訪問http://localhost:1112/也能看到相似效果。 如果將peer2停掉,那麼在訪問http://localhost:1111/的時候就會發現peer2已經跑到unavailable-replicas(不可用分片)中,具體截圖略。

二、除錯中遇到的問題

我在除錯以上內容的時候遇到一個問題,就是在peer1和peer2一直不能彼此註冊成功,頁面表現就是服務instance為空並且available-replicas為空,對應的服務在unavailable-replicas中。後來經過多次實現和分析,終於發現,原來是在我的application.properties檔案中還保留著下面兩個配置,服務在啟動的時候是會讀取到這個配置的,

雖然這兩個配置預設是true,但是卻被application.properties覆蓋了,這個時候講這兩個配置註釋掉就好了。

如果在application-{profiles}.properties中再配置一遍就又可以覆蓋application.properties裡面的配置。

程式碼讀取順序是這樣的:

先讀取預設配置-->然後讀取application.properties-->讀取application-{profiles}.properties。

相關推薦

spring cloud 入門系列使用Eureka 搭建可用服務註冊中心

在上一篇中分享了如何使用Eureka 進行服務治理,裡面搭建的服務註冊中心是單體的, 但是在實際的應用中,分散式系統為了防止單體服務宕機帶來嚴重後果,一般都會採用伺服器叢集的形式,服務註冊中心也是一樣,需要多臺服務一起工作,組成高可用的服務註冊中心。這樣,如果有其中一臺宕機,系統也能正常執行。 那麼如何來

spring cloud 入門系列基於Git儲存的分散式配置中心--Spring Cloud Config

我們前面接觸到的spring cloud元件都是基於Netflix的元件進行實現的,這次我們來看下spring cloud 團隊自己建立的一個全新專案:Spring Cloud Config.它用來為分散式系統中的基礎設施和微服務提供集中化的外部配置支援,分為服務端和客戶端兩個部分。 其中服務端也稱為分散式

Spring Cloud | 第七篇 Eureka叢集可用的配置

       一直在網上查閱資料,配置高可用的叢集,看完了發現還是不明白,或者按照文章的內容一步一步去實現發現根本實現不了,真的很懷疑他們寫的時候是否真的自己測試過了還是大家都是轉發來轉發去的,自己弄了好久,發現沒有一個拿來就可以用的,並且裡面很多的東西也沒有講解清楚,於是打

Spring Cloud Eureka 4 (可用服務註冊中心)

自己 def port hello -c 圖片 sys img 效果 在微服務這樣的分布式環境中,我們需要充分考慮發生故障的情況,所以在生產環境中必須考慮對各個組件進行高可用部署,對於服務註冊中心也是一樣。 Eureka Server 的高可用實際上就是講自己作為服

Spring Cloud搭建可用服務註冊中心

1. 在服務註冊中心 (名稱eureka-server) 的工程中新增三個配置檔案application-peer1.properties  ,application-peer2.properties 

SpringCloud --Eureka叢集搭建(可用服務註冊中心)

Eureka是Spring Cloud框架裡的核心服務, 幾乎每個服務都依賴它。 所以要建立多個Eureka例項程序, 即使其中一個程序掛了, 註冊中心功能仍然正常執行。為了實現高可用,必須叢集   增加Eureka服務註冊中心配置檔案: application-pe

springcloud-eureka搭建可用服務註冊叢集

服務的註冊和發現可以說是微服務架構中最核心的地方,微服務的服務註冊中心有很多個,之前選了consul作為註冊中心,之所以選擇它是因為它有非常強大的功能,除了服務的註冊發現之外還支援KV儲存、具有多語言能力、支援多資料中心等等,後來發現這些都沒有什麼用,畢竟我們的服務是純Jav

spring cloud 入門系列使用Eureka 進行服務治理

服務治理可以說是微服務架構中最為核心和基礎的模組,它主要用來實現各個微服務例項的自動化註冊和發現。 Spring Cloud Eureka是Spring Cloud Netflix 微服務套件的一部分,主要負責完成微服務架構中的服務治理功能。 本文通過簡單的小例子來分享下如何通過Eureka進行服務治理:

Spring Cloud 入門教程() 配置自動刷新

入門 stc pro 解決方案 con log clas ring color 之前講的配置管理, 只有在應用啟動時會讀取到GIT的內容, 之後只要應用不重啟,GIT中文件的修改,應用無法感知, 即使重啟Config Server也不行。 比如上一單元(Spring Clo

spring cloud 入門系列使用Hystrix 實現斷路器進行服務容錯保護

關系 調用 說明 schema 技術 能力 BE 最終 響應 在微服務中,我們將系統拆分為很多個服務單元,各單元之間通過服務註冊和訂閱消費的方式進行相互依賴。但是如果有一些服務出現問題了會怎麽樣? 比如說有三個服務(ABC),A調用B,B調用C。由於網絡延遲或C本身代碼有

spring cloud 入門系列基於Git存儲的分布式配置中心--Spring Cloud Config

入門 代碼結構 dev eas TP scope ict AI 新項目 我們前面接觸到的spring cloud組件都是基於Netflix的組件進行實現的,這次我們來看下spring cloud 團隊自己創建的一個全新項目:Spring Cloud Config.它用來為分

spring cloud 入門系列使用Zuul 實現API閘道器服務

通過前面幾次的分享,我們瞭解了微服務架構的幾個核心設施,通過這些元件我們可以搭建簡單的微服務架構系統。比如通過Spring Cloud Eureka搭建高可用的服務註冊中心並實現服務的註冊和發現; 通過Spring Cloud Ribbon或Feign進行負載均衡;通過Spring Cloud Hyst

spring cloud 入門系列初識spring cloud

最近看到微服務很火,也是未來的趨勢, 所以就去學習下,在dubbo和spring cloud之間我選擇了從spring cloud,主要有如下幾種原因: dubbo主要專注於微服務中的一個環節--服務治理,像服務註冊和發現這種還需要zookeeper第三方的中間;但是spring cloud提供了微服

spring cloud 入門系列使用Feign 實現宣告式服務呼叫

一、Spring Cloud Feign概念引入通過前面的隨筆,我們瞭解如何通過Spring Cloud ribbon進行負責均衡,如何通過Spring Cloud Hystrix進行服務斷路保護,兩者作為基礎工具類框架應用在各種基礎設施類微服務和業務類微服務中,並且成對存在,那麼有沒有更高層的封裝,將兩者的

spring cloud 入門系列使用spring cloud sleuth整合zipkin進行服務鏈路追蹤

好久沒有寫部落格了,主要是最近有些忙,今天忙裡偷閒來一篇。 =======我是華麗的分割線========== 微服務架構是一種分散式架構,微服務系統按照業務劃分服務單元,一個微服務往往會有很多個服務單元,一個請求往往會有很多個單元參與,一旦請求出現異常,想要去定位問題點真心不容易,因此需要有個東西去跟蹤

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

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

Spring Cloud入門可用服務註冊中心

文章例項使用的Spring Cloud版本為Finchley.SR1,Spring Boot版本為2.0.4。 1 高可用服務註冊中心 上一節服務註冊與服務發現 中,我們嘗試了服務註冊中心的構建,但在微服務架構這樣的分散式環境中,我們需要充分考慮發生故障的情況,所以在生

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

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

Spring Cloud構建微服務架構(可用服務註冊中心

前言在Spring Cloud系列文章的開始,我們就介紹了服務註冊與發現,其中,主要演示瞭如何構建和啟動服務註冊中心Eureka Server,以及如何將服務註冊到Eureka Server中,但是在之前的示例中,這個服務註冊中心是單點的,顯然這並不適合應用於線上生產環境,那

Spring Cloud構建微服務架構(六)可用服務註冊中心

近期因工作原因減緩了更新頻率,同時為了把Spring Cloud中文社群搭建起來也費了不少時間,幾乎每天都在擠牙膏般的湊時間出來做一些有意義的事。未能按原計劃更新博文,在此對持續關注我部落格的朋友們深表歉意。 之前在寫spring Cloud系列文章的時候,列過一個較粗的計劃,現在由於收到不少反饋和問