1. 程式人生 > >spring cloud註冊中心Eureka

spring cloud註冊中心Eureka

Eureka是Netflix開源的一款提供服務註冊和發現的產品,它提供了完整的Service Registry和Service Discovery實現。也是springcloud體系中最重要最核心的元件之一。

背景介紹

服務中心

服務中心又稱註冊中心,管理各種服務功能包括服務的註冊、發現、熔斷、負載、降級等,比如dubbo admin後臺的各種功能。

有了服務中心呼叫關係會有什麼變化,畫幾個簡圖來幫忙理解

專案A呼叫專案B

正常呼叫專案A請求專案B

有了服務中心之後,任何一個服務都不能直接去掉用,都需要通過服務中心來呼叫

專案A呼叫專案B,專案B在呼叫專案C

這時候呼叫的步驟就會為兩步:第一步,專案A首先從服務中心請求專案B伺服器,然後專案B在從服務中心請求專案C服務。

上面的專案只是兩三個相互之間的簡單呼叫,但是如果專案超過20個30個呢,在15年底的時候我司分散式的專案就達到了二十幾個,畫一張圖來描述幾十個專案之間的相互呼叫關係全是線條,任何其中的一個專案改動,就會牽連好幾個專案跟著重啟,巨麻煩而且容易出錯。通過服務中心來獲取服務你不需要關注你呼叫的專案IP地址,由幾臺伺服器組成,每次直接去服務中心獲取可以使用的服務去呼叫既可。

由於各種服務都註冊到了服務中心,就有了去做很多高階功能條件。比如幾臺服務提供相同服務來做均衡負載;監控伺服器呼叫成功率來做熔斷,移除服務列表中的故障點;監控服務呼叫時間來對不同的伺服器設定不同的權重等等。

說Eureka之前我先八卦一下Netflix

Netflix

以下介紹來自於百度百科:

Netflix是一家美國公司,在美國、加拿大提供網際網路隨選流媒體播放,定製DVD、藍光光碟線上出租業務。該公司成立於1997年,總部位於加利福尼亞州洛斯蓋圖,1999年開始訂閱服務。2009年,該公司可提供多達10萬部DVD電影,並有1千萬的訂戶。2007年2月25日,Netflix宣佈已經售出第10億份DVD。HIS一份報告中表示,2011年Netflix網路電影銷量佔據美國使用者線上電影總銷量的45%。

我第一次看到這個單詞的時候,是在各種美劇或者電影的開頭,Netflix拍攝的代表性的美劇有《紙牌屋》、《毒梟》、《怪奇物語》。後來研究springcloud的時候發現了Netflix公司,就在想它們是不是同一家公司,經過核對github上面郵件字尾判定確實是同一家公司,其實springcloud的微服務就基於Netflix公司的開源產品來做的。

Netflix的開源框架元件已經在Netflix的大規模分散式微服務環境中經過多年的生產實戰驗證,正逐步被社群接受為構造微服務框架的標準組件。Spring Cloud開源產品,主要是基於對Netflix開源元件的進一步封裝,方便Spring開發人員構建微服務基礎框架。對於一些打算構建微服務框架體系的公司來說,充分利用或參考借鑑Netflix的開源微服務元件(或Spring Cloud),在此基礎上進行必要的企業定製,無疑是通向微服務架構的捷徑。

Eureka

按照官方介紹:

Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier servers.

Eureka 是一個基於 REST 的服務,主要在 AWS 雲中使用, 定位服務來進行中間層伺服器的負載均衡和故障轉移。

Spring Cloud 封裝了 Netflix 公司開發的 Eureka 模組來實現服務註冊和發現。Eureka 採用了 C-S 的設計架構。Eureka Server 作為服務註冊功能的伺服器,它是服務註冊中心。而系統中的其他微服務,使用 Eureka 的客戶端連線到 Eureka Server,並維持心跳連線。這樣系統的維護人員就可以通過 Eureka Server 來監控系統中各個微服務是否正常執行。Spring Cloud 的一些其他模組(比如Zuul)就可以通過 Eureka Server 來發現系統中的其他微服務,並執行相關的邏輯。

Eureka由兩個元件組成:Eureka伺服器和Eureka客戶端。Eureka伺服器用作服務註冊伺服器。Eureka客戶端是一個java客戶端,用來簡化與伺服器的互動、作為輪詢負載均衡器,並提供服務的故障切換支援。Netflix在其生產環境中使用的是另外的客戶端,它提供基於流量、資源利用率以及出錯狀態的加權負載均衡。

用一張圖來認識以下:

上圖簡要描述了Eureka的基本架構,由3個角色組成:

1、Eureka Server

  • 提供服務註冊和發現

2、Service Provider

  • 服務提供方

  • 將自身服務註冊到Eureka,從而使服務消費方能夠找到

3、Service Consumer

  • 服務消費方

  • 從Eureka獲取註冊服務列表,從而能夠消費服務

案例實踐

Eureka Server

