7.spring cloud系列教程第六篇-Eureka集群版

2020-12-18 凱哥Java

spring cloud系列教程第六篇-Eureka集群版

本文主要內容:

1:Eureka執行步驟理解

2:集群原理

3:Eureka集群搭建

4:修改payment和order項目註冊到集群中

本文是由凱哥(凱哥Java:kagejava)發布的《spring cloud系列教程》教程的總第六篇:《spring cloud系列教程第六篇-Eureka集群版》。

本文是幾個維度中的第一個維度:註冊與發現維度配置中心管理之Eureka相關教程第三篇。

一:eureka註冊與發現步驟

服務註冊:將服務信息註冊到註冊中心

服務發現:從註冊中心上獲取到服務信息

其實質就是:key-value形式的。Key:服務的名字 value:服務調用地址

執行步驟:

1:先啟動eureka註冊中心

2:啟動服務提供者(我們這裡的服務提供者就是payment支付服務)

3:服務提供者在啟動後會把自身的信息(如服務地址,以別名方式註冊到)註冊到eureka中

4:消費者(我們這裡是order服務)在需要調用接口的時候,使用服務別名去註冊中心獲取到實際的RPC遠程調用地址

5:消費者獲取到調用地址後,底層實際是利用HttpClient技術實現遠程調用的

6:消費者獲得服務地址後會緩存在本地的JVM內存中,默認每隔30秒更新移除服務調用地址。

問題:微服務RPC遠程調用最核心的是什麼?

高可用。試想下,如果你的註冊中心有且僅有一個 only One.那麼,如果註冊中心故障了,那就呵呵了,會導致整個服務的不可用。後果可是很嚴重的。所以,解決辦法就是:搭建Eureka註冊中心集群。實現負載均衡+故障容錯(其實從上圖中也可以看出,eureka server是多個,provider也是多個)

二:Eureka集群原理:

互相註冊,相互守望

什麼意思呢?集群的話,肯定是多個。比如我們現在單臺的eureka埠是7001,假設還有一臺服務是7002.那麼7001的註冊地址應該是7002,7002的註冊地址是7001.這樣就相互註冊了。7001會每30s給7002同步一次心跳,同理7002也會的。所以就相互守望了。

簡單的示意圖如下:

三:Eureka集群搭建

3.1:新建cloud-eureka-server7002項目。作為第二臺eureka服務

3.2:修改pom.將7001的pom中相關依賴複製到7002中

3.3:修改hosts文件。添加兩個映射:

修改後的hosts:

3.4:修改yml文件。

在修改yml文件的時候,需要注意:現在是多臺eureka server。需要互相註冊和相互守望。這個的寫法和單機版的不一樣了。我們先來看看單機版yml配置文件。

單機版yml文件配置:

集群的時候,因為要互相註冊,相互守望。所以yml文件有些不同。

7001服務的yml不同地方:

7002的yml:

我們可以看到hostname和defaultZone不同了

配置完成之後,啟動7001和7002,訪問兩個連接查看有什麼不同

我們可以看到,DS Replicas的不同。

當我們訪問7001的時候,可以看到ds列表是eureka7002說明我們集群配置已建成成功了。

本文教程相關代碼版本號:v0.0.9-20200504

接下來,我們就要修改payment和order這兩個微服務,將這兩個微服務註冊到eureka集群中。歡迎大家和凱哥(凱哥Java:kaigejava)繼續一起學習。

四:將payment和order這兩個服務註冊到集群中

4.1:payment修改

只需要修改payment8001的yml文件中,和eureka相關的配置即可。

我們開看看單機版的時候配置:

Eureka.client.service-url.defaultZone是localhost的。如下圖:

進行修改:

Order80的修改一樣。

配置完成之後,啟動服務進行測試。

啟動順序:

先啟動註冊中心服務:eurekaSever 7001/7002服務

再啟動服務提供者:payment8001服務

訪問根據訂單id獲取連接,查看返回信息

查看7001上註冊的eureka客戶端:

查看7002上客戶端:

我們發現這兩個註冊中心都有order server和payment server服務。說明我們服務已經成功註冊到集群中了。

查看訪問效果:

可以正常訪問。說明集群搭建及服務註冊到集群中成功。

