企業(yè)產(chǎn)品展示型網(wǎng)站案例google下載官網(wǎng)
今天是劉小愛自學(xué)Java的第134天。
感謝你的觀看,謝謝你。

學(xué)習(xí)內(nèi)容安排如下:
SpringCloud的接觸。
利用SpringCloud搭建微服務(wù)架構(gòu),當(dāng)然這個(gè)估計(jì)要3天時(shí)間才能完成,今天主要是注冊(cè)中心Eureka的學(xué)習(xí)。
一、SpringCloud
微服務(wù)是一種系統(tǒng)架構(gòu)方式,最終肯定需要技術(shù)架構(gòu)去實(shí)施,我們使用的就是SpringCloud了,不用多說,看名稱都知道又是Spring旗下的一個(gè)項(xiàng)目。
所以對(duì)于Java開發(fā)來說,spring真是個(gè)繞不開的坎,哪里都有它。

其主要涉及的組件包括,Netflix:
Eureka:注冊(cè)中心
Zuul:服務(wù)網(wǎng)關(guān)
Ribbon:負(fù)載均衡
Feign:服務(wù)調(diào)用
Hystix:熔斷器
這幾天依次學(xué)習(xí)這些知識(shí)點(diǎn)。
二、Eureka:注冊(cè)中心
顧名思義,注冊(cè)中心的作用在于服務(wù)的管理,記錄服務(wù)提供者的信息。
1Eureka服務(wù)端
所有的服務(wù)都要在Eureka服務(wù)端上注冊(cè),那如何讓一個(gè)SpringBoot應(yīng)用成為Eureka服務(wù)端呢?

①引入eureka服務(wù)端依賴
這個(gè)依賴非常長(zhǎng),記2個(gè)核心點(diǎn):
starter啟動(dòng)器的意思.
erueka-server對(duì)應(yīng)erueka的服務(wù)端,有服務(wù)端肯定也會(huì)有客戶端。
②啟動(dòng)類開啟eureka服務(wù)
@EnableEurekaServer,看這個(gè)注解的意思就能知道是開始前eureka服務(wù)。
也就是說該SpringBoot引用被作為了euerka服務(wù)端,也就是前面說的管理服務(wù)的注冊(cè)中心。

③配置注冊(cè)中心地址
這里就是指它自己,這是什么意思呢?
eureka服務(wù)端是專門用來管理服務(wù)的,所有的服務(wù)都要在它這個(gè)注冊(cè),而它本身也是一個(gè)服務(wù),所以需要自己注冊(cè)自己。
④給服務(wù)命名
這個(gè)也好理解,application翻譯是應(yīng)用,在這里也就是一個(gè)服務(wù),給它命名為eureka-server。
2Eureka客戶端:服務(wù)的注冊(cè)
比如user-service這個(gè)服務(wù)是用來查詢和user相關(guān)數(shù)據(jù)的,將該服務(wù)注冊(cè),讓其它服務(wù)都可以直接調(diào)用它。

①引入eureka客戶端依賴
一樣的,2個(gè)核心點(diǎn):
starter啟動(dòng)器的意思。
erueka-client對(duì)應(yīng)erueka的客戶端。
②啟動(dòng)類開啟eureka客戶端
@EnableEurekaClient,同理確實(shí)也是有這個(gè)注冊(cè)的,開啟eureka客戶端。
不過這里使用@EnableDiscoveryClient,它功能要更加地強(qiáng)大。
3Eureka客戶端:服務(wù)的發(fā)現(xiàn)
上述服務(wù)注冊(cè)了,那另外的服務(wù)要直接使用它,就稱之為服務(wù)的發(fā)現(xiàn)。
既然是服務(wù),肯定也需要先完成注冊(cè),一樣的步驟:導(dǎo)入依賴,啟動(dòng)類上添加客戶端注解。

