Spring-Cloud Eureka注冊中心實(shí)現(xiàn)高可用搭建
前言:
spring-cloud為基礎(chǔ)的微服務(wù)架構(gòu),所有的微服務(wù)都需要注冊到注冊中心,如果這個注冊中心阻塞或者崩了,那么整個系統(tǒng)都無法繼續(xù)正常提供服務(wù),所以,這里就需要對注冊中心進(jìn)行集群,換言之,高可用(HA)
前提:
閱讀并完成第一個注冊中心的項目,環(huán)境無需改變。本文是 模擬的高可用 , 可以復(fù)制兩個注冊中心的項目單獨(dú)修改各自的配置文件達(dá)到同樣的效果
修改hosts,在文件末添加兩行如下:
127.0.0.1 peer1 127.0.0.1 peer2
推薦使用notepad++,如果是win10會提醒提權(quán)限,確定,然后保存即可。
項目搭建:
打開注冊中心的項目,在src/resources下創(chuàng)建一個application-peer1.properties
#應(yīng)用名 spring.application.name=eureka-server #提供服務(wù)端口1111 server.port=1111 #提供服務(wù)的域名,這里在hosts文件中修改了 eureka.instance.hostname=peer1 #向第二個注冊中心注冊自己 eureka.client.service-url.defaultZone=http://peer2:1112/eureka/
在src/resources下創(chuàng)建一個application-peer2.properties
#應(yīng)用名稱與第一個注冊中心一樣 spring.application.name=eureka-server #提供服務(wù)端口1112 server.port=1112 #提供服務(wù)的域名,這里在hosts文件中修改了 eureka.instance.hostname=peer2 #向第一個注冊中心注冊自己 eureka.client.service-url.defaultZone=http://peer1:1111/eureka/
本文使用idea進(jìn)行測試,首先需要對這個項目進(jìn)行打成jar包,因為在pom.xml中已經(jīng)引入了maven編譯工具和打包工具并指定打包格式為jar包,這里直接操作,屏幕右上方
打包完成,該jar包位于target文件夾下,如圖
如圖打開terminal,屏幕下方
打開terminal之后,因為jar包在target目錄下,而當(dāng)前目錄為項目目錄,所以先cd到target目錄下,然后輸入如下命令:
小技巧:輸入命令的時候為了防止輸錯文件名,可以輸入文件名的前幾個字母,然后使用tab鍵進(jìn)行自動補(bǔ)全
輸入完成此命令后,peer1配置文件的項目啟動,如圖
接下來我們啟動第二個項目,這里需要另開一個terminal,cd到target目錄
注意:我們這里用的是同一個項目,讀者可以使用兩個項目進(jìn)行測試,需要特別注意的是端口不要沖突了
等待項目啟動完成,查看有無報錯。
測試:
瀏覽器輸入:localhost:1112進(jìn)行查看,也可以輸入localhost:1111進(jìn)行查看
結(jié)語:
在設(shè)置了多節(jié)點(diǎn)的注冊中心后,實(shí)現(xiàn)了高可用,但是此時我們的微服務(wù)應(yīng)用僅僅是注冊到這一個服務(wù)之中,所以,我們需要將新節(jié)點(diǎn)的注冊服務(wù)路徑同樣配到微服務(wù)應(yīng)用中。
多節(jié)點(diǎn)間使用","分開,如圖
這樣微服務(wù)提供者從其中一個地方斷開之后,因為在其他節(jié)點(diǎn)有注冊,所以還可以提供服務(wù),如果不想使用主機(jī)名進(jìn)行訪問注冊中心,也可以使用ip,但是需要先添加一條配置,該值默認(rèn)false
eureka.instance.prefer-ip-address=true
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springboot整合cxf發(fā)布webservice以及調(diào)用的方法
這篇文章主要介紹了springboot整合cxf發(fā)布webservice以及調(diào)用的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08Java多線程之scheduledThreadPool的方法解析
這篇文章主要介紹了Java多線程之scheduledThreadPool的方法解析,queue是DelayedWorkQueue,但通過后面的分析可以知道,最大線程數(shù)是不起作用的,最多會起核心線程數(shù)的數(shù)量,需要的朋友可以參考下2023-12-12