為了解決硬編碼的遺留問題,需要服務(wù)注冊與發(fā)現(xiàn)機制來解決這些問題。
服務(wù)注冊與發(fā)現(xiàn)機制的作用:記錄每個服務(wù)提供者的網(wǎng)絡(luò)信息,向服務(wù)消費者提供所需服務(wù)網(wǎng)絡(luò)信息。
一、服務(wù)發(fā)現(xiàn)組件
服務(wù)提供者、服務(wù)消費者、服務(wù)發(fā)現(xiàn)組件三者之間的關(guān)系:
1、每一個為服務(wù)啟動的時候都會將自己的網(wǎng)絡(luò)信息注冊到服務(wù)發(fā)現(xiàn)組件中,服務(wù)發(fā)現(xiàn)組件將這些信息進行存儲;
2、服務(wù)消費者從服務(wù)發(fā)現(xiàn)組件中查詢服務(wù)提供者的網(wǎng)絡(luò)信息,并使用這些信息對服務(wù)提供者進行訪問;
3、每個微服務(wù)與服務(wù)發(fā)現(xiàn)組件之間通過存在通信機制,當(dāng)服務(wù)發(fā)現(xiàn)組件長時間無法與某微服務(wù)進行聯(lián)系,服務(wù)發(fā)現(xiàn)組件會將該實例注銷;
4、微服務(wù)的網(wǎng)絡(luò)信息進行變更時,會重新注冊到服務(wù)發(fā)現(xiàn)組建中,該服務(wù)的調(diào)用方無需修改提供者的信息。
服務(wù)發(fā)現(xiàn)組件基本功能:
1、服務(wù)注冊表:這是服務(wù)發(fā)現(xiàn)組件的核心。用來記錄各個微服務(wù)的信息,包括微服務(wù)的名稱、IP、端口等。服務(wù)注冊表提供查詢API和管理API,查詢API用于查詢可用的微服務(wù)實例,管理API用于服務(wù)的注冊與注銷;
2、服務(wù)注冊與發(fā)現(xiàn):
服務(wù)注冊:微服務(wù)啟動時將信息注冊到服務(wù)發(fā)現(xiàn)組件中的過程;
服務(wù)發(fā)現(xiàn):查詢可用的微服務(wù)列表及其網(wǎng)絡(luò)信息的機制
3、服務(wù)檢查:使用一定的機制檢測服務(wù)的有效性,如果檢測到某微服務(wù)已經(jīng)掛掉會自動將該實例注銷。
二、Eureka
Eureka是springcloud提供的一種服務(wù)發(fā)現(xiàn)組件。
1、Eureka Server 和?Eureka client
Eureka包含兩個組件:Eureka Server 和?Eureka client,二者關(guān)系如下:
Eureka Server提供了服務(wù)發(fā)現(xiàn)與注冊的機制,微服務(wù)啟動時會向Eureka Server注冊自己的信息,Eureka Server會將這些信息進行存儲。
微服務(wù)啟動后,會在指定間隔(默認(rèn)30秒)向Eureka Server發(fā)送心跳,表明服務(wù)正在運行;
如果Eureka Server長時間(默認(rèn)90秒)沒有收到來自某微服務(wù)的心跳,Eureka Server就會注銷這個實例;
Eureka client緩存了服務(wù)注冊表的信息。微服務(wù)無需每次都向Eureka Server查詢服務(wù)狀態(tài),減輕了Eureka Server的壓力。同時,如果Eureka Server掛掉,微服務(wù)依然可以從緩存中獲取到服務(wù)提供者的網(wǎng)絡(luò)信息并完成調(diào)用。
三、編寫Eureka Server
項目結(jié)構(gòu)如下:
添加pom依賴:
<dependency> ???<groupId>org.springframework.cloud</groupId> ???<artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
啟動類添加注解:
@SpringBootApplication @EnableEurekaServer??//表明自己是一個Eureka?Server public?class?EurakaApplication?{ ???public?static?void?main(String[]?args)?{ ??????SpringApplication.run(EurakaApplication.class,?args); ???} }
yml文件中添加配置:
server: ??port:?8761 eureka: ??client: ????register-with-eureka:?false?#表示是否將自己注冊到Eureka?Server中,默認(rèn)為true。由于本項目就是一個Eureka?Server,故此處設(shè)為false ????fetch-registry:?false?#表示是否從其他Eureka?Server中獲取信息,由于此處為單點Eureka?Server,設(shè)為false即可 ????service-url: ??????default-zone:??#?設(shè)置與Eureka?Server的交互地址,查詢與注冊服務(wù)都需要用到該地址,多個地址可以使用","分隔
此時啟動項目并且訪問http://localhost:8716/,得到如下頁面,此時還沒有任何微服務(wù)注冊進來。
四、將微服務(wù)注冊到Eureka Server中
還以user項目為例:
pom依賴:
<dependency> ???<groupId>org.springframework.cloud</groupId> ???<artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
yml文件:
spring: ??application: ????name:?user?#?指定注冊到Eureka?Server中的應(yīng)用名字 eureka: ??client: ????service-url: ??????default-zone:?http://localhost:8761/eureka/ ??instance: ????prefer-ip-address:?true?#是否將自己的IP注冊到Eureka?Server中,如果不配置或設(shè)置為false,會將微服務(wù)所在的操作系統(tǒng)的hostname注冊到Eureka?Server
啟動類添加注解:
@SpringBootApplication @EnableEurekaClient?//聲明自己是一個注冊服務(wù) public?class?UserApplication?{ ???public?static?void?main(String[]?args)?{ ??????SpringApplication.run(UserApplication.class,?args); ???} }
此時啟動項目并且再次訪問:http://localhost:8716/,得到如下頁面:
此時用戶微服務(wù)已經(jīng)注冊到Eureka Server中。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前名稱:springCloud入門學(xué)習(xí)(三):服務(wù)注冊與發(fā)現(xiàn)-創(chuàng)新互聯(lián)
文章起源:http://jinyejixie.com/article26/gpijg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、網(wǎng)站策劃、搜索引擎優(yōu)化、域名注冊、App設(shè)計、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容