相關焦點

  • 從零搭建 Spring Cloud 服務(超詳細)
    每個教研組就是一個微服務集群。他們提供同樣的服務,而註冊中心Eureka就是這個存放這個教研組老師名單的地方,學生們想先訪問這個註冊中心獲取教師名單,然後根據相應的負載方法去訪問各自老師。不至於讓集群中某一老師累死也不至於讓某一老師閒死。
  • Spring Cloud 和 Dubbo,到底用哪個好?
    的接口協議約定比較自由且鬆散,需要有強有力的行政措施來限制接口無序升級dubbo的註冊中心可以選擇zk,redis等多種,springcloud的註冊中心只能用eureka或者自研但如果我選,我會用 Spring Cloud。
  • 擁抱Kubernetes,再見了Spring Cloud
    (2016年12月):升級到spring4.2,新的spring-boot-devtools,緩存技術的自動配置(ehcache,hazelcast,redis,guava和infinispan)以及完全可執行的jar支持Spring boot 1.4(2017年1月):升級到spring 4.3,couchbase/neo4j支持,啟動失敗分析和RestTemplateBuilderSpring
  • Spring全家桶、Dubbo、分布式、消息隊列後端必備全套開源項目
    Spring Boot 專欄基於 Spring Boot 2.X 版本的深度入門教程。市面上的 Spring Boot 基礎入門文章很多,但是深度入門文章卻很少。在帶你快速學會 MQ 消息的發送與消費的同時,我還想告訴你 MQ 還有集群消費、廣播消費、順序消息、定時消息、事務消息、消費重試等等特性。在帶你快速學會 Job 任務的編寫的同時,我還想告訴你還有 Quartz 單體、Quartz 集群、XXL-JOB 等等企業使用更多的調度平臺。
  • springcloud的五大組件是什麼?讀完這篇就懂了
    概括而言,springcloud的五大組件包括Netflix Eurek,Netflix Ribbon,Netflix Hystrix,Netflix Zuul和Spring Cloud Config。
  • 初識Spring Cloud Stream,什麼是消息驅動微服務框架
    spring cloud stream是一個構建與Spring Boot和Spring Integration之上的框架,方便開發人員快速構建基於Message-Driven的系統。Spring Cloud Stream官方提供了spring-cloud-stream-binder-kafka和spring-cloud-stream-binder-rabbit兩款主流消息中間件的Binder實現。並且還提供了專門用於測試的TestSupportBinder,開發者可以直接使用它來對通道的接收內容進行斷言測試。
  • SpringCloud架構開發實戰:實現服務負載均衡及高可用
    msa-weather-data-eureka:天氣數據API微服務。 .msa-weather-city-eureka:城市數據微服務。 而後我們分別在8081和8082上啟動了msa-weather-collection-cureka-feign'實例兩個,在8083和8084上啟動了msa-weather-data-eureka實例兩個,在8085和8086上啟動了msa-weather-city-eu-reka實例兩個,在8087和8088上啟動了msa-weather-report-eureka-feign
  • SpringCloud服務間通信方式
    總結:在springcloud中服務間調用方式主要是使用 http restful方式進行服務間調用1|0 1.說明spring框架提供的RestTemplate類可用於在應用中調用rest服務,它簡化了與http服務的通信方式,統一了RESTful的標準,封裝了http連結, 我們只需要傳入url及返回值類型即可。相較於之前常用的HttpClient,RestTemplate是一種更優雅的調用RESTful服務的方式。
  • Nacos Discovery和Eureka的區別
    默認每隔30秒eureka.instance.lease-renewal-interval-in-seconds 發送一次心跳來進行服務續約。3.獲取服務列表(get registry):服務消費者(Eureka Client)在啟動的時候,會發送一個REST請求給Eureka Server,獲取註冊中心的服務清單,並且緩存在客戶端本地。
  • 詳解SpringCloud中RabbitMQ消息隊列原理及配置,一篇就夠!
    rabbitmq已經被spring-boot做了整合訪問實現。spring cloud也對springboot做了整合邏輯。所以rabbitmq的依賴可以在spring cloud中直接使用。=direct-consumerserver.port=8083spring.rabbitmq.host=localhostspring.rabbitmq.port=5672spring.rabbitmq.username=testspring.rabbitmq.password
  • cloudflare最新使用教程,防止網站被攻擊
    cloudflare是國外最好的免費CDN,可以給網站使用dns,https和防火牆,可以有效的給網站做防護,防止網站被攻擊。今天,我就給大家說下cloudflare最新的使用教程。cloudflare使用教程對於cloudflare的使用教程,可以說,網上能找到很多。可是,我雖然看了好多教程,還是有好多不會的。
  • SpringBoot圖文教程「概念+案例 思維導圖」「基礎篇上」
    我向來是不憚以最多的無聊揣測這個假期的,但我沒想到……(不能再往下了,再往下真就算抄襲了)於是決定將自己的的畢生功力匯聚整理成冊,寫出《圖文教程》系列Java技術學習秘籍,本功法力求 『圖文並茂』 『簡單易懂』,概念和代碼實踐相結合,每個知識點輔助以自測面試題,希望大家通過本系列教程能夠快樂學Java,從練氣到飛升。
  • 基礎篇:Spring Boot入門體驗(圖文教程)
    公眾號(Java後端 )還發布過近百篇 Spring Boot 相關的文章,關注後後臺回復「666」獲取。Spring Boot 在應用中的角色Spring Boot 是基於 Spring Framework 來構建的,Spring Framework 是一種 J2EE 的框架(什麼是 J2EE?)
  • Spring Cloud系列各子項目在微服務架構中的作用分析
    Springcloud一般用於搭建微服務項目,那麼微服務項目是怎麼工作的呢?Springcloud的幾個子項目分別扮演什麼角色?Sentinel斷路器服務消費(遠程調用):Spring Cloud OpenFeign微服務之間一般需要互相調用,我們進行http調用時一般需要進行創建連接、處理響應信息、關閉連接等一系列繁瑣的處理
  • zuihou-admin-cloud 2.3 發布,完美支持分布式事務 - OSCHINA...
    今日更新日誌:優化: spring.cloud.version
  • IT之家學院:BT 下載利器 CloudTorrent 安裝教程詳解
    ,如果是arm架構的Chromebook可能要選擇cloud-torrent_linux_arm.gz版本。.gzgunzip cloud-torrent_linux_amd64.gzmv cloud-torrent_linux_amd64 /usr/local/bin/cloud-torrentchmod +x /usr/local/bin/cloud-torrent命令解釋:下載0.8.25的64位Linux版本CloudTorrent
  • 阿里大牛必備Spring系列文檔(實戰篇)
    最近小編整理了一份阿里大牛必備的Spring系列文檔:包括 Spring實戰,Spring Boot實戰、Spring Cloud實戰、Spring MVC實戰、Spring面試、Spring Boot面試、Spring Cloud面試、Spring MVC面試、Spring源碼
  • Spring Boot 快速入門教程(附詳細圖文)
    公眾號(Java後端 )還發布過近百篇 Spring  Boot 相關的文章,關注後後臺回復「666」獲取。Spring Boot 是基於 Spring Framework 來構建的,Spring Framework 是一種 J2EE 的框架(什麼是 J2EE?)