1. 程式人生 > >springcloud 配置中心與zuul反向代理

springcloud 配置中心與zuul反向代理

統一配置中心概述

如果微服務架構中沒有使用統一配置中心時,所存在的問題:

  • 配置檔案分散在各個專案裡,不方便維護

  • 配置內容安全與許可權,實際開發中,開發人員是不知道線上環境的配置的

  • 更新配置後,專案需要重啟


    在SpringCloud中我們使用config元件來作為統一配置中心:
    在這裡插入圖片描述
    廢話不多說,本小節我們來開發統一配置中心的server端:

    先在你的專案里加一個模組:
    在這裡插入圖片描述
    專案的pom.xml檔案配置的依賴如下:

<dependencies>
	<!-- 配置中心 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
</dependencies>

        增加一個Main方法 ConfigMain.java:

@SpringBootApplication
@EnableConfigServer // 啟用該應用為配置檔案伺服器:讀取遠端配置檔案,轉換為rest介面服務
public class ConfigMain {
    public static void main(String[] args) {
        new SpringApplicationBuilder(ConfigMain.class).web(true).run(args);
    }
}

增加 application.yml 資原始檔:

server:
  port: 8040
spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/wufewu/userservice  # 配置git倉庫的地址

在這裡插入圖片描述
在這裡插入圖片描述

執行Main方法,然後去瀏覽器上檢視資原始檔:
訪問網址:http://localhost:8040/userservice/dev
訪問網址:http://localhost:8040/userservice-dev.yml
在這裡插入圖片描述
微服務專案:


將微服務的application.yml

檔案內容放到git倉庫,並新增一個新的bootstrap.yml檔案
在這裡插入圖片描述
bootstrap.yml:

#  等價於:http://localhost:8040/userservice/dev
spring:
  application:
    # 資原始檔的字首
    name: userservice
  profiles:
    # 指在git倉庫配置的環境
    active: dev
  cloud:
    config:
      uri: http://localhost:8040

解釋:userservicedev是指:
在這裡插入圖片描述
pom.xml依賴:

 <dependency>
 <!--  -->
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

OK,然後照常執行。



zuul路由

Zuul簡介
     路由是微服務架構的不可或缺的一部分。例如:”/” 可能對映到你應用主頁,/api/users對映到使用者服務,/api/shop對映到購物服務。Zuul。Zuul是Netflix出品的一個基於JVM路由和服務端的負載均衡器 當一個UI應用想要代理呼叫一個或者多個後臺服務的時候,Sping cloud建立了一個嵌入的Zuul proxy很方便的開發一個簡單的案例。這個功能對於代理前端需要訪問的後端服務非常有用,避免了所有後端服務需要關心管理CORS和認證的問題.


建立一個zuul模組
在這裡插入圖片描述
在pom.xml檔案增加依賴:

<dependencies>
	<!-- 開啟zuul路由 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
</dependencies>

增加Main方法, ZuulMain.java:

@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy // 開啟zuul路由
public class ZuulMain {
    public static void main(String[] args) {
        SpringApplication.run(ZuulMain.class, args);
    }
}

增加application.yml檔案:

#介面一般是80埠
server:
  port: 80

#給登入微服務設定一個名字
spring:
  application:
    name: zuul

eureka:
  instance:
    prefer-ip-address: true
    hostname: localhost
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
    # 下面是你的註冊中心的網址
      defaultZone: http://localhost:8761/eureka/

然後去瀏覽器執行你原本的程式碼,路徑要改一下:
在這裡插入圖片描述
下面是我的註冊中心
在這裡插入圖片描述