1、Spring Cloud介紹
Spring Cloud家族有許多成員:
Spring Cloud Config - 配置管理工具包,集中化管理集群配置,目前支持本地存儲、Git 以及 Subversion;
Spring Cloud Bus - 事件、消息總線,用于在集群(例如,配置變化事件)中傳播狀態(tài)變化,可與 Spring Cloud Config 聯(lián)合實(shí)現(xiàn)熱部署;
Spring Cloud Sleuth - 日志收集工具包,封裝了 Dapper 和 log-based 追蹤以及 Zipkin 和 HTrace 操作,為 SpringCloud 應(yīng)用實(shí)現(xiàn)了一種分布式追蹤解決方案;
Spring Cloud Stream - Spring 數(shù)據(jù)流操作開發(fā)包,封裝了與 Redis、Rabbit、Kafka 等發(fā)送接收消息;
Spring Cloud OAuth2 - 基于 Spring Security 和 OAuth2 的安全工具包,為你的應(yīng)用程序添加安全控制;
Eureka,服務(wù)注冊和發(fā)現(xiàn),它提供了一個服務(wù)注冊中心、服務(wù)發(fā)現(xiàn)的客戶端,還有一個方便的查看所有注冊的服務(wù)的界面;
Zuul,網(wǎng)關(guān),所有的客戶端請求通過這個網(wǎng)關(guān)訪問后臺的服務(wù);
Ribbon,即負(fù)載均衡;
Feign,服務(wù)客戶端,服務(wù)之間如果需要相互訪問,可以使用RestTemplate,也可以使用Feign客戶端訪問,它默認(rèn)會使用Ribbon來實(shí)現(xiàn)負(fù)載均衡;
Hystrix,監(jiān)控和斷路器;
......
在當(dāng)前文章中不會對這些組件的單個使用作很詳細(xì)的介紹,這些資料網(wǎng)上都可以找到,讀者可以根據(jù)自己的需要去網(wǎng)上查詢,這里只是演示如何將其中一些常用的組件組合起來,搭建起一個可以運(yùn)行的Spring Cloud應(yīng)用架構(gòu)。
Spring Cloud的有一些組件并不是都是完美的,有一些國產(chǎn)組件比它做得更好、更符合國人的使用習(xí)慣,如阿里用于微服務(wù)治理的Sentinel比Hystrix更好用(基于Sentinel的高可用限流系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)完整版)、推程的Apollo比Spring Cloud Config更適合作配置中心、Skywalking的無侵入式調(diào)用鏈監(jiān)控比Spring Cloud Sleuth更靈活更方便集成等等,可以根據(jù)自己的實(shí)際情況選擇最合適的。
2、示例架構(gòu)介紹
當(dāng)前的示例應(yīng)用中,不會把所有的組件都用完,只是揀選一些常用幾個組件作為示例演示,其中Zuul with Ribbon作為網(wǎng)關(guān)、Eureka作為注冊與發(fā)現(xiàn)中心、Feign為遠(yuǎn)程調(diào)用組件、
spring-cloud-config-serverw作為配置中心并以Git作為配置存儲中心,并且編寫了兩個基于Spring Boot的示例應(yīng)用Application-1和application-2用于演示,以下是本次示例的架構(gòu)圖:

當(dāng)前示例的所有代碼都放在了碼云上面:
https://gitee.com/laofeng/spring-cloud,讀者可以自己下載下來自己嘗試。
3、項(xiàng)目搭建及運(yùn)行
1、config-service本地的Git緩存目錄默認(rèn)為
/data/spring-cloud-config/repo,如果該目錄不存在則需要建立該目錄;config-service是從git中去拉取配置的,如果沒有現(xiàn)成的則需要先搭建一個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登陸后,再創(chuàng)建用戶test_user并設(shè)置密碼test_user,再通過test_user登陸創(chuàng)建名為spring-cloud-config的項(xiàng)目,再把當(dāng)前目錄spring-cloud-config中的內(nèi)容復(fù)制過去并提交到Git中。
2、將commons工程安裝到本地maven倉庫中:mvn source:jar install ;
3、項(xiàng)目啟動順序:eureka-service、 config-service、gateway-service、application-1、application-2;
4、通過Eureka查過各服務(wù)及應(yīng)用的啟動情況,訪問URL:http://127.0.0.1:8761/ ;
5、驗(yàn)證:
? 訪問application-1提供的接口:
? http://127.0.0.1:20250/test/getARandomValue 該接口實(shí)際會訪問application-2提供的接口
? http://127.0.0.1:20250/test/getValueOfKey1
? 訪問application-2提供的接口:
http://127.0.0.1:20260/test/getARandomValue
? 訪問網(wǎng)關(guān)接口:
? http://127.0.0.1:8762/api/test/getValueOfKey1
? http://127.0.0.1:8762/api/test/getARandomValue
? 如果以上都可以正常訪問,則說明應(yīng)用啟動成功。
今天就到此為止,后面會把這幾個應(yīng)用如何搭建的步驟分為不同的文章寫出來。