spring cloud已經幫我實現了服務註冊中心,我們只需要很簡單的幾個步驟就可以完成。

1、pom中新增依賴

  1. <dependencies>

  2. <dependency>

  3. <groupId>org.springframework.cloud</groupId>

  4. <artifactId>spring-cloud-starter</artifactId>

  5. </dependency>

  6. <dependency>

  7. <groupId>org.springframework.cloud</groupId>

  8. <artifactId>spring-cloud-starter-eureka-server</artifactId>

  9. </dependency>

  10. <dependency>

  11. <groupId>org.springframework.boot</groupId>

  12. <artifactId>spring-boot-starter-test</artifactId>

  13. <scope>test</scope>

  14. </dependency>

  15. </dependencies>

2、新增啟動程式碼中新增 @EnableEurekaServer註解

  1. @SpringBootApplication

  2. @EnableEurekaServer

  3. publicclassSpringCloudEurekaApplication{

  4. publicstaticvoid main(String[] args){

  5. SpringApplication.run(SpringCloudEurekaApplication.class, args);

  6. }

  7. }

3、配置檔案

在預設設定下,該服務註冊中心也會將自己作為客戶端來嘗試註冊它自己,所以我們需要禁用它的客戶端註冊行為,在 application.properties新增以下配置:

  1. spring.application.name=spring-cloud-eureka

  2. server.port=8000

  3. eureka.client.register-with-eureka=false

  4. eureka.client.fetch-registry=false

  5. eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/

  • eureka.client.register-with-eureka :表示是否將自己註冊到Eureka Server,預設為true。

  • eureka.client.fetch-registry :表示是否從Eureka Server獲取註冊資訊,預設為true。

  • eureka.client.serviceUrl.defaultZone :設定與Eureka Server互動的地址,查詢服務和註冊服務都需要依賴這個地址。預設是http://localhost:8761/eureka ;多個地址可使用 , 分隔。

啟動工程後,訪問:http://localhost:8000/,可以看到下面的頁面,其中還沒有發現任何服務

叢集

註冊中心這麼關鍵的服務,如果是單點話,遇到故障就是毀滅性的。在一個分散式系統中,服務註冊中心是最重要的基礎部分,理應隨時處於可以提供服務的狀態。為了維持其可用性,使用叢集是很好的解決方案。Eureka通過互相註冊的方式來實現高可用的部署,所以我們只需要將Eureke Server配置其他可用的serviceUrl就能實現高可用部署。

雙節點註冊中心

首次我們嘗試一下雙節點的註冊中心的搭建。

1、建立application-peer1.properties,作為peer1服務中心的配置,並將serviceUrl指向peer2

  1. spring.application.name=spring-cloud-eureka

  2. server.port=8000

  3. eureka.instance.hostname=peer1

  4. eureka.client.serviceUrl.defaultZone=http://peer2:8001/eureka/

2、建立application-peer2.properties,作為peer2服務中心的配置,並將serviceUrl指向peer1

  1. spring.application.name=spring-cloud-eureka

  2. server.port=8001

  3. eureka.instance.hostname=peer2

  4. eureka.client.serviceUrl.defaultZone=http://peer1:8000/eureka/

3、host轉換

在hosts檔案中加入如下配置

  1. 127.0.0.1 peer1  

  2. 127.0.0.1 peer2  

4、打包啟動

