1. 程式人生 > 實用技巧 >SpringCloud學習3-專案Demo

SpringCloud學習3-專案Demo

初始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>
 3
<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>
View Code

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管理頁面。