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
http://blog.csdn.net/lc0817/article/details/72956321