基本Spring Cloud的微服務架構搭建及應用(一)

1、Spring Cloud介紹

Spring Cloud家族有許多成員:

Spring Cloud Config - 配置管理工具包,集中化管理集羣配置,目前支持本地存儲、Git 以及 Subversion;
Spring Cloud Bus - 事件、消息總線,用於在集羣(例如,配置變化事件)中傳播狀態變化,可與 Spring Cloud Config 聯合實現熱部署;
Spring Cloud Sleuth - 日誌收集工具包,封裝了 Dapper 和 log-based 追蹤以及 Zipkin 和 HTrace 操作,爲 SpringCloud 應用實現了一種分佈式追蹤解決方案;
Spring Cloud Stream - Spring 數據流操作開發包,封裝了與 Redis、Rabbit、Kafka 等發送接收消息;
Spring Cloud OAuth2 - 基於 Spring Security 和 OAuth2 的安全工具包,爲你的應用程序添加安全控制;
Eureka,服務註冊和發現,它提供了一個服務註冊中心、服務發現的客戶端,還有一個方便的查看所有註冊的服務的界面;
Zuul,網關,所有的客戶端請求通過這個網關訪問後臺的服務;
Ribbon,即負載均衡;
Feign,服務客戶端,服務之間如果需要相互訪問,可以使用RestTemplate,也可以使用Feign客戶端訪問,它默認會使用Ribbon來實現負載均衡;
Hystrix,監控和斷路器;
......

在當前文章中不會對這些組件的單個使用作很詳細的介紹,這些資料網上都可以找到,讀者可以根據自己的需要去網上查詢,這裏只是演示如何將其中一些常用的組件組合起來,搭建起一個可以運行的Spring Cloud應用架構。

Spring Cloud的有一些組件並不是都是完美的,有一些國產組件比它做得更好、更符合國人的使用習慣,如阿里用於微服務治理的Sentinel比Hystrix更好用(基於Sentinel的高可用限流系統設計及實現)、推程的Apollo比Spring Cloud Config更適合作配置中心、Skywalking的無侵入式調用鏈監控比Spring Cloud Sleuth更靈活更方便集成等等,可以根據自己的實際情況選擇最合適的。

2、示例架構介紹

當前的示例應用中,不會把所有的組件都用完,只是揀選一些常用幾個組件作爲示例演示,其中Zuul with Ribbon作爲網關、Eureka作爲註冊與發現中心、Feign爲遠程調用組件、spring-cloud-config-serverw作爲配置中心並以Git作爲配置存儲中心,並且編寫了兩個基於Spring Boot的示例應用application-1和application-2用於演示,以下是本次示例的架構圖:

當前示例的所有代碼都放在了碼雲上面:https://gitee.com/laofeng/spring-cloud,讀者可以自己下載下來自己嘗試。

3、項目搭建及運行

1、config-service本地的Git緩存目錄默認爲/data/spring-cloud-config/repo,如果該目錄不存在則需要建立該目錄;config-service是從git中去拉取配置的,如果沒有現成的則需要先搭建一個gitlab,我建意通過docker搭建,比較方便,以下是一個操作命令:

Docker安裝Gitlab
1)拉取鏡像:
docker pull gitlab/gitlab-ce
2)啓動:
docker run -d -p 443:443 -p 8881:80 -p 222:22 --name gitlab --restart always -v /data/gitlab/config:/etc/gitlab -v /data/gitlab/logs:/var/log/gitlab -v /data/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
3)通過admin/admin登陸後,再創建用戶test_user並設置密碼test_user,再通過test_user登陸創建名爲spring-cloud-config的項目,再把當前目錄spring-cloud-config中的內容複製過去並提交到Git中。

2、將commons工程安裝到本地maven倉庫中:mvn source:jar install ;

3、項目啓動順序:eureka-service、 config-service、gateway-service、application-1、application-2;

4、通過Eureka查過各服務及應用的啓動情況,訪問URL:http://127.0.0.1:8761/ ;

5、驗證:

​ 訪問application-1提供的接口:

​ http://127.0.0.1:20250/test/getARandomValue 該接口實際會訪問application-2提供的接口

​ http://127.0.0.1:20250/test/getValueOfKey1

​ 訪問application-2提供的接口:http://127.0.0.1:20260/test/getARandomValue

​ 訪問網關接口:

​ http://127.0.0.1:8762/api/test/getValueOfKey1

​ http://127.0.0.1:8762/api/test/getARandomValue

​ 如果以上都可以正常訪問,則說明應用啓動成功。

今天就到此爲止,後面會把這幾個應用如何搭建的步驟分爲不同的文章寫出來。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章