springCloud Finchley 實戰入門(基于springBoot 2.0.3)【三 Eureka-高可用服務注冊中心】...

Eureka高可用注冊中心

Eureka Server的設計一開始就考慮到了高可用的問題,在eureka服務治理設計中,所有的節點即是是服務提供方,也是服務消費方。

在部署高可用注冊中心前我們先需要準備一下,本地環境。因為我們實例是在單臺電腦上的,所以需要模擬墮胎服務器,我們需要修改一下本機的host文件。
windows的host文件在C:\Windows\System32\drivers\etc\hosts
在host文件后面加上

127.0.0.1 peer1
127.0.0.1 peer2

修改完成,我們就來嘗試搭建高可用的服務注冊中心集群。接著上一章的服務中心的基礎上面擴展,來構建一個雙節點服務注冊中心集群。

在resource目錄下面:
創建application-peer1.yml配置文件,作為peer1服務中心的配置,并將serviceId指向peer2.

server:port: 8762
spring:application:name: service-register
eureka:instance:prefer-ip-address: falsehostname: peer1client:fetch-registry: trueregister-with-eureka: trueserviceUrl:defaultZone: http://peer2:8763/eureka/server:wait-time-in-ms-when-sync-empty: 0

創建application-peer2.yml配置文件,作為peer2服務中心的配置,并將serviceId指向peer1.

server:port: 8763
spring:application:name: service-register
eureka:instance:prefer-ip-address: falsehostname: peer2client:fetch-registry: trueregister-with-eureka: trueserviceUrl:defaultZone: http://peer1:8762/eureka/server:wait-time-in-ms-when-sync-empty: 0

接下來通過spring.profiles.active屬性來分別啟動peer1和peer2.
我啟動的做法是不在idea里啟動,而是把服務注冊中心打包,通過cmd啟動。
maven打包


img_e9c6d5d7bef5a5fa064aeb1da91c3b87.png
15324251491.jpg

然后通過cmd命令分別啟動服務
[圖片上傳中...(15324253911.jpg-db47b5-1532490920148-0)]


img_f19773cff9b7f8364bc3a4bec0424342.png
15324254351.jpg

java -jar eureka-register-center-0.0.1-SNAPSHOT.jar --spring.profiles.active

img_6ba5a6eeaa5da3ed18ae0f6e5ac3a3c0.png
15324253911.jpg

java -jar eureka-register-center-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

兩個服務啟動后,我們訪問一下http://localhost:8762/或者http://localhost:8763/

img_9cd763114c7ecad679d0a661903a0d4a.png
15324255261.jpg

這里可以看到兩個注冊中心部署相互注冊成功了。

關閉其中一個服務我們可以看到對應的節點變成不可用了。


img_1a09860744b4f032cf6eb34b5c57bc7b.png
15324256591.jpg

設置多個服務注冊中心后,服務提供者還需要做一些簡單的配置才能將服務注冊到Eureka server集群中。

在這里我們按照前面的做法,重新新建一個服務提供者module,命名為"eureka-bussniss-service-user"當作是我們平時項目中用戶服務模塊,專門處理用戶相關服務的。
因為目前服務注冊中心是多個的,所以我們在服務提供者的配置文件上還需要做一些配置。
添加下面的屬性,表示把服務注冊到指定的注冊中心,注冊中心地址用逗號隔開;

eureka.client.serviceUrl.defaultZone=http://peer1:8762/eureka/,http://peer2:8763/eureka/

完整的application.yml配置如下:

spring:application:name: service-user
server:port: 8802
eureka:client:serviceUrl:defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka/

記得主類添加@EnableEurekaClient注解,然后在確保服務注冊中心正常的情況下,啟動該項目。如果項目沒有報錯那就說明我們的配置應該是正常的。打開http://localhost:8763/或者http://localhost:8762/我們可以看到service-user已經同時注冊到了服務注冊中心。

img_e645bdf435fc0e173984201e3c0aa9f3.png
15324796051.jpg

此時若斷開peer1服務,由于service-user服務也向peer2注冊,因此peer2上面的其他服務依然能夠訪問到service-user。從而實現了注冊中心的高可用。

項目的源碼

服務提供者已經完成了,下一篇我們將會實現服務消費者,以及使用ribbon實現負載均衡。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254004.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254004.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254004.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring 讀取配置文件(二)

Spring 讀取配置文件并調用 bean package cn.com.test.receive;import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class…

DaVinci的Buffer_Handle和BufTab Cmem函數調用

DaVinci的dvsdk里面,所有的內存用的都是CMEM,而比較上層的一個封裝就是BufTab和Buffer_Handle了 每個Tab可以控制好多塊內存塊。 具體到內存塊有兩種,一種是創建的時候指定他的大小啊,物理地址啥的。另外一種就是僅僅創建出這個 …

Qt使用兩組RadioButton,兩組之間相互獨立

Qt中使用兩組共四個RadioButton時,由于RadioButton的特性,所以兩組一共四個按鈕每次只能選擇一個,要使得兩組RadioButton相互獨立,需要用到QButtonGroup這個功能,把RadioButton加到QButtonGroup里面,實現兩…

sleep 和 wait 的區別

