1. 程式人生 > >SpringCloud微服務搭建(適合初學者)

SpringCloud微服務搭建(適合初學者)

影響 更換 面向 enable width pla b- system32 適合

Spring Cloud 微服務簡介

1. 單體應用優化

1.1 可使用SOA面向服務架構(將每個模塊分開,某個模塊出問題了,不會影響其他模塊)
1.2 如果某個服務於其他服務有調用關系,那麽就需用到ESB(企業服務總線)

2. 微服務架構

2.1 將單體應用切分為小服務單元

3. Spring Cloud

3.1 是一個工具箱

3.2 基於SpringBoot,封裝了Netflix的框架

3.3 將Netflix與Spring容器進行整合

4. Spring Cloud整合的Netflix框架

4.1 Eureka:基於REST服務的分布式中間件,主要用於服務管理

4.2 Hystrix:容錯框架,通過添加延遲閥值以及容錯的邏輯,來幫助我們控制分布式系統間組件的交互。

4.3 Feign:一個REST客戶端,目的是為了簡化WebService客戶端的開發

4.4 Ribbon:負載均衡框架 Zuul:為微服務集群提供過代理,過濾,路由等功能

5. 微服務的優點

5.1 易於開發和維護:由於微服務單個模塊就相當於一個項目,開發這個模塊我們就只需關心這個模塊的邏輯即可,代碼量和邏輯復雜度都會降低,從而易於開發和維護。

5.2 啟動較快:這是相對單個微服務來講的,相比於啟動單體架構的整個項目,啟動某個模塊的服務速度明顯是要快很多的。

5.3 局部修改容易部署:在開發中發現了一個問題,如果是單體架構的話,我們就需要重新發布並啟動整個項目,非常耗時間,但是微服務則不同,哪個模塊出現了bug我們只需要解決那個模塊的bug就可以了,解決完bug之後,我們只需要重啟這個模塊的服務即可,部署相對簡單,不必重啟整個項目從而大大節約時間。

5.4 技術棧不受限:比如訂單微服務和電影微服務原來都是用java寫的,現在我們想把電影微服務改成nodeJs技術,這是完全可以的,而且由於所關註的只是電影的邏輯而已,因此技術更換的成本也就會少很多。

上面簡單的介紹了一下什麽Spring Cloud微服務,那麽下面直接上代碼,為的就是能讓初學者快速上手,自己搭建起Spring Cloud微服務框架。

搭建Eureka程序

什麽是Eureka:Eureka是Netflix開發的服務發現組件,本身是一個基於REST的服務。Spring Cloud將它集成在其子項目spring-cloud-netflix中,以實現Spring Cloud的服務發現功能。

Eureka的配置可以說是非常簡單的,配置如下:

技術分享圖片
 1 <parent>
 2     <groupId>org.springframework.boot</groupId>
 3     <artifactId>spring-boot-starter-parent</artifactId>
 4     <version>2.0.3.RELEASE</version>
 5     <relativePath/>
 6 </parent>
 7 <dependencies>
 8     <dependency>
 9         <groupId>org.springframework.cloud</groupId>
10         <artifactId>spring-cloud-starter-eureka-server</artifactId>
11     </dependency>
12 </dependencies>
pom.xml 技術分享圖片
 1 # 自定義端口號
 2 server.port=8761
 3 
 4 eureka.instance.hostname=127.0.0.1
 5 
 6 eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
 7 
 8 # 為false意味著自身僅作為服務器,不作為客戶端
 9 eureka.client.registerWithEureka=false
10 
11 # 為false意味著無需註冊自身
12 eureka.client.fetchRegistry=false
application.properties 技術分享圖片
1 @SpringBootApplication
2 @EnableEurekaServer
3 public class Application {
4 
5     public static void main(String[] args) {
6         new SpringApplicationBuilder(Application.class).web(true).run(args);
7     }
8 }
Application.java

技術分享圖片

啟動後,如果能夠正常訪問到這個頁面的朋友們,恭喜你們 成功了 !!!

想要做集群的話,也是很簡單的,只需在服務端改一下配置就可以了,廢話不多說,請繼續往下看:

需要修改系統文件:C:/Windows/System32/drivers/etc/hosts

增加映射:127.0.0.1 slave1 slave2(無論是slave1還是slave2,都會映射到127.0.0.1)(這個映射一定要加,否則映射時會出問題)

因加入了集群,那麽就需要對每個服務進行單獨啟動(這裏進行手動啟動服務)區別如下:

技術分享圖片
 1 @SpringBootApplication
 2 @EnableEurekaServer
 3 public class Application {
 4 
 5     public static void main(String[] args) {
 6         Scanner scan = new Scanner(System.in);// 需手動輸入:剛剛配置過映射的 slave1、slave2
 7         String pro = scan.nextLine();
 8         new SpringApplicationBuilder(Application.class).profiles(pro).run(args);
 9     }
10 }
Application.java

為了方便配置,在這裏將配置文件“application.properties”更改為“application.yml“,在這裏有一點需要註意的是:在application.yml配置中的書寫的規範,換行後 需加兩個空格(使用縮進的話不知道會不會出現問題,本人沒有親自嘗試過)

註:

兩個配置中間的橫杠:---(這裏的”-“,一定要是三個,多一個 少一個都不行,本人親自測試過)

name: spring-cloud-server(Eureka程序的項目名)

profiles: slave1(剛剛配置映射時的名稱)

技術分享圖片
 1 server:
 2   port: 8761
 3 spring:
 4   application:
 5     name: spring-cloud-server
 6   profiles: slave1
 7 eureka:
 8   client:
 9     serverUrl:
10       defaultZone: http://slave2:8762/eureka
11 ---
12 server:
13   port: 8762
14 spring:
15   application:
16     name: spring-cloud-server
17   profiles: slave2
18 eureka:
19   client:
20     serverUrl:
21       defaultZone: http://slave1:8761/eureka
application.yml

輸入”slave1“啟動後截圖:

技術分享圖片

輸入”slave2“啟動後截圖:

技術分享圖片

到這裏,Eureka集群配置就成功了!!!

因時間有限,至於服務提供者及服務調用者,本人會在以後的時間裏進行更新!!!

SpringCloud微服務搭建(適合初學者)