1. 程式人生 > >springcloud微服務二:Eureka服務治理之服務註冊中心

springcloud微服務二:Eureka服務治理之服務註冊中心

當初步的學習了spring boot,瞭解了spring boot的基本實現過程後,我就正式開始學習spring cloud,首先就從Eureka服務治理開始。

服務治理包含三個核心的角色:服務註冊中心、服務提供者和服務消費者,他們相對獨立,新的服務要向服務註冊中心註冊,新的消費者會向服務註冊中心索引服務列表。

一番瞭解之後,讓我想到了人才招聘。在我看來,現在普遍存在的招聘形式也是分為了三個部分:招聘網站或者人才市場、釋出招聘需求的企業、需要找工作的人。當然了,也可以把企業和人換一下位置,那就是:招聘網站或者人才市場、找工作的人釋出的簡歷、需要招聘的企業。

那麼這裡的招聘網站或者人才市場就如同Eureka服務治理中的服務註冊中心,不管是企業的招聘需求還是人的簡歷,都可以看做一種需求的同時看成一種服務。當有了一個這種新的服務或者需求後會釋出在網站上或者人才市場,實際上就相當於Eureka服務治理中,新的服務通知註冊到服務註冊中心。而我們企業查詢相關簡歷,或者找工作的人查詢相關的招聘需求,就是客戶端向註冊中心索引服務。

在這個過程中,招聘網站、企業和找工作的人是各自獨立的,由招聘網站把企業和人聯絡起來,前提就是企業和人知道網站的地址,這就如同在Eureka服務治理的服務提供者和服務消費者的application.properties檔案中配置eureka.client.serviceUrl.defaultZone來指定服務註冊中心。

有了一點簡單的理解之後,就是實際的專案構建,首先需要構建一個基礎的spring boot專案作為服務註冊中心,勾選web選項,這樣會建立一個上一篇結構的專案。然後在pom.xml檔案中加入Eureka的以來配置:

<dependency>
    <groupId
>
org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>

以及如下的dependencyManagement,指定spring cloud的版本:

<dependencyManagement>
        <dependencies>
            <dependency>
               <groupId
>
org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Brixton.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>

這裡需要注意的是,spring cloud的版本號是以英國倫敦地鐵站的名字命名的,按首字母A-Z的順序排,不同的spring cloud版本相對應的spring boot的版本是有限制的,否則無法使用。
具體的對應需要參考官網說明,目前比較新的spring boot版本是1.5.2,而對應的spring cloud的版本是Dalston,我這裡例子中用的是1.3.8的spring boot,因此spring cloud版本是Brixton。

配置好依賴之後,下一步就是在建立專案時自動生成的那個類中加入@EnableEurekaServer註解,來啟動一個服務註冊中心,如下:

@EnableEurekaServer
@SpringBootApplication
public class EurekaServer1Application {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServer1Application.class, args);
    }
}

然後便是在基本的配置檔案application.properties中進行一些必要的配置:

#應用名,服務名,如果不指定就是unkown
spring.application.name=eureka-server
#服務埠,實際上就是tomcat埠,瀏覽器訪問或者其他地方呼叫時需要用的埠
server.port=1000
#例項的主機名
eureka.instance.hostname=server1
#設定是否向註冊中心註冊,預設是true
eureka.client.register-with-eureka=false
#是否需要去檢索尋找服務,預設是true
eureka.client.fetch-registry=false
#指定註冊中心
eureka.client.serviceUrl.defaultZone=http://server1:1000/eureka/

就這樣,一個簡單的Eureka服務註冊中心就完成了,除了引入依賴包的配置、properties的基本配置外,就是在程式碼中加了一個@EnableEurekaServer,非常的簡單。
然後瀏覽其訪問localhost:1000或者server1:1000(這裡使用主機名需要配置ip和主機的對映)就可以看到如下介面:
這裡寫圖片描述

如果有新的服務註冊到服務註冊中心,那麼在上圖中紅框標註的地方就會有所顯示,就比如如果我修改application.properties檔案,去掉這一段配置:

#設定是否向註冊中心註冊,預設是true
eureka.client.register-with-eureka=false
#是否需要去檢索尋找服務,預設是true
eureka.client.fetch-registry=false

那麼該服務註冊中心就會把自己也當做一個服務註冊到這個註冊中心中,那麼就會如下圖所示:
這裡寫圖片描述

