1. 創(chuàng)建一個Eureka-server服務(wù)瘾敢,用于注冊服務(wù)
選取需要的依賴,注意選擇spring boot為1.5.XX的尿这,2.0還不穩(wěn)定簇抵,估計玩的轉(zhuǎn)的人不多:
2.?修改配置文件application.yml或者application.yaml
? 至于為什么使用application.yaml或appliation.yml而不是用application.properties呢,主要有連個原因:一是application.properties的后綴名太長了射众,不方便記憶碟摆;二是application.properties配置中文值的時候,讀取出來的屬性值會出現(xiàn)亂碼問題叨橱。但是 application.yml 不會出現(xiàn)亂碼問題典蜕。原因是,Spring Boot 是以 iso-8859 的編碼方式讀取 application.properties 配置文件罗洗。
注意這里還有個坑:
如果定義一個鍵值對 user.name=xxx ,這里會讀取不到對應(yīng)寫的屬性值愉舔。為什么呢?SpringBoot 的默認(rèn) StandardEnvironment 首先將會加載 “systemEnvironment" 作為首個PropertySource.而 source 即為System.getProperties().當(dāng) getProperty時,按照讀取順序,返回 “systemEnvironment" 的值伙菜,也就是你電腦的名字轩缤,在這兒:
另外說一句,idea自帶的yaml插件未必有效,如果無效火的,請自己下載并導(dǎo)入到idea壶愤,圖中第二個就是我自己安裝的:
切回正題,因為是微服務(wù)開發(fā)馏鹤,并且都在同一臺主機上公你,所以我們一開始就要做好端口規(guī)劃。這里我使用8700-8710 作為注冊服務(wù)中心假瞬。
修改配置文件為:
為什么明明時服務(wù)器,卻要配置個client呢迂尝?
因為eureka是一個高可用的組件脱茉,它沒有后端緩存,每一個實例注冊之后需要向注冊中心發(fā)送心跳(因此可以在內(nèi)存中完成)垄开,在默認(rèn)情況下erureka server也是一個eureka client ,必須要指定一個server
3.在啟動類上添加注解
Spring團隊對erueka做了很多內(nèi)置的配置和優(yōu)化琴许,使我們很方便的使用一個注解就可以實現(xiàn)服務(wù)端注冊。
4.運行服務(wù)
Eureka是有圖形界面的溉躲,我們打開瀏覽器榜田,訪問http://localhost:8700/箭券,如圖則代表成功:
5.?創(chuàng)建一個服務(wù)的提供商辩块,將其注冊在eureka服務(wù)上:
注意選右邊一個:
6.更改配置文件application.yml
注意:服務(wù)提供商端口我們暫定為從8080端口開始
7. 添加注解
8.運行工程,刷新eureka的主頁豆村,可以看見服務(wù)已經(jīng)注冊上去了
關(guān)于紅字部分掌动,我也不太懂桃漾,屬于正常情況撬统,產(chǎn)生原因我在網(wǎng)上復(fù)制了一段:
Eureka Server在運行期間,會統(tǒng)計心跳失敗的比例在15分鐘之內(nèi)是否低于85%凭迹,如果出現(xiàn)低于的情況(在單機調(diào)試的時候很容易滿足,實際在生產(chǎn)環(huán)境上通常是由于網(wǎng)絡(luò)不穩(wěn)定導(dǎo)致)嗅绸,Eureka Server會將當(dāng)前的實例注冊信息保護起來鱼鸠,同時提示這個警告蚀狰。保護模式主要用于一組客戶端和Eureka Server之間存在網(wǎng)絡(luò)分區(qū)場景下的保護。一旦進入保護模式跛溉,Eureka Server將會嘗試保護其服務(wù)注冊表中的信息扮授,不再刪除服務(wù)注冊表中的數(shù)據(jù)(也就是不會注銷任何微服務(wù))刹勃。
如果你覺得主機名注冊太難看,可以用IP地址注冊的話抖格,在application.yaml文件中添加配置:
9.添加測試代碼雹拄,方便起見滓玖,直接寫在啟動類上了质蕉,注意添加restful注解:
10. 重啟user-server模暗,刷新eureka注冊頁面兑宇,點擊注冊上的服務(wù),可以看到: