1.前言:
1.1.以下内容是我通過閱讀官方文檔,并成功實踐後的經驗總結,希望能幫助你更快地了解和使用Spring Cloud.
1.2.預設讀者已經熟練掌握Spring 全家桶,Spring Boot和注解開發.
1.3.陸續更新
2.開發環境: @Deprecated
2.1.開發工具:idea
2.2.開發環境:jdk1.7
2.3.Spring版本:
2.3.1.Spring Boot :1.4.0 release
2.3.2.Spring Cloud : Camden SR2
3.demo:(獻給急于速成的各位大兄弟): demo位址:
https://github.com/leoChaoGlut/spring-cloud-demo3.1.服務注冊demo:
Spring Cloud 5分鐘搭建教程
3.1.1.建立工程子產品,如圖所示
3.1.2.将官方提供的maven依賴,加入pom.
如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java進階交流:787707172,群裡有阿裡大牛直播講解技術,以及Java大型網際網路技術的視訊免費分享給大家。
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
demo
spring-cloud-demo
pom
1.0-SNAPSHOT
discovery
service0
service1
org.springframework.boot
spring-boot-starter-parent
1.4.0.RELEASE
org.springframework.cloud
spring-cloud-dependencies
Camden.SR2
import
spring-cloud-starter-config
spring-cloud-starter-eureka
spring-boot-devtools
true
3.1.3.如圖步驟,完成Discovery
3.1.4.如圖步驟完成Service0,Service1類似
3.1.5.簡單到爆炸有沒有...........,接下來先啟動Discovery,然後啟動Service0和Service1
3.1.6.打開浏覽器,通路 localhost:8080 ,8080是Discovery裡配置的端口号.一切順利的話,可以看到:
3.1.7.已經成功注冊了service0,service1兩個服務
3.2.網關demo: 光是注冊了服務還不行,這裡可以再配一個網關,讓服務調用有統一的入口.
3.2.1.通過上圖配置後,首先啟動Discovery,其次的服務和網關啟動順序随意.通過通路localhost:8083/service0/service0,即可看到,gateway幫我們轉發了請求.
3.3.Feign:一個可以把遠端服務提供方的 rest 接口變成本地方法調用的Spring Cloud元件
舉個栗子:
現在有2個服務,service0, service1
service0提供了一個test接口,
那麼這時候,如果service1需要的調用service0,除了通過網關(zuul)調用,還可以使用Feign,來把service0的遠端接口,變為本地方法調用.如圖:
4.feign + ribbon + hystrix
簡介:
hystrix: 以切面為原理,可以在不入侵業務代碼的情況下,給方法加上逾時等名額,并且可以在超出設定的名額後,調用指定的fallback方法,進行失敗回調處理.
ribbon: 用戶端負載均衡, 我曾經也寫了一個類似的東西(
https://github.com/leoChaoGlut/ServiceDIscoveryAndRegistry/tree/master/doc),不過後來發現spring cloud已經有成熟的,現成的常用元件,是以就放棄了.哈哈.... 老式的,無注冊中心的服務調用,是通過url來實作的,但是ribbon可以讓我們隻需要提供服務名,就可以調用到多執行個體的服務,并且在用戶端做一個負載分發,減輕服務端負載的壓力.
feign: 給你以Http的形式,帶來RPC般的體驗.
認真看圖和代碼,即可快速上手 feign + ribbon + hystrix 配置
細看spring cloud, feign,ribbon,hystrix的官方文檔,加上源碼的閱讀,即可掌握如何使用spring cloud 配置 這三個元件.