上邊所實現的是單機版的服務註冊中心,而微服務架構的九大特徵之一就是高可用性,也就是需要註冊中心從單機模式變為叢集模式,使其中某個註冊中心出現故障的情況下不影響整個業務系統的執行。
在spring cloud中,這個實現過程就十分的簡單,簡單到我們只需要在上述的過程中僅僅做一個很小的配置修改就可以了。
一是去掉eureka.client.register-with-eureka=false和eureka.client.fetch-registry=false的配置,使得註冊中心可以自己把自己註冊為服務,二是在指定註冊中心的時候指定所有的註冊中心,三是修改埠和主機例項名,修改後的配置如下:

spring.application.name=eureka-server
server.port=1000
eureka.instance.hostname=server1
eureka.client.serviceUrl.defaultZone=http://server1:1000/eureka/,http://server2:2000/eureka/

同樣的,我們需要在另一個註冊中心中把配置檔案改為類似下邊的樣子:

spring.application.name=eureka-server
server.port=2000
eureka.instance.hostname=server2
eureka.client.serviceUrl.defaultZone=http://server1:1000/eureka/,http://server2:2000/eureka/

然後我們啟動其中一個註冊中心後再訪問各自的頁面,會看到如下所示:
這裡寫圖片描述

這時候會看到我們的服務註冊中心已經成為了叢集模式,但是server2是unavailable的,並不可用,而當我們把另一個註冊中心server2啟動後,就會看到有些內容有了變化,server2也是可用的了,同樣的,如果訪問server2的頁面,會看到這裡列出server1的狀態。
這裡寫圖片描述

正常情況來說,兩個註冊中心是應該在不同的伺服器中執行的,這樣才能更好的實現高可用,所以就是兩套程式碼。
但是在學習的過程中由於環境的限制,也為了方便,實際上就可以用一套程式碼,然後弄兩個分別代表server1和server2的配置檔案就可以了,檔案命名需要遵循spring boot的約定規則,然後再application.properties檔案中使用spring.profiles.active屬性來指定執行的時候需要具體啟用的篇配置就可以了,如圖:
這裡寫圖片描述

相關推薦

springcloud服務Eureka服務治理服務註冊中心

當初步的學習了spring boot,瞭解了spring boot的基本實現過程後,我就正式開始學習spring cloud,首先就從Eureka服務治理開始。 服務治理包含三個核心的角色:服務註冊中心、服務提供者和服務消費者,他們相對獨立,新的服務要向服務註

Spring Cloud系列(三)Eureka原始碼解析服務

一、自動裝配   1、根據自動裝配原理(詳見:Spring Boot系列(二):Spring Boot自動裝配原理解析),找到spring-cloud-starter-netflix-eureka-server.jar的spring.factories,檢視spring.factories如下:   2、進

springcloud學習筆記服務提供、消費與ribbon

在學習筆記一里,我們簡單實現了一個註冊中心,我們就可以在上面進行服務的註冊與訂閱消費。 編寫服務,進行註冊 同樣,我們可以在STS中右鍵New->Spring Starter Project ,填寫相應內容->點選next 選擇需要的依賴包,我們這裡由於是構建一個服務提供

springcloud學習筆記一eureka服務註冊與發現

springcloud可以方便的幫我們完成微服務架構,它擁有多個子專案,可以去官網簡單看下介紹。 其中component下的代表著現有的子專案,本次所記錄的eureka就是其中spring-cloud-netflix裡的一個模組。 eureka在我們微服務架構中實現的就是服務發現與

Java B2B2C o2o多使用者商城 springcloud架構(Eureka服務註冊服務發現基礎篇)

一:Eureka簡介    Eureka是Spring Cloud Netflix的一個子模組,也是核心模組之一。用於雲端服務發現,一個基於REST的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。 服務註冊與發現對於微服務系統來說非常重要。有了服務發現與註冊,你

Spring Cloud()Eureka服務註冊與發現

   搭建Maven專案: 一:建立父工程:cloud-demo pom檔案如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4

Spring Cloud 服務API網關spring cloud zuul

stat 修改配置文件 consul pos port end title debug dep 前言:本章將繼續上一章Spring Cloud微服務,本章主要內容是API 網關,相關代碼將延續上一章,如需了解請參考:Spring Cloud 微服務一:Consul註冊中心

