初學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/ 。
如圖所示: