SpringCloud學習3-專案Demo
阿新 • • 發佈:2020-08-04
初始SpringCloud
微服務是一種架構方式,最終肯定需要技術架構去實施。
微服務的實現方式很多,但是最火的莫過於Spring Cloud了。為什麼?
- 後臺硬:作為Spring家族的一員,有整個Spring全家桶靠山,背景十分強大。
- 技術強:Spring作為Java領域的前輩,可以說是功力深厚。有強力的技術團隊支撐,一般人還真比不了
- 群眾基礎好:可以說大多數程式設計師的成長都伴隨著Spring框架,試問:現在有幾家公司開發不用Spring?SpringCloud與Spring的各個框架無縫整合,對大家來說一切都是熟悉的配方,熟悉的味道。
- 使用方便:相信大家都體會到了SpringBoot給我們開發帶來的便利,而SpringCloud完全支援SpringBoot的開發,用很少的配置就能完成微服務框架的搭建
簡介
SpringCloud是Spring旗下的專案之一,官網地址:http://projects.spring.io/spring-cloud/
Spring最擅長的就是整合,把世界上最好的框架拿過來,整合到自己的專案中。
SpringCloud也是一樣,它將現在非常流行的一些技術整合到一起,實現了諸如:配置管理,服務發現,智慧路由,負載均衡,熔斷器,控制匯流排,叢集狀態等等功能。其主要涉及的元件包括:
netflix
- Eureka:註冊中心
- Zuul:服務閘道器
- Ribbon:負載均衡
- Feign:服務呼叫
- Hystrix:熔斷器
以上只是其中一部分,架構圖:
SpringCloud開發:
1.Maven建立父專案(pom)
pom檔案匯入依賴:
1.依賴 springboot 版本是 2.0.3
2.springcloud 用的版本是 Finchley
1 <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"> 2 <modelVersion>4.0.0</modelVersion> 3View Code<groupId>cn.how2j.springcloud</groupId> 4 <artifactId>springcloud</artifactId> 5 <version>0.0.1-SNAPSHOT</version> 6 <name>springcloud</name> 7 <description>springcloud</description> 8 <packaging>pom</packaging> 9 10 <parent> 11 <groupId>org.springframework.boot</groupId> 12 <artifactId>spring-boot-starter-parent</artifactId> 13 <version>2.0.3.RELEASE</version> 14 <relativePath/> 15 </parent> 16 17 <properties> 18 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 19 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 20 <java.version>1.8</java.version> 21 <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> 22 </properties> 23 24 <dependencies> 25 <dependency> 26 <groupId>org.springframework.boot</groupId> 27 <artifactId>spring-boot-starter-test</artifactId> 28 <scope>test</scope> 29 </dependency> 30 <dependency> 31 <groupId>cn.hutool</groupId> 32 <artifactId>hutool-all</artifactId> 33 <version>4.3.1</version> 34 </dependency> 35 </dependencies> 36 37 <dependencyManagement> 38 <dependencies> 39 <dependency> 40 <groupId>org.springframework.cloud</groupId> 41 <artifactId>spring-cloud-dependencies</artifactId> 42 <version>${spring-cloud.version}</version> 43 <type>pom</type> 44 <scope>import</scope> 45 </dependency> 46 </dependencies> 47 </dependencyManagement> 48 49 </project>
2.建立子模組專案(jar)--eureka註冊中心
1.pom檔案匯入依賴:eureka-server
1 <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"> 2 <modelVersion>4.0.0</modelVersion> 3 <parent> 4 <groupId>cn.how2j.springcloud</groupId> 5 <artifactId>springcloud</artifactId> 6 <version>0.0.1-SNAPSHOT</version> 7 </parent> 8 <artifactId>eurekaServer</artifactId> 9 10 <dependencies> 11 <dependency> 12 <groupId>org.springframework.cloud</groupId> 13 <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> 14 </dependency> 15 </dependencies> 16 17 </project>
2.建立eureka-server啟動類:
1 @SpringBootApplication 2 @EnableEurekaServer // 宣告這個應用是一個EurekaServer 3 public class EurekaDemoApplication { 4 5 public static void main(String[] args) { 6 SpringApplication.run(EurekaDemoApplication.class, args); 7 } 8 }
3.編寫yml配置檔案:
eureka相關配置:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 自己作為伺服器,公佈出來的地址。 比如後續某個微服務要把自己註冊到 eureka server, 那麼就要使用這個地址
1 server: 2 port: 10086 # 埠 3 spring: 4 application: 5 name: eureka-server # 應用名稱,會在Eureka中顯示 6 eureka: 7 instance: 8 hostname: localhost #主機名稱 ip 9 client: 10 register-with-eureka: false # 是否註冊自己的資訊到EurekaServer,預設是true,因為它本身就是伺服器,所以就無需把自己註冊到伺服器了 11 fetch-registry: false # 是否拉取其它服務的資訊,預設是true,因為它本身就是伺服器,所以就無需把自己註冊到伺服器了 12 service-url: # EurekaServer的地址,現在是自己的地址,如果是叢集,需要加上其它Server的地址。 13 defaultZone: http://127.0.0.1:${server.port}/eureka 14 #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka 15 #######叢集配置(逗號相隔)######### 16 eureka: 17 server: 18 eviction-interval-timer-in-ms: 60000 #設定清理的間隔時間,而後這個時間使用的是毫秒單位(預設是60秒) 19 enable-self-preservation: false #設定為false表示關閉保護模式 20 client: 21 fetch-registry: false 22 register-with-eureka: false 23 service-url: 24 defaultZone: http://localhost:7001/eureka,http://localhost:7002/eureka,http://localhost:7003/eureka 25 # defaultZone: http://insurance:insurance@localhost:7001/eureka 26 # defaultZone: http://admin:enjoy@eureka1:7001/eureka,http://admin:enjoy@eureka2:7002/eureka,http://admin:enjoy@eureka3:7003/eureka 27 # instance: # eureak例項定義 28 # hostname: eureka1 # 定義 Eureka 例項所在的主機名稱
啟動服務,瀏覽器訪問:http://127.0.0.1:10086即可檢視eureka管理頁面。