http://blog.csdn.net/lc0817/article/details/53266212/
https://github.com/leoChaoGlut/log-sys
上面是我基於Spring Cloud ,Spring Boot 和 Docker 搭建的一個分布式日志系統.
目前已在我司使用. 想要學習Spring Cloud, Spring Boot以及Spring 全家桶的童鞋,可以參考學習,如果覺得好,star 一下吧~
<<<< 20170602 <<<<
新增Spring Cloud [ Bus, Sleuth, Config, Stream ]教程:
Github: https://github.com/leoChaoGlut/spring-cloud-tutorial
>>>> 20170602 >>>>
<<<< 20170608 <<<<
Ribbon源碼解析及常見問題: http://blog.csdn.net/lc0817/article/details/72886721
>>>> 20170608 >>>>
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-demo
3.1.服務注冊demo:
3.1.1.創建工程模塊,如圖所示
3.1.2.將官方提供的maven依賴,加入pom.
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- 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">
- <modelVersion>4.0.0</modelVersion>
- <groupId>demo</groupId>
- <artifactId>spring-cloud-demo</artifactId>
- <packaging>pom</packaging>
- <version>1.0-SNAPSHOT</version>
- <modules>
- <module>discovery</module>
- <module>service0</module>
- <module>service1</module>
- </modules>
- <!--以下dependency來自官方-->
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>1.4.0.RELEASE</version>
- </parent>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>Camden.SR2</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-config</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-eureka</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-devtools</artifactId>
- <optional>true</optional>
- </dependency>
- </dependencies>
- </project>
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 配置 這三個組件.
5.分布式應用日志追蹤: spring cloud sleuth:
http://blog.csdn.net/lc0817/article/details/72829935
6.分布式配置中心: Spring Cloud Config
http://blog.csdn.net/lc0817/article/details/72833007
7.消息總線: Spring Cloud Bus:
http://blog.csdn.net/lc0817/article/details/72836236
8.Netflix 基本組件:Feign Ribbon Hystrix 詳細整合
http://blog.csdn.net/lc0817/article/details/72875195
9.流處理:Spring Cloud Stream