根據計劃好的學習目錄 第(一)篇, 在(二),(三)篇以後,本篇記錄Eureka的高可用spring
服務註冊中心是分佈式系統基礎部分,我的以爲理解基礎仍是很重要的服務器
服務器掛掉的事件很常見,你們都習慣了,重啓就行了,再掛再重啓唄app
沒有重啓解決不了的問題 --- 來自大網管的發言分佈式
做爲吃瓜羣衆表示不服,下面嘗試一下Eureka來解決這些問題ide
目前Eureka的server有一個,client也有一個學習
添加一個server B, 讓B與server互相註冊發現服務,互相交換信息,大箭頭是原來的模型,小箭頭是高可用的現實 ,若是server掛了,就可讓client去找server B,反之也同樣,讓服務不間斷測試
不用急着去複製項目,idea 打開eureka,註冊中心(server),url
點擊箭頭的編輯,進入啓動項編輯窗口idea
點擊上面圖片的小圖標,複製一份啓動,下面開始設置不一樣端口來啓動兩個eureka服務中心spa
+ 端口設置=8761 EurekaApplication A
而且改服務中心url 指向 8762 yml中設置,而後啓動,訪問localhost:8761
spring: application: name: my first eureka eureka: client: service-url: defaultZone: http://localhost:8762/eureka/ #此處再說明一次,本服務做爲client,引入url爲註冊中心地址 register-with-eureka: false server: enable-self-preservation: false
以前的client須要啓動,測試被發現.
+ 端口設置=8762 EurekaApplication B
而且改服務中心url 指向 8761 yml中設置,而後啓動,訪問localhost:8762
spring: application: name: my first eureka eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ register-with-eureka: false server: enable-self-preservation: false
8762同樣能夠發現 myclient 服務
client 修改yml文件的defaultZone, 以下: 向A,B都註冊,逗號分隔開url
spring: application: name: myclient eureka: client: service-url: defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
這時候,上面就能夠實現Eureka高可用,不用擔憂掛掉其中的一臺服務.崩掉了.
仍是要相信總會有奇蹟,若是兩臺都掛掉了,那咱們能夠多加個server,好比3個server的時候,相互之間的註冊方式,好比加了一個EurekaApplication C
client 方: 只須要在yml配置中的defaultZone: A,B,C 追加一個C的url便可
server A方 : 也在yml配置中的defaultZone: B,C 追加一個C的url便可
server B方 : 也在yml配置中的defaultZone: A,C 追加一個C的url便可
server C方 : 也在yml配置中的defaultZone: A,B 加上A,B的url便可
若是你們以爲3個或更多都發生了奇蹟,全掛了,不要緊,還有辦法並且很是簡單------重啓
註冊中心都是須要配置高可用,集羣方式,無論是否是使用Eureka仍是zookeeper,仍是其餘組件,保證中心不掛服務就能夠不間斷
以上大可能是操做實踐,熟悉套路,全部的設計構架也好,組件也好,都有着現實的例子,比方說這個註冊服務發現,就比如最近辦公樓下廣告小視頻,常常放的什麼沒有中間商賺差價,什麼什麼的,你們也應該都聽過,意會下就好.
------------------------------------------------------------------