關於SpringCloud微服務雲架構構建B2B2C電子商務平臺之-(

petterchx發表於2021-09-09


在微服務架構中,需要幾個基礎的服務治理元件,包括服務註冊與發現、服務消費、負載均衡、斷路器、智慧路由、配置管理等,由這幾個基礎元件相互協作,共同組建了一個簡單的微服務系統。一個簡答的微服務系統如下圖:

關於SpringCloud微服務雲架構構建B2B2C電子商務平臺之-(五)路由閘道器(zuul)

Azure (1).png 

注意:A服務和B服務是可以相互呼叫的,作圖的時候忘記了。並且配置服務也是註冊到服務註冊中心的。

在Spring Cloud微服務系統中,一種常見的負載均衡方式是,客戶端的請求首先經過負載均衡(zuul、Ngnix),再到達服務閘道器(zuul叢集),然後再到具體的服。,服務統一註冊到高可用的服務註冊中心叢集,服務的所有的配置檔案由配置服務管理(下一篇文章講述),配置服務的配置檔案放在git倉庫,方便開發人員隨時改配置。

一、Zuul簡介

Zuul的主要功能是路由轉發和過濾器。路由功能是微服務的一部分,比如/api/user轉發到到user服務,/api/shop轉發到到shop服務。zuul預設和Ribbon結合實現了負載均衡的功能。

zuul有以下功能:

Authentication

Insights

Stress Testing

Canary Testing

Dynamic Routing

Service Migration

Load Shedding

Security

Static Response handling

Active/Active traffic management

二、準備工作

繼續使用上一節的工程。在原有的工程上,建立一個新的工程。

三、建立service-zuul工程

其pom.xml檔案如下:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="" xmlns:xsi=""

    xsi:schemaLocation=" ">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.forezp</groupId>

    <artifactId>service-zuul</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <packaging>jar</packaging>

    <name>service-zuul</name>

    <description>Demo project for Spring Boot</description>

    <parent>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>1.5.2.RELEASE</version>

        <relativePath/> <!-- lookup parent from repository -->

    </parent>

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <java.version>1.8</java.version>

    </properties>

    <dependencies>

        <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-eureka</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-zuul</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-test</artifactId>

            <scope>test</scope>

        </dependency>

    </dependencies>

    <dependencyManagement>

        <dependencies>

            <dependency>

                <groupId>org.springframework.cloud</groupId>

                <artifactId>spring-cloud-dependencies</artifactId>

                <version>Dalston.RC1</version>

                <type>pom</type>

                <scope>import</scope>

            </dependency>

        </dependencies>

    </dependencyManagement>

    <build>

        <plugins>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

            </plugin>

        </plugins>

    </build>

    <repositories>

        <repository>

            <id>spring-milestones</id>

            <name>Spring Milestones</name>

            <url>

            <snapshots>

                <enabled>false</enabled>

            </snapshots>

        </repository>

    </repositories>

</project>

在其入口applicaton類加上註解@EnableZuulProxy,開啟zuul的功能:

@EnableZuulProxy

@EnableEurekaClient

@SpringBootApplication

public class ServiceZuulApplication {

    public static void main(String[] args) {

        SpringApplication.run(ServiceZuulApplication.class, args);

    }

}

加上配置檔案application.yml加上以下的配置程式碼:

eureka:

  client:

    serviceUrl:

      defaultZone:

server:

  port: 8769

spring:

  application:

    name: service-zuul

zuul:

  routes:

    api-a:

      path: /api-a/**

      serviceId: service-ribbon

    api-b:

      path: /api-b/**

      serviceId: service-feign

首先指定服務註冊中心的地址為,服務的埠為8769,服務名為service-zuul;以/api-a/ 開頭的請求都轉發給service-ribbon服務;以/api-b/開頭的請求都轉發給service-feign服務;

依次執行這五個工程;開啟瀏覽器訪問: ;瀏覽器顯示:

hi forezp,i am from port:8762

開啟瀏覽器訪問: ;瀏覽器顯示:

hi forezp,i am from port:8762

這說明zuul起到了路由的作用

架構程式碼如下:

關於SpringCloud微服務雲架構構建B2B2C電子商務平臺之-(五)路由閘道器(zuul)

©著作權歸作者所有:來自51CTO部落格作者sunnyday8903的原創作品,如需轉載,請註明出處,否則將追究法律責任


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4606/viewspace-2819494/,如需轉載,請註明出處,否則將追究法律責任。

相關文章