初學SpringCloud
前言
在SpringBoot的坑還沒填完的情況下,我又迫不及待地開新坑了。主要是寒假即將結束了,到時又得忙於各種各樣的事情……留個坑給自己應該就會惦記着它,再慢慢地補上…………………………
附錄
個人博客地址 : https://zggdczfr.cn
個人參考項目 : https://github.com/FunriLy/springcloud-study/tree/master/%E6%A1%88%E4%BE%8B1
SpringCloud 介紹
Spring Cloud是一個基於Spring Boot實現的雲應用開發工具(就是說,接觸Spring Cloud之前需要了解一下Spring Boot)。歸結起來,Spring Cloud 是一個微服務工具包,為開發者提供了在分布式系統的配置管理、服務發現、斷路器、智能路由、微代理、控制總線等許多開發工具包。
按照官方的說法就是,Spring Cloud 為開發者提供了在分布式系統操作的工具。而且容易上手,可以進行快速開發。
微服務架構
微服務架構概念
“微服務架構”,就是將一個完整的應用從數據存儲開始拆分成多個不同的服務,每個服務都能獨立部署、獨立維護、獨立擴展。系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的。每個微服務僅關注於完成一件任務並很好地完成該任務。服務與服務間通過諸如RESTful API的方式互相調用。
關於微服務架構的扯淡
“微服務架構”,其實這個概念好幾年前就已經出現了,而且國外也出現了較為成熟的產品:netflix、dubbo等。聽說目前 Spring 開發團隊的精力主要集中於 spring boot 和 spring cloud 相關框架的開發。一般情況下,作為一個學習 java 的屌絲,基本上跟上 spring 屌絲的步伐,也就跟上了主流技術。
微服務架構的選擇
附上大神 程序猿DD(翟永超) 的一篇博客,可以參考一下:微服務架構的基礎框架選擇:Spring Cloud還是Dubbo?
服務注冊與發現(Eureka)
Eureka Server
- 創建一個 Spring Boot 項目。只要引入了Log4j2,便於日志記錄。pom.xml依賴文件如下:
<!-- SpringBoot 框架 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--log4j2-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!-- eureka-服務 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
版本參數:
<!-- 還是比較喜歡穩定的 Brixton 版本 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Brixton.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--spring boot 的 maven 插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
-
通過
@EnableEurekaServer注解啟動一個服務注冊中心。直接在SpringBoot啟動類加上注解@EnableEurekaServer即可。 -
application.properties配置:
server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
同時,簡要說明一下這些配置項:
eureka.client.registerWithEureka :表示是否將自己注冊到Eureka Server,默認為true。由於當前這個應用就是Eureka Server,故而設為false。
eureka.client.fetchRegistry :表示是否從Eureka Server獲取注冊信息,默認為true。因為這是一個單點的Eureka Server,不需要同步其他的Eureka Server節點的數據,故而設為false。
eureka.client.serviceUrl.defaultZone :設置與Eureka Server交互的地址,查詢服務和注冊服務都需要依賴這個地址。默認是http://localhost:8761/eureka ;多個地址可使用 , 分隔。
- 啟動工程,訪問 http://localhost:8761/ 。
如圖所示:

Eureka Client
- 創建一個 Spring Boot 項目。基本上與上一個工程無異,pom.xml需要修改了一個依賴。
<!-- eureka-服務 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
-
通過
@EnableDiscoveryClient注解啟動一個服務注冊中心。直接在SpringBoot啟動類加上注解@EnableDiscoveryClient即可。同時,Eureka Client 提供的服務與一般 Spring Boot 項目是一樣的。 -
application.properties配置:
# eureka client 配置 spring.application.name=service0 server.port=1111 eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
- 啟動兩個工程,並訪問 Eureka Server 中心 http://localhost:8761/ 。
如圖所示: 
