SpringCloud入門學習(開篇)
前言:近日,又重新學習了一下SpringCloud,感覺很強大很方便,故將自己的學習過程記錄一下。本文很適合初學者,手把手帶你從零搭建一個SpringCloud微服務。主要涉及到以下組件:Eureka
、Feign
、Gateway
、Zipkin
,不瞭解它們是什麼的朋友彆着急,後面會一一闡述。好啦,讓我們開始搭建微服務吧~
在學習一項新技能之前,首先我們得了解它是什麼,它能幹什麼,以及它有什麼優勢…
一、什麼是SpringCloud
- SpringCloud是
基於SpringBoot
的一種微服務架構
,是一系列框架的有序集合; - Spring Cloud是
快速構建分佈式系統
的工具集,可以實現微服務; - 微服務架構風格是一種將單個應用程序作爲一套小型服務開發的方法,每種應用程序都在其自己的進程中運行,並與輕量級機制(通常是HTTP資源API)進行通信。 這些服務是圍繞業務功能構建的,可以通過全自動部署機制獨立部署。 這些服務的集中管理最少,可以用不同的編程語言編寫,並使用不同的數據存儲技術。(該條來自谷歌)
- SpringCloud是大勢所趨,很多公司都在使用,再不瞭解,我都不好意思說我是做Java開發的了…
二、Springcloud相關組件簡介
1. Eureka服務註冊中心
服務註冊中心又叫服務發現
,在微服務架構中,每個功能都可以是一個服務,都可以獨立部署運行,稱之爲微服務。當A服務需要調用B服務的時候,傳統的做法是直接調用;但是一旦服務多了起來,想要找到另一個服務就顯得很麻煩,什麼域名啊,請求路徑啊會顯得尤爲繁重。假如服務ip有變,修改起來也很麻煩。- 於是服務註冊中心應運而生,所有的服務都去服務註冊中心進行註冊,任何服務想要調用其他服務的時候,直接去服務註冊中心找就行。服務註冊中心把每個微服務都進行了統一管理。
- 服務註冊中心就好比菜單,每個微服務就是菜名。我要喫什麼菜,不需要去廚房找,直接看菜單點菜就行,這就是服務調用。一旦有新的菜式,就馬上將其寫到菜單上,這就是服務註冊。
- 常見的服務註冊中心有
Eureka
、Zookeeper
、Consul
以及爲阿里爲Dubbo定製的Nacos
,這裏主要介紹Eureka的使用。
2. Feign
- 微服務之間相互調用的時候,常規的做法是使用SpringBoot自帶的RestTemplate或者HttpClient實現,也就是常規的API調用,但是都過於麻煩。於是Feign應運而生了~
Feign
是一個聲明式的 Web 服務客戶端
,使得服務之間的調用相當簡單,通過註解
以及接口聲明
即可實現。並且整合了Ribbon,具有負載均衡
功能。
3. Gateway
- Gateway處於客戶端和各個微服務之間,充當着反向代理的角色,通過gateway統一進行服務調用。此外它還具有安全,限流,緩存,熔斷,監控,重試等功能。
- 最開始SpringCloud整合的並不是Gateway,而是Zuul,但是Zuul開發進度過於緩慢,於是Spring放棄了Zuul,改而自己開發了Gateway,Gateway具有Zuul的全部功能,並且更加強大。
4. Zipkin
- Zipkin是一個分佈式的鏈路追蹤系統,可以清晰的看到各個微服務之間的調用情況。
- 爲什麼需要這個功能呢?可以想象,假如每個微服務都部署在不同的服務器上,且紛繁衆多,一旦系統出了bug,查找起來就會比較費事。通過Zipkin鏈路追蹤管理界面,可以清楚的看到什麼時候哪個服務調用了哪個服務,耗時多少以及在哪裏出了什麼問題,簡直就是個神器!
Config、bus之類的由於我暫時還沒有整合到,就不妄加以介紹了,避免誤導查看此文的各位朋友…
好吧,balabala說了這麼多,接下來正式進入代碼時間 !!!
下一篇 -> 服務註冊中心和服務註冊