依次執行下面命令

  1. #打包

  2. mvn clean package

  3. # 分別以peer1和peeer2 配置資訊啟動eureka

  4. 相關推薦

    Spring Cloud 註冊中心Eureka

    ont 允許 包括 enter 1.0 bbb oid pub try 一、簡介 最近在看Spring Cloud微服務,接下來的時間和大家一起分享我所看到的,公司現在用的是dubbo ,之後有時間也去了解了解dubbo的源碼。與dubbo相比較,Spring

    spring cloud註冊中心Eureka

    Eureka是Netflix開源的一款提供服務註冊和發現的產品,它提供了完整的Service Registry和Service Discovery實現。也是springcloud體系中最重要最核心的元件之一。背景介紹服務中心服務中心又稱註冊中心,管理各種服務功能包括服務的註冊

    Spring Cloud 註冊中心在tomcat中部署

    spring cloud 註冊中心在tomcat中部署前言最近剛剛接觸spring boot 和spring cloud,只知道可以直接通過main方法啟動服務,一直不會將項目部署到tomcat中,今天學了一下,做個記錄備忘.步驟pom文件在pom文件中引入spring-boot-starter-web,然後

    spring cloud - 註冊中心

    工程 開發 .org type 3.5 eas style 裏的 cloud 服務註冊與發現 這裏我們會用到Spring Cloud Netflix,該項目是Spring Cloud的子項目之一,主要內容是對Netflix公司一系列開源產品的包裝,它為Spring Boo

    spring cloud註冊中心,服務提供作者,服務消費者的一些區別

    Spring Cloud Eureka, 使用Netflix Eureka來實現服務註冊與發現。 Eureka服務端,我們也稱為服務註冊中心。   同其他服務註冊中心 一 樣,支援高可用配置。它依託於強 一 致性提供良好的服務例項可用性,可以應對多種不同的故障場景。如果E

    Spring Cloud Config 配置中心 從git獲取配置 (沒結合註冊中心 eureka

    配置中心的作用:1)集中管理公共配置   2)方便切換配置的版本  例如dev  test proted等 配置中心從git或者本地讀取配置,其它服務只要引入配置中心地址,配置好需要的"檔名"+"版本"即可 git裡的配置檔案 可以是 yml和prop

    Spring Cloud註冊中心Eureka

    大家如果覺得我寫的好,可以關注這個專案,之後我的學習過程中都會把學習筆記放入這個專案中。 https://github.com/IndustriousSnail/learning-notes Spring Cloud的註冊中心Eureka 目錄 一、Eureka基本概念

    第二章、spring cloud服務註冊中心eureka---服務提供與呼叫

    服務提供與呼叫 案例中有三個角色:服務註冊中心、服務提供者、服務消費者,其中服務註冊中心就是我們上一篇的eureka單機版啟動既可,流程是首先啟動註冊中心,服務提供者生產服務並註冊到服務中心中,消費者從服務中心中獲取服務並執行。 02eureka-pro

    第一章、spring cloud服務註冊中心eureka---概念

    註冊中心Eureka 背景介紹 服務中心 服務中心又稱註冊中心,管理各種服務功能包括服務的註冊、發現、熔斷、負載、降級等,比如dubbo admin後臺的各種功能。 有了服務中心呼叫關係會有什麼變化,畫幾個簡圖來幫忙理解 專案A呼叫專案B 正常呼叫專案A請求專案B

    2.spring cloud服務註冊中心eureka server---新增Hystrix Dashboard(第四章)

    Hystrix Dashboard 我們在熔斷示例專案spring-cloud-consumer-hystrix的基礎上更改,重新命名為:spring-cloud-consumer-hystrix-dashboard。 1、新增依賴 org.springframework.boot 版本 :

    1.spring cloud服務註冊中心eureka server---新增Security使用者認證(第四章)

    為服務註冊中心eureka server—新增Security使用者認證 在spring-cloud-eureka服務註冊中心專案的基礎上增加使用者認證。 1、新增依賴 <dependency> <groupId>org.springframew

    3、spring cloud服務註冊中心eureka---基於feign的負載均衡(第二章)

    基於feign的負載均衡 spring-cloud-producer-one修改,將其中的controller改動如下: @RestController public class HelloController { @RequestMapping("/hello")

    2、spring cloud服務註冊中心eureka---服務消費者(第二章)

    服務呼叫 1、pom包配置 和服務提供者一致 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww

    1、spring cloud服務註冊中心eureka---服務提供者(第二章)

    服務提供 我們假設服務提供者有一個hello方法,可以根據傳入的引數,提供輸出“hello xxx,this is first messge”的服務 1、pom包配置 建立一個springboot專案,pom.xml中新增如下配置: <?xml version="1.0"

    3、spring cloud服務註冊中心eureka---叢集配置(第一章)

    eureka叢集配置 在生產中我們可能需要三臺或者大於三臺的註冊中心來保證服務的穩定性,配置的原理其實都一樣,將註冊中心分別指向其它的註冊中心。這裡只介紹三臺叢集的配置情況,其實和雙節點的註冊中心類似,每臺註冊中心分別又指向其它兩個節點即可,使用application.yml來配置。

    2、spring cloud服務註冊中心eureka—雙節點配置(第一章)

    叢集 註冊中心這麼關鍵的服務,如果是單點話,遇到故障就是毀滅性的。在一個分散式系統中,服務註冊中心是最重要的基礎部分,理應隨時處於可以提供服務的狀態。為了維持其可用性,使用叢集是很好的解決方案。Eureka通過互相註冊的方式來實現高可用的部署,所以我們只需要將Eureke Server配

    1、spring cloud服務註冊中心eureka---單節點配置(第一章)

    Eureka Server—單節點配置 spring cloud已經幫我實現了服務註冊中心,我們只需要很簡單的幾個步驟就可以完成。 1、pom中新增依賴 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=

    Spring Cloud註冊中心Eureka(02)

    Eureka是Netflix開源的一款提供服務註冊和發現的產品,它提供了完整的Service Registry和Service Discovery實現。也是springcloud體系中最重要最核心的元件之一。   背景介紹 服務中心 服務中心又稱註冊中心,管理各種服務功能包

    spring cloud 入門(二)【 客戶端往註冊中心Eureka 註冊服務】

    客戶端 往Eureka 註冊服務,註冊成功之後,其他的服務,才可以對本服務進行呼叫 程式碼結構如下:   UserApplication 程式碼如下: package com.study.user; import org.springframework.boot.

    Spring Cloud與微服務之註冊中心Eureka

    文章目錄 Eureka Eureka Service Eureka Client 微服務註冊與發現 Eureka註冊中心原始碼 springcloud-eureka註冊中心 spring