為什么80%的碼農都做不了架構師?>>> 面試中常問的就是 sleep 和 wait 有什么不同嗎?為了面試時候發揮的更好,我在這里總結分享下。 首先對于 sleep() 方法,我們首先要知道該方法是屬于 Thread 類中的。而 wait() 方法…

2016年11月13日周工作知識點總結

jQuery :eq() 選擇器選取帶有指定 index 值的元素。index 值從 0 開始,所有第一個元素的 index 值是 0(不是 1)。經常與其他元素/選擇器一起使用,來選擇指定的組中特定序號的元素(如下面的例子)。$("p…

DM6467之視頻采集(Linux)下MMAP

做dsp6467是在linux下做視頻采集,僅ARM端 一共有三種視頻采集方式: 1)使用read、write方式:直接使用 read 和 write 函數進行讀寫。這種方式最簡…

QPS、TPS計算

QPS (Query per second) (每秒查詢量) TPS(Transaction per second) (每秒事務量,如果是InnoDB會顯示,沒有InnoDB就不會顯示) 計算方法 QPS Questions SHOW GLOBAL STATUS LIKE Questions; Uptime SHOW G…

QT 中textEdit 和 textBrowser 無法使用斜體及加粗等 解決辦法

編輯框的幾個種類 QT 中一共四個文本編輯框 分別是 Line Edit 、Text Edit、 Plait Text Edit和textBrowser四種文本編輯框架! 一、輸入內容不同 1、LineEdit:LineEdit的輸入內容為單行文本輸入。 2、TextEdit:TextEdit的輸入內容為多行文…

【select模塊】select IO多路復用和select實現FTP

select是全平臺通用的IO多路復用模塊。最大連接數:1024。poll和epoll沒有最大連接數限制,但只能用在linux平臺。selectors是再封裝模塊,推薦使用。下篇會討論。select.select(rlist, wlist, xlist[, timeout])This is a straightforward inte…

變量屬性

變量屬性 C語言的變量屬性 C語言中的變量可以有自己的屬性在定義變量的時候加上“屬性”關鍵字屬性關鍵字指明變量的特有意義auto關鍵字 auto即C語言中局部變量的默認屬性auto表明將被修飾的變量存儲在棧上編譯器默認所有的局部變量都是auto的register關鍵字 register關鍵字指明…

WPF:How to display a Bitmap on Image control

一個Bitmap文件,叫做screenShotFile, 你可以這樣顯示到Image控件上。 BitmapImage bi new BitmapImage(); bi.BeginInit(); bi.UriSource new Uri(this.screenShotFile, UriKind.Absolute); bi.EndInit(); this.scre…

QT中$$PWD的意思

$$PWD的意思為當前目錄 如pro文件中:INCLUDEPATH $$PWD/lib/x64-win64 $$PWD表示的意思就是pro文件所在的目錄。

Dubbo 整合 Pinpoint 做分布式服務請求跟蹤

2019獨角獸企業重金招聘Python工程師標準>>> 在使用Dubbo進行服務化或者整合應用后,假設某個服務后臺日志顯示有異常,這個服務又被多個應用調用的情況下,我們通常很難判斷是哪個應用調用的,問題的起因是什么&#xff0…

Linux 進程詳解

Linux內核的七大區間 1.進程管理(進程創建,進程的三種狀態,進程間的調度,調度算法...) 2.內存管理(段式管理(Linux所有段都從0開始),頁式管理--地址偏移量) 3…

C#2.0 委托

委托 委托是一個非常不錯的設計,允許我們把方法做為參數傳遞,實現了開放閉放原則。在方法中我們只要有一個委托占位,調用者就可以傳入符合簽名的方法來做不同的操作,這也面向對象開發中多態的魅力。 但是在C#1.0的時候&#xff…

qt亂碼Could not decode“xxx.cpp“ with “UTF-8“-encoding.Editing not possible問題處理

問題描述:如題: 解決方法: 1、點擊Select Encoding按鈕 2、選擇按照系統編碼 3、選中System后點擊按編碼重新載入 4、問題解決

bootargs中的環境變量說明和一些常用的uboot命令

bootargs中的環境變量說明和一些常用的uboot命令 一些常見的uboot命令: Help [command]在屏幕上打印命令的說明 Boom [addr]啟動在內存儲器的內核 Tftpboot通過tftp啟動內核 Saveenv保存環境變量 setenv name [value] 設置環境變量 bootargs中的環境變量 co…

特斯拉自動駕駛系統秘密,來自特斯拉AI總監爆料

據外媒報道,特斯拉汽車公司人工智能(AI)總監安德烈卡帕西(Andrej Karpathy)日前參加2018年TRAIN AI大會時,剖析了該公司構建自動駕駛儀(Autopilot)計算機視覺解決方案的方法。據介紹,Autopilot編…

快捷鍵匯總

navicat 運行選中代碼 ctrshiftr navicat 運行所有代碼 ctrr 快速顯示桌面 wind 轉載于:https://www.cnblogs.com/caer/p/6064571.html

js做倒計時

var dinshiqi setInterval(timerun,1000) function timerun(){ //timegundong var now_time new Date(); var hours now_time.getHours(); //時 var minutes now_time.getMinutes(); //分 var seconds now_time.getSeconds(); //秒 //秒鐘 show_seconds 59 - parseInt(s…