為什么 要用注冊(cè)中心?
1、微服務(wù)數(shù)量眾多,要進(jìn)行遠(yuǎn)程調(diào)用就需要知道服務(wù)端的ip地址和端口,注冊(cè)中心幫助我們管理這些服務(wù)的ip和端口。
2、微服務(wù)會(huì)實(shí)時(shí)上報(bào)自己的狀態(tài),注冊(cè)中心統(tǒng)一管理這些微服務(wù)的狀態(tài),將存在問題的服務(wù)踢出服務(wù)列表,客戶端獲取到可用的服務(wù)進(jìn)行調(diào)用。
spring cloud Eureka介紹
Spring Cloud Eureka 是對(duì)Netflix公司的Eureka的二次封裝,它實(shí)現(xiàn)了服務(wù)治理的功能,Spring Cloud Eureka提供服務(wù)端與客戶端,服務(wù)端即是Eureka服務(wù)注冊(cè)中心,客戶端完成微服務(wù)向Eureka服務(wù)的注冊(cè)與發(fā)現(xiàn)。服務(wù)端和客戶端均采用Java語言編寫。

1、Eureka Server是服務(wù)端,負(fù)責(zé)管理各各微服務(wù)結(jié)點(diǎn)的信息和狀態(tài)。
2、在微服務(wù)上部署Eureka Client程序,遠(yuǎn)程訪問Eureka Server將自己注冊(cè)在Eureka Server。
3、微服務(wù)需要調(diào)用另一個(gè)微服務(wù)時(shí)從Eureka Server中獲取服務(wù)調(diào)用地址,進(jìn)行遠(yuǎn)程調(diào)用。
首先創(chuàng)建一個(gè)Eureka的服務(wù)端(建議使用jdk1.8,使用9.0可能出現(xiàn)問題)
使用idea快速創(chuàng)建一個(gè)Eureka服務(wù)端,配置一個(gè)單機(jī)狀態(tài)的Eureka服務(wù),自己向自己注冊(cè)

配置文件設(shè)置:
server:
? port:port:50101#服務(wù)端口
spring:
????application:
????????name: eureka-server #指定服務(wù)名
eureka:
????client:
? ????? registerWithEureka: false #服務(wù)注冊(cè),是否將自己注冊(cè)到Eureka服務(wù)中
? ????? fetchRegistry: false #服務(wù)發(fā)現(xiàn),是否從Eureka中獲取注冊(cè)信息
? ????? serviceUrl: #Eureka客戶端與Eureka服務(wù)端的交互地址,高可用狀態(tài)配置對(duì)方的地址,單機(jī)狀態(tài)配置自己(如果不配置則默認(rèn)本機(jī)8761端口)
? ? ? ? ?defaultZone: http://localhost:50101/eureka/
在springBoot的啟動(dòng)類上標(biāo)注此服務(wù)為eureka服務(wù)

運(yùn)行服務(wù)并訪問 http://localhost:50101/就可以看到以下界面

高可用環(huán)境搭建
Eureka Server 高可用環(huán)境需要部署兩個(gè)Eureka server,它們互相向?qū)Ψ阶?cè)。如果在本機(jī)啟動(dòng)兩個(gè)Eureka需要注意兩個(gè)Eureka Server的端口要設(shè)置不一樣,這里我們部署一個(gè)Eureka Server工程,將端口可配置,制作兩個(gè)Eureka Server啟動(dòng)腳本,啟動(dòng)不同的端口
配置文件設(shè)置:
server:
? port: ${port:50101}#服務(wù)端口
eureka:
client:
? ? registerWithEureka: true #服務(wù)注冊(cè),是否將自己注冊(cè)到Eureka服務(wù)中
? ? fetchRegistry: true #服務(wù)發(fā)現(xiàn),是否從Eureka中獲取注冊(cè)信息
? ? serviceUrl: #Eureka客戶端與Eureka服務(wù)端的交互地址,高可用狀態(tài)配置對(duì)方的地址,單機(jī)狀態(tài)配置自己(如果不配置則默認(rèn)本機(jī)8761端口)
? ? ? defaultZone: ${EUREKA_SERVER:http://localhost:50102/eureka/}
server:
? ? enable-self-preservation: false #是否開啟自我保護(hù)模式
? ? eviction-interval-timer-in-ms: 60000 #服務(wù)注冊(cè)表清理間隔(單位毫秒,默認(rèn)是60*1000)
? instance:
? ? hostname: ${EUREKA_DOMAIN:eureka01}
配置腳本:
-DPORT=50102 -DEUREKA=http://localhost:50101/eureka/ -DEUREKA_DOMAIN=eureka02
-DPORT=50101 -DEUREKA=http://localhost:50102/eureka/ -DEUREKA_DOMAIN=eureka01
如下圖:
由于我修改了host文件, eureka01對(duì)應(yīng)的就是本機(jī)路徑,可以根據(jù)自己的需要修改,50101向50102端口的eureka注冊(cè),50102向50101端口的eureka注冊(cè)。

啟動(dòng)兩個(gè)Eureka服務(wù),先啟動(dòng)的那個(gè)會(huì)因?yàn)檎也坏搅硗庖粋€(gè)服務(wù)而報(bào)錯(cuò),不用在意,直接啟動(dòng)另外一個(gè)服務(wù),分別訪問:http://localhost:50101/,http://localhost:50102/會(huì)顯示下面的頁面

服務(wù)注冊(cè)
使用IDE快速創(chuàng)建一個(gè)Eureka的客戶端

配置文件設(shè)置:
server:
? port: ${port:31001}#服務(wù)端口
spring:
application:
? ? ? name: qiecai
eureka:
client:
? ? ? ? registerWithEureka: true #服務(wù)注冊(cè)開關(guān)
? ? ? ? fetchRegistry: true #服務(wù)發(fā)現(xiàn)開關(guān)
? ? ? ? serviceUrl: #Eureka客戶端與Eureka服務(wù)端進(jìn)行交互的地址,多個(gè)中間用逗號(hào)分隔
? ? ? ? ? ? defaultZone:http://localhost:50101/eureka/,http://localhost:50102/eureka/}
instance:
? ? ? ? prefer-ip-address: true #將自己的ip地址注冊(cè)到Eureka服務(wù)中
? ? ? ? ip-address: ${IP_ADDRESS:127.0.0.1}
instance-id: ${spring.application.name}:${server.port}
腳本設(shè)置
-DPORT=31001
在springBoot的啟動(dòng)類上標(biāo)注此服務(wù)為eureka客戶端

啟動(dòng)服務(wù)后,刷新eureka服務(wù)端,會(huì)發(fā)現(xiàn)切菜服務(wù)注冊(cè)到了兩個(gè)服務(wù)端上
