今天我們要開始SpringCloud的微服務項目系列實戰,我仍然以電商項目展開,從搭建一步步深入。在開始實戰之前,我們先熟悉下SpringCloud。
一,Spring Cloud是什么?
SpringCloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中涉及的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分布式會話和集群狀態管理等操作提供了簡單的開發方式。Spring Cloud是微服務架構的集大成者,將一系列優秀的組件進行了整合。包含了多個子項目,比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等。在項目中通過一些簡單的注解,就可以快速的在應用中配置一下常用模塊並構建龐大的分布式系統。SpringCloud的組件相當繁雜,擁有諸多子項目,我們這里重點關注Netflix。
二,SpringCloud分布式開發五大組件
-
服務發現——Netflix Eureka
-
客服端負載均衡——Netflix Ribbon
-
斷路器——Netflix Hystrix
-
服務網關——Netflix Zuul
-
分布式配置——Spring Cloud Config
今天說的重點就是Eureka,Eureka是Netflix 開發的,一個基於 REST 服務的,服務注冊與發現的組件。
它主要包括兩個組件:Eureka Server 和 Eureka Client
-
Eureka Server:注冊中心,提供服務注冊和發現的能力。里面有一個注冊表,保存了各個服務所在的機器和端口號。
-
Eureka Client:一個Java客戶端,用於簡化與 Eureka Server 的交互。負責將這個服務的信息注冊到Eureka Server中
如上圖:每一個Service的微服務,都有一個Eureka Client組件,這個專門把這個服務的信息注冊到Eureka Server中,說白了就是告訴Eureka Server,自己在哪台機器上,監聽那個端口。Eureka 注冊中心里的注冊表,保存各個服務器的機器和端口。
例如電商的微服務環境中,我們有訂單、支付、庫存、商品等多個服務。如果那個服務想要知道其他服務信息,只需要問下他里面的Eureka Client組件,然后Eureka Client組件會問一下,其他服務都在哪里?然后就可以把其他的相關服務信息從Eureka Server的注冊表中拉取到自己本地緩存起來。
如果我們下單,這時訂單服務想要調用庫存服務,不就可以找自己本地Eureka Client問題下庫存服務在那台機器上,監聽哪個端口嗎?收到響應后,緊接着就可以發送一個請求過去,調用庫存服務扣減庫存的那個接口。同理,如果訂單服務要調用商品服務、客戶服務,也是如法炮制。
三,搭建項目實戰
我先用IDEA創建一個SpringBoot的的項目。
1),創建SpringBoot項目
在Idea里依次點擊:File >>> New >>> Project,選擇Maven,然后點擊Next,創建一個SpringBoot項目。
2)添加SpringBoot父級依賴
在創建的項目pom文件里,添加SpringBoot如下:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.0.RELEASE</version> <relativePath/> </parent>
並在剛項目version屬性下添加:<packaging>pom</packaging>
3)添加SpringCloud依賴
然后添加SpringBoot和SpringCloud基礎依賴。
注意:SpringBoot和SpringCloud版本一定需要匹配,否則使用不了。具體匹配信息如下:
4)創建Eureka項目
在剛創建的項目中,刪除src目錄。並右擊項目名稱,New >>> Module。創建一個Eureka服務。創建完成如下:
5)為Eureka添加依賴和配置
Eureka服務的pom配置如下:
application.yml配置如下:
6)添加Eureka啟動類
7)啟動測試
啟動Eureka啟動類
8)訪問Eureka服務
訪問地址:http://localhost:8761/,打開輸入賬號密碼(application.yml里配置),即可訪問Eureka服務。
此刻,我們初步的Eureka服務搭建完成。今天就到這里,接下來將是微服務模塊的搭建,並討論服務注冊與發現。
推薦閱讀:
SpringBoot+SpringCloud面試總結都在這里
下期預期:SpringCloud微服務實戰系列,微服務模塊搭建,服務注冊與發現。
想獲取源碼,請關注公眾號,發送“SpringCloud實戰”獲取