7.spring cloud系列教程第六篇-Eureka集羣版
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服務。說明我們服務已經成功註冊到集羣中了。
查看訪問效果:
可以正常訪問。說明集羣搭建及服務註冊到集羣中成功。