springcloud服務架構搭建註冊中心Eureka註冊中心的互相註冊

前言    springboot作為當下最流行的微服務框架,並且提供了程式碼的執行環境。然而springcloud是一套微服務管理框架,提供了服務的註冊與發現,負載均衡等元件。這兩個框架結合起來會很容易開發出一套微服務系統。    註冊中心的互相發現可以有效的解決當一個註冊中

.NET Core服務Ocelot API閘道器

.NET Core微服務一:Consul服務中心 .NET Core微服務二:Ocelot API閘道器 .NET Core微服務三:polly熔斷與降級   本文的專案程式碼,在文章結尾處可以下載。 本文使用的環境:Windows10 64位 + VS 2019 + .NET Core

Spring Cloud官方文檔中文版-服務發現Eureka客戶端

auth locate inter attr context 本地緩存 數據集 god ati 官方文檔地址為:http://cloud.spring.io/spring-cloud-static/Brixton.SR7/#_spring_cloud_netflix 文中例

Spring Cloud官方文檔中文版-服務發現Eureka服務

show hub script trying 不同 clu ask local code 官方文檔地址為:http://cloud.spring.io/spring-cloud-static/Dalston.SR3/#spring-cloud-eureka-server 文

《Spring Cloud Netflix官方文件》2. 服務發現Eureka伺服器

原文連結 譯者:Acamy 2. 服務發現:Eureka伺服器 2.1 如何建立Eureka伺服器 引用org.springframework.cloud的spring-cloud-starter-eureka-server就可以建立Eureka伺服器。在當前Spring Cloud版本中如何

《Spring Cloud Netflix官方文件》1.服務發現Eureka客戶端

原文連結 譯者:Acamy 1.     服務發現:Eureka客戶端 服務發現是微服務架構的關鍵原則之一。使用手動配置或一些約定方式來處理多服務多例項的方式是非常困難,並且十分脆弱的。Eureka同時是Netflix服務發現的服務端和客戶端。服務端可以通過配置和部署實現高可用,實現方式是每個

.NET windows服務(建立和解除安裝windows服務)

引用地址: https://docs.microsoft.com/zh-cn/dotnet/framework/windows-services/how-to-create-windows-services   手動安裝你的服務 在 Windows“啟動”選單或“啟動”螢幕上,依次選

.NET windows服務(創建和卸載windows服務)

ini project -m exe 系統 啟動 version 調用 pro 引用地址: https://docs.microsoft.com/zh-cn/dotnet/framework/windows-services/how-to-create-windows-se

小白日記12kali滲透測試服務掃描()-SMB掃描

SMB掃描 Server Message Block 協議。與其他標準的TCP/IP協議不同,SMB協議是一種複雜的協議,因為隨著Windows計算機的開發,越來越多的功能被加入到協議中去了,很難區分哪些概念和功能應該屬於Windows作業系統本身,哪些概念應該屬於SMB

springCloud(5)Eureka的元數據與Eureka Server的rest端點

springcloud eureka的元數據 eureka server的rest端點 一、Eureka的元數據1.1、簡介Eureka的元數據有兩種:標準元數據和自定義元數據。標準元數據指的是主機名、IP地址、端口號、狀態頁和健康檢查等信息,這些信息都會被發布在服務註冊表中,用於服務之間的調用。

springcloud+springboot(十)使用Spring Cloud Sleuth和Zipkin進行分散式鏈路跟蹤

Spring Cloud Sleuth 一般的,一個分散式服務跟蹤系統,主要有三部分:資料收集、資料儲存和資料展示。根據系統大小不同,每一部分的結構又有一定變化。譬如,對於大規模分散式系統,資料儲存可分為實時資料和全量資料兩部分,實時資料用於故障排查(troubleshooting),全量資料用於系統優化

eureka原始碼解讀服務

剖析eureka服務端啟動流程 服務端啟動類-入口處 @EnableEurekaServer @SpringBootApplication public class EurekaServerApplication { public static void main(Strin

服務極光推送單人推送

公司業務需要,需要將符合某一條件的資訊推送到他的手機上。之前沒有做過,在網上找了很多文章已經部落格,感覺大部分都是一樣的(官網上down下來的?),沒有看明白。下面是個很小的程式碼: package test; import cn.jiguang.common.resp.A