DiscoverClient:也就是啟動(dòng)類上注解配置的客戶端。
RestTemplate:這個(gè)昨天詳細(xì)學(xué)習(xí)過,通過它可是實(shí)現(xiàn)服務(wù)之間的調(diào)用。
①拉取服務(wù)
通過discoverClient的getInstances()方法可以拉取指定的服務(wù)。
②負(fù)載均衡
利用負(fù)載均衡獲取其中的一個(gè)服務(wù),因?yàn)槲覀冞@里總共就只有一個(gè)服務(wù),所以不需要利用負(fù)載均衡。
這個(gè)文章結(jié)尾會(huì)詳細(xì)講述到。
③字符串占位符
通過restTemplate的getForObject()方法可以向指定的url發(fā)起get請(qǐng)求。
通過String的format()方法實(shí)現(xiàn)拼接,將后面的ip,端口和id拼接到%s這個(gè)占位符中。
4服務(wù)的調(diào)用測(cè)試
上述配置完成后,就可以通過consumer-demo這個(gè)服務(wù),調(diào)用user-service這個(gè)服務(wù)了。

根據(jù)id去數(shù)據(jù)庫(kù)查詢對(duì)應(yīng)的用戶,我們只在user-service服務(wù)中實(shí)現(xiàn)了service層和dao層的代碼編寫。
如果在consumer服務(wù)中要用,直接調(diào)用user-service服務(wù)即可。
三、Eureka詳解
Eureka架構(gòu)中的三個(gè)核心角色:

①服務(wù)注冊(cè)中心
Eureka的服務(wù)端應(yīng)用,提供服務(wù)注冊(cè)和發(fā)現(xiàn)功能,也就是上述的eureka-server。
②服務(wù)提供者
提供服務(wù)的應(yīng)用,可以是SpringBoot應(yīng)用,也可以是其它任意技術(shù)實(shí)現(xiàn),只要對(duì)外提供的是Rest風(fēng)格服務(wù)即可。
也就是上述實(shí)現(xiàn)的user-service。
③服務(wù)消費(fèi)者
消費(fèi)應(yīng)用從注冊(cè)中心獲取服務(wù)列表,從而得知每個(gè)服務(wù)方的信息,知道去哪里調(diào)用服務(wù)方,也就是我們實(shí)現(xiàn)的consumer-demo。
2服務(wù)續(xù)約

lease-renewal-interval-in-seconds
服務(wù)續(xù)約的間隔,默認(rèn)為30秒,renewal本身就是續(xù)約的意思。
lease-expiration-duration-in-seconds
服務(wù)失效時(shí)間,默認(rèn)值90秒,expiration本身就是終結(jié)的意思
也就是說,默認(rèn)情況下每個(gè)30秒服務(wù)會(huì)向注冊(cè)中心發(fā)送一次心跳,證明自己還活著。
如果超過90秒沒有發(fā)送心跳,EurekaServer就會(huì)認(rèn)為該服務(wù)GG了,會(huì)從服務(wù)列表中移除。
這兩個(gè)值在生產(chǎn)環(huán)境不要修改,默認(rèn)即可。
3負(fù)載均衡Ribbon
在剛才的案例中,我們啟動(dòng)了一個(gè)user-service,通過DiscoveryClient來獲取服務(wù)實(shí)例信息,獲取ip和端口來訪問。
但是實(shí)際環(huán)境中,往往會(huì)開啟很多個(gè)user-service。
此時(shí)我們獲取的服務(wù)列表中就會(huì)有多個(gè),到底該訪問哪一個(gè)呢?
Eureka中已經(jīng)幫我們集成了負(fù)載均衡組件:Ribbon,簡(jiǎn)單修改代碼即可使用。

①開啟負(fù)載均衡
通過@LoadBanlanced注解即可開啟負(fù)載均衡。
開啟之后,就可以直接使用了。

②url編寫
開啟負(fù)載均衡,url中的ip和端口直接使用服務(wù)的名稱使用即可。
最后
謝謝你的觀看。
如果可以的話,麻煩幫忙點(diǎn)個(gè)贊,謝謝你。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)

喜歡的朋友記得點(diǎn)贊、收藏、關(guān)注哦!!!