Eureka作為服務(wù)注冊與發(fā)現(xiàn)的組件,Eureka2.0已經(jīng)閉源了,但是本教程還是以Eureka為核心進行展開。
在蘇尼特左等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需求定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,成都營銷網(wǎng)站建設(shè),外貿(mào)網(wǎng)站制作,蘇尼特左網(wǎng)站建設(shè)費用合理。
1、三個模塊
Spring Cloud Eureka是Spring Cloud Netflix微服務(wù)套件之一,基于Netflix Eureka做了二次封裝,主要負責(zé)完成微服務(wù)架構(gòu)中的服務(wù)治理功能。
eueka的3個重要模塊,eureka-server,service-provider,service-consumer
eureka-server:服務(wù)端,提供服務(wù)注冊和發(fā)現(xiàn);
eureka-client-service-provider:服務(wù)端,服務(wù)提供者,通過http rest告知服務(wù)端注冊,更新,取消服務(wù);
eureka-client-service-consumer:客戶端,服務(wù)消費者,通過http rest從服務(wù)端獲取需要服務(wù)的地址列表,然后配合一些負載均衡策略(ribbon)來調(diào)用服務(wù)端服務(wù)。
2、eureka-server
Eureka Server 的服務(wù)注冊數(shù)據(jù)存儲層是雙層的 ConcurrentHashMap(線程安全高效的 Map 集合)。
第一層的key=spring.application.name 也就是客戶端實例注冊的應(yīng)用名;value 為嵌套的 ConcurrentHashMap。
第二層的key=instanceId 也就是服務(wù)的唯一實例 ID,value 為 Lease 對象,Lease 對象存儲著這個實例的所有注冊信息,包括 ip 、端口、屬性等。
申明語句如下:
private final ConcurrentHashMap
服務(wù)注冊表沒有持久化到數(shù)據(jù)庫,我想應(yīng)該是出于性能的考慮吧。畢竟,注冊表信息是需要定時獲取、更新的。
3、創(chuàng)建服務(wù)注冊中心——demo
3.1、引入依賴pom.xml
org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.boot spring-boot-starter-test test
3.2、eureka server啟動代碼
//www.1b23.com @SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
@EnableEurekaServer的主要作用是啟動EurekaServer運行環(huán)境和上下文。
3.3、application配置文件
application配置文件可以是xml或yml結(jié)構(gòu),我比較喜歡xml結(jié)構(gòu),yml是縮進格式,我覺得比較容易寫錯。
server.port=8080
spring.application.name: eureka-server
#服務(wù)注冊中心實例的主機名
eureka.instance.hostname: localhost
#表示是否將自己注冊在EurekaServer上,默認為true。由于當前應(yīng)用就是EurekaServer,所以置為false
eureka.client.register-with-eureka: false
#表示表示是否從EurekaServer獲取注冊信息,默認為true。單節(jié)點不需要同步其他的EurekaServer節(jié)點的數(shù)據(jù)
eureka.client.fetch-registry: false
#設(shè)置Eureka的地址
eureka.client.service-url.defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
3.4、查看eureka server
訪問http://localhost:8080/地址。如圖上部分
Environment: 環(huán)境,默認為test,生產(chǎn)環(huán)境建議改下,看著順眼
Data center: 數(shù)據(jù)中心,生產(chǎn)環(huán)境建議改下
Current time:當前的系統(tǒng)時間
Uptime:已經(jīng)運行了多少時間
Lease expiration enabled:是否啟用租約過期 ,自我保護機制關(guān)閉時,該值默認是true, 自我保護機制開啟之后為false。
Renews threshold: 每分鐘最少續(xù)約數(shù),Eureka Server 期望每分鐘收到客戶端實例續(xù)約的總數(shù)。
Renews (last min): 最后一分鐘的續(xù)約數(shù)量(不含當前,1分鐘更新一次),Eureka Server 最后 1 分鐘收到客戶端實例續(xù)約的總數(shù)。
頁面下部分:
total-avail-memory : 總共可用的內(nèi)存
environment : 環(huán)境名稱,默認test
num-of-cpus : CPU的個數(shù)
current-memory-usage : 當前已經(jīng)使用內(nèi)存的百分比
server-uptime : 服務(wù)啟動時間
registered-replicas : 相鄰集群復(fù)制節(jié)點
unavailable-replicas :不可用的集群復(fù)制節(jié)點,
available-replicas :可用的相鄰集群復(fù)制節(jié)點
ipAddr:eureka服務(wù)端IP
status:eureka服務(wù)端狀態(tài)