今天是劉小愛自學Java的第134天。
感謝你的觀看,謝謝你。

學習內容安排如下:
SpringCloud的接觸。
利用SpringCloud搭建微服務架構,當然這個估計要3天時間才能完成,今天主要是注冊中心Eureka的學習。
一、SpringCloud
微服務是一種系統架構方式,最終肯定需要技術架構去實施,我們使用的就是SpringCloud了,不用多說,看名稱都知道又是Spring旗下的一個項目。
所以對于Java開發來說,spring真是個繞不開的坎,哪里都有它。

其主要涉及的組件包括,Netflix:
Eureka:注冊中心
Zuul:服務網關
Ribbon:負載均衡
Feign:服務調用
Hystix:熔斷器
這幾天依次學習這些知識點。
二、Eureka:注冊中心
顧名思義,注冊中心的作用在于服務的管理,記錄服務提供者的信息。
1Eureka服務端
所有的服務都要在Eureka服務端上注冊,那如何讓一個SpringBoot應用成為Eureka服務端呢?

①引入eureka服務端依賴
這個依賴非常長,記2個核心點:
starter啟動器的意思.
erueka-server對應erueka的服務端,有服務端肯定也會有客戶端。
②啟動類開啟eureka服務
@EnableEurekaServer,看這個注解的意思就能知道是開始前eureka服務。
也就是說該SpringBoot引用被作為了euerka服務端,也就是前面說的管理服務的注冊中心。

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

①引入eureka客戶端依賴
一樣的,2個核心點:
starter啟動器的意思。
erueka-client對應erueka的客戶端。
②啟動類開啟eureka客戶端
@EnableEurekaClient,同理確實也是有這個注冊的,開啟eureka客戶端。
不過這里使用@EnableDiscoveryClient,它功能要更加地強大。
3Eureka客戶端:服務的發現
上述服務注冊了,那另外的服務要直接使用它,就稱之為服務的發現。
既然是服務,肯定也需要先完成注冊,一樣的步驟:導入依賴,啟動類上添加客戶端注解。

DiscoverClient:也就是啟動類上注解配置的客戶端。
RestTemplate:這個昨天詳細學習過,通過它可是實現服務之間的調用。
①拉取服務
通過discoverClient的getInstances()方法可以拉取指定的服務。
②負載均衡
利用負載均衡獲取其中的一個服務,因為我們這里總共就只有一個服務,所以不需要利用負載均衡。
這個文章結尾會詳細講述到。
③字符串占位符
通過restTemplate的getForObject()方法可以向指定的url發起get請求。
通過String的format()方法實現拼接,將后面的ip,端口和id拼接到%s這個占位符中。
4服務的調用測試
上述配置完成后,就可以通過consumer-demo這個服務,調用user-service這個服務了。

根據id去數據庫查詢對應的用戶,我們只在user-service服務中實現了service層和dao層的代碼編寫。
如果在consumer服務中要用,直接調用user-service服務即可。
三、Eureka詳解
Eureka架構中的三個核心角色:

①服務注冊中心
Eureka的服務端應用,提供服務注冊和發現功能,也就是上述的eureka-server。
②服務提供者
提供服務的應用,可以是SpringBoot應用,也可以是其它任意技術實現,只要對外提供的是Rest風格服務即可。
也就是上述實現的user-service。
③服務消費者
消費應用從注冊中心獲取服務列表,從而得知每個服務方的信息,知道去哪里調用服務方,也就是我們實現的consumer-demo。
2服務續約

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

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

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

喜歡的朋友記得點贊、收藏、關注哦!!!